今天项目遇到需求 要求 实现图片预览效果 。  类似于扣扣空间那种,本人也到网上找过 代码量太大了   ,类多到处是注释看的有点恶心 。然后自己写了一个图片预览的效果,其实很简单的 。

首先我们来分析一下 实现原理 :点击 图片 显示 新的窗口  滑动显示下一张  并且页码也跟随的变化, 轻触退出(本文代码没有) ;首先点击图片实现跳转时应该 携带当前图片页码 呵呵 gridview 里所有图片 地址信息 ,然后另一个显示图片页面实现可以用viewpager  事先加载好 然后 设置显示当前页  至于页面显示 viewpager有个监听事件 用它跟换就行;不说废话了 上代码!

import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader;
import com.yusong.ycos.R;
import com.yusong.ycos.wei_er.BaseActivity;
import com.yusong.ycos.wei_er.config.AppConfig;
import com.yusong.ycos.wei_er.view.DoubleScaleImageView; import java.util.ArrayList;
import java.util.List; /**
* Created by pcg on 2016/8/3.
*/
public class ImagePreviewActivity extends BaseActivity implements ViewPager.OnPageChangeListener { private ViewPager viewPager;
private TextView textView;
private View view;
private List<View> viewList = new ArrayList<View>();
private int position; @Override
protected void onActivityCreate(Bundle savedInstanceState) {
setContentView(R.layout.picture_view_pager);
((ImageView) findViewById(R.id.picture_back)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();//这是做的返回键退出
}
});
position = getIntent().getIntExtra("position", 0);
viewPager = (ViewPager) findViewById(R.id.view_pager);
textView = (TextView) findViewById(R.id.text_);
//添加view 也就是
for (int i = 0; i < ExceptionDetailActivity.list.size(); i++) {
view = LayoutInflater.from(this).inflate(R.layout.item_picture, null);
DoubleScaleImageView imageView = (DoubleScaleImageView) view.findViewById(R.id.picture_);//这个是自定义的image 实现双击放大缩小的 网上一大堆 没这需求直接 imageview
String url = AppConfig.getInstance().getIpAddress() + ExceptionDetailActivity.list.get(i).get(ExceptionDetailActivity.IMAGE);
ImageLoader.getInstance().displayImage(url, imageView);//用的是图片缓存框架 要的私信我 576975755 扣扣 网上也一大堆
viewList.add(view);
}
viewPager.setAdapter(new MyAdapter());
viewPager.setCurrentItem(position);//设置显示第几个 也就点击的图片
viewPager.setOnPageChangeListener(this);//页面滑动监听 用来改变页码的
//ExceptionDetailActivity.list.size() 这里是存储图片的 url 集合 list<Map<String,String>>
        textView.setText((position + 1) + "/" + ExceptionDetailActivity.list.size());
} class MyAdapter extends PagerAdapter {
@Override
public int getCount() {
return viewList.size();
} @Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(viewList.get(position));
} @Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position), 0);
return viewList.get(position);
}
} @Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override
public void onPageSelected(int position) {
//换页码
textView.setText((position + 1) + "/" + ExceptionDetailActivity.list.size());
} @Override
public void onPageScrollStateChanged(int state) { }
} //xml 代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/part_transparent"> <android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" /> <TextView
android:id="@+id/text_"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="1/4"
android:textColor="@color/white"
android:textSize="16sp" /> <RelativeLayout
android:layout_width="fill_parent"
android:layout_height="40dp"> <ImageView
android:id="@+id/picture_back"
android:layout_width="50dp"
android:layout_height="match_parent"
android:padding="15px"
android:src="@drawable/back_click" /> <TextView
android:id="@+id/tv_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="异常图片"
android:textColor="#FFFFFF"
android:textSize="18sp" />
</RelativeLayout>
</RelativeLayout> // item xml 代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <RelativeLayout
android:id="@+id/relative"
android:layout_width="match_parent"
android:layout_height="match_parent"> <com.yusong.ycos.wei_er.view.DoubleScaleImageView
android:id="@+id/picture_"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true" />
</RelativeLayout> </LinearLayout> 这只是少量数图片用起来挺66的 不知道多张图片 会怎么样 (不喜勿喷)!

实现QQ空间图片预览效果的更多相关文章

  1. Android 手势检测实战 打造支持缩放平移的图片预览效果(下)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39480503,本文出自:[张鸿洋的博客] 上一篇已经带大家实现了自由的放大缩小图 ...

  2. jquery实现上传图片及图片大小验证、图片预览效果代码

    jquery实现上传图片及图片大小验证.图片预览效果代码 jquery实现上传图片及图片大小验证.图片预览效果代码 上传图片验证 */ function submit_upload_picture() ...

  3. 基于jquery实现的上传图片及图片预览效果代码

    <!DOCTYPE html> <html> <head> <title>HTML5上传图片预览</title> <meta http ...

  4. jquery实现简单鼠标经过图片预览效果

    html结构:<div class="prebtn"><img src=""/></div> css代码:#preview{ ...

  5. 使用Qt实现简单的图片预览效果 good

    http://www.cnblogs.com/appsucc/archive/2012/02/28/2371506.html Qt之实现工具箱界面程序 http://www.cnblogs.com/a ...

  6. ThinkPHP5与JQuery实现图片上传和预览效果

    内容正文 这篇文章主要为大家详细介绍了thinkphp上传图片功能,和jquery预览图片效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先上效果图: html和js代码如下: <!DO ...

  7. html页面选择图片上传时实现图片预览功能

    实现效果如下图所示 只需要将下面的html部分的代码放入你的代码即可 (注意引入jQuery文件和html头部的css样式,使用的是ajax提交) <!-- 需引入jQuery 引入样式文件 引 ...

  8. [RN] React Native 实现图片预览

    [RN] React Native 实现图片预览 效果预览: 代码如下: 'use strict'; import React, {Component} from 'react'; import {I ...

  9. JS兼容各个浏览器的本地图片上传即时预览效果

    JS兼容各个浏览器的本地图片上传即时预览效果 很早以前 在工作曾经碰到这么一个需求,当时也是纠结了很久,也是google了很久,没有碰到合适的demo,今天特意研究了下这方面的的问题,所以也就做了个简 ...

随机推荐

  1. bzoj1570

    购买的机票限制和数据范围很容易想到是网络流不难想到每个城市按时刻拆点,这也是一个经典模型由于时间不会太大,我们穷举时间,不断在残留网络上建图,跑最大流直至总流量为k即可 ; type node=rec ...

  2. 详谈easyui datagrid增删改查操作

    转自:http://blog.csdn.net/abauch_d/article/details/7734395 前几天我把easyui dadtagrid的增删改查的实现代码贴了出来,发现访问量达到 ...

  3. devpress 很好的中文论坛

    阿伟邀请您访问DXPER开发者论坛http://www.dxper.net/?fromuid=3701

  4. C# Sending data using GET or POST ZZ

    In this short article, I'll show you how to send data to a website from a C# application using GET o ...

  5. Java之Arrays.asList陷阱

    Java.Util.Arrays可以将数组转换为List,具体的定义如下: @SafeVarargs public static <T> List<T> asList(T... ...

  6. ARM学习笔记14——C语言和汇编相互套用

    这里,我们要准备两个文件,一个是汇编文件start.S,另一个是C文件led.c.汇编文件套用C文件中的开关灯函数,C文件套用汇编文件中延时函数. //start.S .global led_init ...

  7. win7常用键

    (1)xp和win7中都可以使用Alt+Tab中进行标签切换,win7中添加了Wins+Tab可以进行3D标签切换. (2)你知道怎样一次过调整显示器亮度.音量大小,打开无线网,还能够看到本本电池电量 ...

  8. 【转载】zookeeper 分布式锁 实现

      agapple 基于zookeeper的分布式lock实现 博客分类: opensource java distributed   背景 继续上一篇文章:http://agapple.iteye. ...

  9. opencv Installation in Linux and hello world

    http://opencv.org/quickstart.html Installation in Linux These steps have been tested for Ubuntu 10.0 ...

  10. POJ 3125 Printer Queue

    题目: Description The only printer in the computer science students' union is experiencing an extremel ...