android viewflipper 解决屏幕翻转后图片显示为点击进入图片

相信好多好多同学都会遇到我这个问题,先从原理上来讲吧,屏幕翻转时系统会自动执行当前Activity的OnCreate方法,就相当于重新刷新了一下这个Activity,而一般点击进入时我们都会传入一个图片的ID,作为第一张显示的图片,而此ID的获得一般都放在OnCreate方法中,那么屏幕翻转后当然只能显示第几进入的图片了(在构造函数中获取ID也许是个不错的方法,没试过,写着写着突然想到的,不知道行不行的通)。
        面对此问题有个很简单的方法,在AndroidManifest.xml文件中设置对应Activity的属性android:configChanges="orientation|keyboardHidden",这样当屏幕翻转的时候就不会再次调用OnCreate方法,只会调用onConfigurationChanged方法,但是一般图片浏览如果不重新获取屏幕宽和高的话,图片显示肯定不会在屏幕正中的,所以我们将会面临一个问题,还必须在onConfigurationChanged方法中重新初始化一下,调整好图片位置。但是,如此一来代码量就真的太大了,而且还有重复量(比如重新获取屏幕的宽和高)。
        不过不要担心,肯定有解决办法,现在问题主要是屏幕翻转后ID的获取出了问题,我们只要保证获取的ID为当前浏览图片的ID不就OK了,我的办法是在FlipperActivity中设置一个静态变量public static int positionstatic,用它来记录当前位置,在LoadBitmap是positionstatic = position,实时记录当前图片浏览位置,当然这还不够,还需要在FlipperActivity之前的Activity(一般都是gridview)中设置一个判断变量public static boolean fixedposition = false;在每次点击图片进入Flipper时需要设置fixedposition 为false,然后在Flipper的OnCreate方法中判断下

[代码]java代码:

if(CloudGridView.fixedposition == true){
         System.out.println("已经加载过了,只需要加载positionstatic");
         position = positionstatic;
        }
最后在LoadBitmap中设置

[代码]java代码:

positionstatic = position;//设置静态变量供线程判别用户是否浏览当前图片调用
		CloudGridView.fixedposition = true;//设置状态为已点击进入

大功告成,每次翻转后都可以是当前图片了,各位要给好评呐。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值