Android中要实现猫咪眼睛一眨一眨的效果,可能首先会想到使用GIF图片,不考虑内存消耗的话你可以选择这个。
今天,跟大家介绍另一种图片加载,方便实用:layerdrawable。
它怎么使用?
在你的drawable文件夹下创建名为layer_cat.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/one"
android:drawable="@drawable/icon_changguibaoyang"
/>
<item
android:id="@+id/two"
android:drawable="@drawable/icon_chuyiweiqingxi"
/>
</layer-list>
引用两张猫眼睛睁开与闭眼的图片
下面的工作就是将layer_cat.xml,作为图片放到我们的ImageView控件里,如下:跟引用其他图片一样
<ImageView
android:id="@+id/iv_cat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/layer_cat" />
OK,现在我们通过代码来实现眼睛一闪一闪的效果:
private ImageView iv_cat;
private Drawable one, two;
private LayerDrawable layerDrawable;
private boolean flag = true;
private int count = 0;
声明控件与属性
初始化及实现方法:
iv_cat = (ImageView) findViewById(R.id.iv_cat);
layerDrawable = (LayerDrawable) iv_cat.getDrawable();
one = layerDrawable.findDrawableByLayerId(R.id.one);
two = layerDrawable.findDrawableByLayerId(R.id.two);
Runnable runnable = new Runnable() {
@Override
public void run() {
if (count < 15) {//控制闪动的次数(方法的实现)
count++;
one.setAlpha(0x0);
if (flag) {
flag = false;
one.setAlpha(0x0);
two.setAlpha(0xff);
} else {
flag = true;
one.setAlpha(0xff);
two.setAlpha(0x0);
}
handler.postDelayed(this, 1000);//启动线程,1秒一次。
} else {
handler.removeCallbacks(this);//关闭线程(一订要关闭),除非你手机好。
}
}
};
handler.postDelayed(runnable, 1000);//启动线程,1秒一次。
OK,跑起来就可以了。
//------end--------