可实现功能效果说明:

  可实现多张图片点击放大,手指控制,左右滑动,多张图片点击任意位置定位显示任意位置图片;无动画,可自己加

效果图:

                           

核心代码:

viewpager:

public class PhotoViewPager extends ViewPager {
public PhotoViewPager(Context context) {
super(context);
} public PhotoViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
} @Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
try {
return super.onInterceptTouchEvent(ev);
} catch (IllegalArgumentException e) {
e.printStackTrace();
return false;
}
}
}

adapter:

public class MyImageAdapter extends PagerAdapter {
public static final String TAG = MyImageAdapter.class.getSimpleName();
private List<String> imageUrls;
private AppCompatActivity activity; public MyImageAdapter(List<String> imageUrls, AppCompatActivity activity) {
this.imageUrls = imageUrls;
this.activity = activity;
} @Override
public Object instantiateItem(ViewGroup container, int position) {
String url = imageUrls.get(position);
PhotoView photoView = new PhotoView(activity);
Picasso.with(activity)
.load(url)
.into(photoView);
container.addView(photoView);
photoView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "onClick: ");
activity.finish();
}
});
return photoView;
} @Override
public int getCount() {
return imageUrls != null ? imageUrls.size() : 0;
} @Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
} @Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}

photoViewActivity

public class PhotoViewActivity extends AppCompatActivity implements View.OnClickListener {

    public static final String TAG = PhotoViewActivity.class.getSimpleName();
private PhotoViewPager mViewPager;
private int currentPosition;
private MyImageAdapter adapter;
private TextView mTvImageCount;
private TextView mTvSaveImage;
private List<String> Urls; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo_view);
initView();
initData();
} private void initView() {
mViewPager = (PhotoViewPager) findViewById(R.id.view_pager_photo);
mTvImageCount = (TextView) findViewById(R.id.tv_image_count);
mTvSaveImage = (TextView) findViewById(R.id.tv_save_image_photo);
mTvSaveImage.setOnClickListener(this); } private void initData() { Intent intent = getIntent();
currentPosition = intent.getIntExtra("currentPosition", 0);
HomeQuestionListModel.DataBeanX DataBean = ((HomeQuestionListModel.DataBeanX) intent.getSerializableExtra("questionlistdataBean"));
Urls = DataBean.getAttach().getImage().getOri(); adapter = new MyImageAdapter(Urls, this);
mViewPager.setAdapter(adapter);
mViewPager.setCurrentItem(currentPosition, false);
mTvImageCount.setText(currentPosition+1 + "/" + Urls.size());
mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
currentPosition = position;
mTvImageCount.setText(currentPosition + 1 + "/" + Urls.size());
}
});
} @Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.tv_save_image_photo:
          //save image
break;
}
}
}

图片列表页面跳转:

private void statPhotoViewActivity(int position) {
Intent intent = new Intent(this, PhotoViewActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("dataBean", mData);
intent.putExtras(bundle);
intent.putExtra("currentPosition", position);
startActivity(intent);
}

TitleLayout——一个Android轻松实现通用、标准、支持沉浸式状态栏的标题栏库

最新文章

  1. UIView的layoutSubviews和drawRect方法何时调用
  2. asp.net 自定义控件 嵌入资源文件 备忘
  3. js对汉字首字母排序
  4. ubuntu 14.04 难用的vi
  5. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
  6. Thinkphp框架----微信公众测试号开发
  7. Hadoop概念学习系列之分布式文件系统(三十)
  8. new Date() iso不支持兼容性问题
  9. mkfs 的使用
  10. 【单调队列】Vijos P1771 瑞士轮 (NOIP2011普及组第三题)
  11. Linq 语法举例
  12. linux命令学习01-mkdir
  13. 引用 移植Linux到s3c2410上
  14. git gui提交无法获知你的身份 20
  15. iOS 应用提交到iTunes Connect,显示&quot;正在处理&quot;后消失不见
  16. Struts2技术内幕 读书笔记一 框架的本质
  17. mybatis源码解析之Configuration加载(二)
  18. node.js版本管理
  19. 无可奈何的开始了jquery的“奇淫技巧”
  20. Java NIO中的缓冲区Buffer(二)创建/复制缓冲区

热门文章

  1. idea中springboot项目设置热部署
  2. skynet记录7:服务(c和lua)
  3. Xamarin.Android 报错问题
  4. oracle 数据库去重复数据
  5. UVa540
  6. ASCII,Unicode 和 UTF-8
  7. Win10配置ADB工具教程
  8. Idea增加Idiff merger工具
  9. 获取父窗口的xxx节点的方法
  10. Appium+Python自动化 4 -appium元素定位