1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
| import android.graphics.Bitmap; import android.os.Build; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import java.util.List; import uk.co.senab.photoview.PhotoView; import uk.co.senab.photoview.PhotoViewAttacher;
public class MultiImagePreviewActivity extends BaseActivity { private HackyViewPager viewPager; @Override public int getLayoutId() { return R.layout.activity_multi_img_preview; } @Override public void initView() { viewPager = (HackyViewPager) findViewById(R.id.view_pager); } @Override public void initData() { List<String> imgs = getIntent().getStringArrayListExtra("imgs"); int position = getIntent().getIntExtra("position", 0); if (imgs != null && imgs.size() > 0) { MultiImagePageAdapter adapter = new MultiImagePageAdapter(imgs); adapter.setOnViewTapListener(new PhotoViewAttacher.OnViewTapListener() { @Override public void onViewTap(View view, float x, float y) { if (Build.VERSION.SDK_INT >= 21) { onBackPressed(); } else { closeAct(); } } }); viewPager.setAdapter(adapter); viewPager.setCurrentItem(position); } } public static class MultiImagePageAdapter extends PagerAdapter { private PhotoViewAttacher.OnViewTapListener onViewTapListener; public void setOnViewTapListener(PhotoViewAttacher.OnViewTapListener onViewTapListener) { this.onViewTapListener = onViewTapListener; } private final DisplayImageOptions options; private List<String> imgs; public MultiImagePageAdapter(List<String> imgs) { options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.product_default) .showImageForEmptyUri(R.drawable.product_default) .showImageOnFail(R.drawable.product_default) .bitmapConfig(Bitmap.Config.ARGB_8888) .imageScaleType(ImageScaleType.EXACTLY) .cacheInMemory(true) .cacheOnDisk(true) .build(); this.imgs = imgs; } @Override public int getCount() { return imgs == null ? 0 : imgs.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { PhotoView photoView = new PhotoView(container.getContext()); container.addView(photoView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); photoView.setScaleType(ImageView.ScaleType.FIT_CENTER); photoView.setOnViewTapListener(onViewTapListener); HCApplication.getImageLoader().displayImage(imgs.get(position), photoView, options); return photoView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } @Override public void initEvent() { } @Override public void saveState(Bundle bundle) { } @Override public void restoreState(Bundle bundle) { } @Override public boolean isDefaultBackClose() { return true; } }
|