ImageSwitcher 短暂白屏
2016-03-30 11:30
549 查看
ImageSwitcher 启动Activity时会有短暂的白屏。
原因:ImageSwitcher 设置了动画(淡入淡出动画),如果不设置动画就没有白屏问题。
比如如下代码片段:
原理:
当调用setImageResource()时, 该方法内部调用showNext() 方法,然后调用setDisplayedChild()方法,再调用showOnly(mWhichChild);
我们来看看showOnly 方法
所以需要将动画的设置放到最后,这样启动activity时立马会显示图片。
就是这么简单,衰!!!!!
原因:ImageSwitcher 设置了动画(淡入淡出动画),如果不设置动画就没有白屏问题。
比如如下代码片段:
is_fade = (ImageSwitcher) findViewById(R.id.is_fade); is_fade.setFactory(this); // 动画的顺序一定要放到最后 is_fade.setInAnimation(this, R.anim.fade_in); is_fade.setOutAnimation(this, R.anim.fade_out); is_fade.setImageResource(bgs[3]);
原理:
当调用setImageResource()时, 该方法内部调用showNext() 方法,然后调用setDisplayedChild()方法,再调用showOnly(mWhichChild);
我们来看看showOnly 方法
void showOnly(int childIndex, boolean animate) { final int count = getChildCount(); for (int i = 0; i < count; i++) { final View child = getChildAt(i); if (i == childIndex) { // 会先执行动画在显示ImageView,导致白屏 if (animate && mInAnimation != null) { child.startAnimation(mInAnimation); } child.setVisibility(View.VISIBLE); mFirstTime = false; } else { if (animate && mOutAnimation != null && child.getVisibility() == View.VISIBLE) { child.startAnimation(mOutAnimation); } else if (child.getAnimation() == mInAnimation) child.clearAnimation(); child.setVisibility(View.GONE); } } }
所以需要将动画的设置放到最后,这样启动activity时立马会显示图片。
就是这么简单,衰!!!!!
is_fade = (ImageSwitcher) findViewById(R.id.is_fade); is_fade.setFactory(this); is_fade.setImageResource(bgs[3]); // 动画的顺序一定要放到最后 is_fade.setInAnimation(this, R.anim.fade_in); is_fade.setOutAnimation(this, R.anim.fade_out);
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories