Android ViewPager实现相册

来源:互联网 发布:阿里云200m怎么申请 编辑:程序博客网 时间:2024/04/28 02:47
/** * ViewPager的适配器 * Created by lezg on 2014/7/30. */public class ViewPagerAdapter extends PagerAdapter {    private Context mContext;    private SparseArray<ImageView> imageViews = new SparseArray<ImageView>();    private ExecutorService threadPools = Executors.newFixedThreadPool(3);    public ViewPagerAdapter(Context context) {        this.mContext = context;    }    @Override    public int getCount() {        return AppHelper.imagesId.length;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        ImageView imageView;        if (imageViews.get(position) != null) {            imageView = imageViews.get(position);        } else {            View view = LayoutInflater.from(mContext).inflate(R.layout.listview_item, container, false);            imageView = (ImageView) view.findViewById(R.id.image);            imageViews.put(position, imageView);            setImage(imageView, position);        }        container.addView(imageView);        return imageView;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        ImageView iv = (ImageView) object;        container.removeView(iv);    }    @Override    public boolean isViewFromObject(View view, Object obj) {        return view == obj;    }    private void setImage(final ImageView imageView, final int position) {        final Handler myHandler = new Handler() {            @Override            public void handleMessage(Message msg) {                Bitmap bp = (Bitmap) msg.obj;                imageView.setImageBitmap(bp);            }        };        threadPools.submit(new Runnable() {            @Override            public void run() {                int imageId = AppHelper.imagesId[position];                Bitmap bitmap = AppHelper.decodeSampleBitmapFromResource(mContext.getResources(), imageId, 205, 153);                Bitmap withReflectedBitmap = AppHelper.createReflectedImage(bitmap, false);                Message msg = new Message();                msg.obj = withReflectedBitmap;                msg.what = 1;                myHandler.sendMessage(msg);                if (bitmap != null) {                    bitmap.recycle();                }            }        });    }}

0 0