Android - 让ImageView"闪烁"

Flo*_*tig 8 android

我想让我的ImageView看起来像是闪烁.更确切地说,在按钮单击等事件上,我希望ImageView将其src更改1秒,然后再更改,然后再更改等等.然后它应该停止,并且ImageView应该具有与之前相同的src.我试图根据另一个问题做一些事情,但它不起作用......

private class MyHandler extends Handler {
    public ImageView imgView;

    @Override
    public void handleMessage(Message msg) {
        if (imgView != null) {
            switch (msg.what) {
            case 0:
                imgView.setImageResource(R.drawable.red_img);
                break;
            case 1:
                imgView.setImageResource(R.drawable.white_img);
                break;

            }
        }
        super.handleMessage(msg);
    }
}

(...)

MyHandler blinker = new MyHandler();
blinker.imgView = imgView;
for (int j = 0; j < 5; j++) {
    Message msg = new Message();
    if (j % 2 == 0) {
        msg.what = 0;
    } else {
        msg.what = 1;
    }

    blinker.sendMessageDelayed(msg, j * 300);
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点(如果可以做到的话).谢谢!

Evi*_*uck 23

或者你可以通过在xml中定义它来简单地使用AnimationDrawable:

<animation-list android:id="@+id/selected" android:oneshot="false">
    <item android:drawable="@drawable/state1" android:duration="1000" />
    <item android:drawable="@drawable/state2" android:duration="1000" />
</animation-list>
Run Code Online (Sandbox Code Playgroud)

并呼吁start()它:

ImageView img = (ImageView)findViewById(R.id.spinning_wheel_image);
img.setImageResource(R.drawable.my_blinking_drawable);
AnimationDrawable frameAnimation = (AnimationDrawable) img.getDrawable();
frameAnimation.start();
Run Code Online (Sandbox Code Playgroud)