1、背景介绍
这个好像没有太多需要解释的地方,就是我们在进行网络请求的时候会有一个加载图,这里我们常常使用很多张图片形成一个动画,等数据加载完毕之后就影藏或者销毁。
2、实现方式
提供一个最原始的实现方式,代码多一些,不过不难理解,直接贴出XML代码如下:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/loading_0" android:duration="100"/>
<item android:drawable="@drawable/loading_1" android:duration="100"/>
<item android:drawable="@drawable/loading_2" android:duration="100"/>
<item android:drawable="@drawable/loading_3" android:duration="100"/>
<item android:drawable="@drawable/loading_4" android:duration="100"/>
<item android:drawable="@drawable/loading_5" android:duration="100"/>
<item android:drawable="@drawable/loading_6" android:duration="100"/>
<item android:drawable="@drawable/loading_7" android:duration="100"/>
<item android:drawable="@drawable/loading_8" android:duration="100"/>
<item android:drawable="@drawable/loading_9" android:duration="100"/>
<item android:drawable="@drawable/loading_10" android:duration="100"/>
<item android:drawable="@drawable/loading_11" android:duration="100"/>
</animation-list>
实际上这里是使用了一个animation-list,使用了12张图片,形成一个动画的效果。
3、优化方式
在上面的那种方式中,虽然代码没什么问题,但是有个问题会比较糟糕,就是图片多了容易占内存,所以就会想着,能不能实现一张图片转圈,而不要使用多张图片转换呢?那么答案是可行的,这里提供一种方式如下:
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/loading_0"
android:pivotX="50%"
android:pivotY="50%"/>
4、总结
上面的代码读者最好是亲身测试,我发现这种优化方式,在有的机器上没问题,而部分机器好像并不能实现我们想要的效果,读者应该自己做一个测试。