繁体   English   中英

在Android中创建ViewPager图片库

[英]Create a viewpager image gallery in android

我正在创建一个简单的viewpager图像库,有一个viewpager,并且每个页面都有一个可以缩放和平移图像的触摸图像视图。

我已成功在其上显示图像。 问题是,当我交换图片时,缩放级别会保留。 例如,当我放大第一页时,我尝试切换到第二页,然后返回到第一页,并且缩放级别未恢复为默认值。

private class CustomPagerAdapter extends PagerAdapter {

    Context mContext;
    LayoutInflater mLayoutInflater;

    public CustomPagerAdapter(Context context) {
        mContext = context;
        mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return show_list.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((LinearLayout) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View itemView = mLayoutInflater.inflate(R.layout.activity_zoom_item, container, false);

        final TouchImageView imageView = (TouchImageView) itemView.findViewById(R.id.img);

        if (show_list.get(position).contains("http://")) {
            ImageRequest ir = new ImageRequest(show_list.get(position),
                    new Response.Listener<Bitmap>() {
                        @Override
                        public void onResponse(Bitmap response) {
                            imageView.setImageBitmap(response);
                            imageView.resetZoom();
                        }
                    }, 0, 0, null, null);
            gs.addToRequestQueue(ir, "get_img");
        }

        container.addView(itemView);
        return itemView;
    }



    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((LinearLayout) object);
    }
}

触摸图像视图本身具有重置缩放级别的功能,唯一的问题是如何获取“页面更改时”状态并获取该页面的视图?

谢谢

pager.setOnPageChangeListener(new OnPageChangeListener(){

                @Override
                public void onPageScrollStateChanged(int arg0) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onPageSelected(int arg0) {
                    // TODO Auto-generated method stub
                    View rootview = pager.findViewWithTag(pager.getCurrentItem());
                    TouchImageView imageView = (TouchImageView) rootview.findViewById(R.id.img);
                    imageView.resetZoom();
                }

            });

private class CustomPagerAdapter extends PagerAdapter {

    Context mContext;
    LayoutInflater mLayoutInflater;

    public CustomPagerAdapter(Context context) {
        mContext = context;
        mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return show_list.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((LinearLayout) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View itemView = mLayoutInflater.inflate(R.layout.activity_zoom_item, container, false);

        final TouchImageView imageView = (TouchImageView) itemView.findViewById(R.id.img);

        if (show_list.get(position).contains("http://")) {
            ImageRequest ir = new ImageRequest(show_list.get(position),
                    new Response.Listener<Bitmap>() {
                        @Override
                        public void onResponse(Bitmap response) {
                            imageView.setImageBitmap(response);
                        }
                    }, 0, 0, null, null);
            gs.addToRequestQueue(ir, "get_img");
        }

        itemView.setTag(position);
        container.addView(itemView);
        return itemView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((LinearLayout) object);
    }
}

只是注意到需要使用set标签在onPageSelected上获取视图,感谢ρяσsρєяK的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM