Android ViewPager实现相册

/**
 * 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();
                }
            }
        });
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值