实现的功能:在ImageView中动态(每隔0.1秒)展示assets下图片,所有图片播放完毕后再重新开始播放。
实现思路:
1)通过AssetManager获取assets下资源,使用BitmapFactory将图片资源输入流转换为Bitmap对象,然后将Bitmap对象设置到ImageView组件中。
关键技术点:AssetManager应用、Bitmap对象回收技术、Handler应用、多线程及线程的终止等。
第1步:新建一个工程,命名为DisplayImagesDemo,Activity命名为DisplayImagesActivity。
第2步:往assets下拷贝几张测试用图片,然后修改main.xml文件,代码如下:
第3步:修改DisplayImagesActivity,代码如下:
备注1:
之所以如此处理是因为assets下除了图片资源还有images、sounds和webkit,打开onCreate下的displayAssets()方法,可以看到输出日志。
备注2:
如果系统频繁地去解析、创建Bitmap对象,可能由于前面创建的Bitmap所占用的内存还没有回收(手机系统本身的内容就比较小),而导致程序运行时引发OutOfMemory错误。
事实上,如果将备注2回收Bitmap对象的语句注释掉,图片动态展示若干张(视具体情况而定,我在模拟器里运行只展示了4张就挂掉了),错误日志为:
INFO/ActivityManager(73): Low Memory: No more background processes.
第4步:运行程序,效果如下:
