Android的:如何ZoomOut单页中ViewPager如果用户在放大呢? [英] Android: How to ZoomOut a single page in ViewPager if user zoomed it in?

查看:162
本文介绍了Android的:如何ZoomOut单页中ViewPager如果用户在放大呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的ViewPager的WebView显示来自互联网的图像。使用的WebView,因为它的内置缩放控制。我想启用我的用户寻呼机放大图像,但是当他们刷卡到下一个形象,恢复在previous形象原变焦。
我试过几件事情,从只有一个给我我渴望的funcionality,但它不是一个足够好的解决方案,因为有一个通过网页swipeing时闪烁。

I'm using WebView in ViewPager to display images from internet. WebView is used because of it's built in zoom controls. I want to enable my users to zoom images in pager, but when they swipe to the next image, to restore original zoom on previous image. I tried few things, from which only one gives me the funcionality I desire, but it is not a good enough solution, because there is a blinking when swipeing through pages.

mPager.setOnPageChangeListener(new OnPageChangeListener(
            ) {

        @Override
        public void onPageSelected(int arg0) {
            currImg = arg0;
            //System.out.println("On page selected");
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub
            //System.out.println("On page scrolled");

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub
            if(arg0 == 2) {
                //mPager.getAdapter().
                mPager.getAdapter().notifyDataSetChanged();
                System.out.println("Notifying Data Set Changed " + mPager.getCurrentItem());
            }

        }
    });

在ViewPager适配器我已经overrided getItemPosition所以它会返回POSITON_NONE。
这不是一个很好的解决方案,因为网页刷新每刷卡并没有页面之间没有平稳过渡。任何建议都欢迎。

In ViewPager adapter I have overrided getItemPosition so it would return POSITON_NONE. This is not a good solution because pages are refreshed on every swipe and there is no smooth transition between pages. Any suggestions are welcome.

推荐答案

这已经证明是恢复页面初始缩放状态的最佳方式:

This has shown to be a best way to revert the page to initial zoom state:

    pager.setOnPageChangeListener(new OnPageChangeListener() {
        public void onPageScrollStateChanged(int arg0) {}
        public void onPageScrolled(int arg0, float arg1, int arg2) {}
        public void onPageSelected(int arg0) {
            System.out.println("onPageSelected -> arg0 = " + arg0);

            if (currPage != arg0) {
                mAdapter.notifyDataSetChanged();
                currPage = arg0;
            }
        }
    });

比,在你的适配器类重写getItemPosition方法是这样的:

Than, in your adapter class you override getItemPosition method like this:

@Override
public int getItemPosition(Object object) {
    if (((ExtendedWebView) object).getScale() != webScale) {
        return POSITION_NONE;
    }
    return POSITION_UNCHANGED;
}

这篇关于Android的:如何ZoomOut单页中ViewPager如果用户在放大呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆