您的位置:首页 > 移动开发 > Android开发

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

2015-03-26 16:32 281 查看
相信好多好多同学都会遇到我这个问题,先从原理上来讲吧,屏幕翻转时系统会自动执行当前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;//设置状态为已点击进入


大功告成,每次翻转后都可以是当前图片了,各位要给好评呐。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐