AssetManager读取assets下多张图片资源输出到ImageView动画
16lz
2021-01-25
AssetManager读取assets下多张图片资源输出到ImageView动画
这里面有几个要点和环节需要注意:
1,AssetManager读取事先放置到assets目录下的原始图片资源文件,组装成Android的Bitmap数组。
文件结构如图:
2,把1中读取到的Bitmap数组每隔一个较小时间内(如25ms)不间断循环设置到ImageView里面,从而在视觉上形成一种动画效果。
代码:
package zhangphil.test;import android.content.res.AssetManager;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.widget.ImageView;import java.io.InputStream;import java.util.concurrent.TimeUnit;public class AnimationActivity extends AppCompatActivity { private boolean mStartLoadingAnimation = false; private ImageView mImageView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.animation_activity); mImageView = findViewById(R.id.image); mStartLoadingAnimation = true; loadingAnimation(); } private void loadingAnimation() { new Thread(new Runnable() { @Override public void run() { Bitmap[] bitmaps = getBimaps(); if (bitmaps == null || bitmaps.length == 0) { return; } int i = 0; while (mStartLoadingAnimation) { mImageView.setImageBitmap(bitmaps[i++ % bitmaps.length]); try { TimeUnit.MILLISECONDS.sleep(25); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } private Bitmap[] getBimaps() { final String parentPath = "loading"; Bitmap[] bitmaps = null; AssetManager am = getAssets(); try { String[] files = am.list(parentPath); bitmaps = new Bitmap[files.length]; for (int i = 0; i < files.length; i++) { InputStream is = am.open(parentPath + "/" + files[i]); bitmaps[i] = BitmapFactory.decodeStream(is); is.close(); } } catch (Exception e) { e.printStackTrace(); } return bitmaps; }}
更多相关文章
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- android 文件管理器的源码实现
- Android内存监测工具DDMS->Heap,内存分析工具->MAT
- Android平台基于Pull方式对XML文件解析及写入
- Android(安卓)使用【AIDL】调用外部服务
- Android之传感器系统(Gsensor) .