OnTouch ImageView框架动画设置默认图像

时间:2014-04-27 19:40:05

标签: android frame drawable ontouchlistener

我一直在努力寻找解决方案,但似乎没有人尝试过,或者说它太简单了,我找不到它。

无论如何,我正试图用ImageView来实现按下按钮。我想要的是,ImageView显示默认图像,如果按下(OnTouch)[具有MotionEvent.ACTION_DOWN块]则运行帧动画。当您释放触摸[具有MotionEvent.ACTION_UP块]时,它应该停止动画并返回默认图像。

注意:帧动画是连续重复的,不应将默认图像作为循环图像之一。 (触摸时不应显示按钮图像)

现在的问题是,我有动画工作,但根据Android文档,默认情况下会显示<animation-list>标签中的第一项。但是如果我将默认图像(按钮未触摸状态)添加为第一项,它将显示在循环中。此外,当我释放触摸时,我使用stop()的{​​{1}}方法,它停止当前帧(图像)的动画,我似乎无法找到任何方法停止并转到默认图像状态。

这是我的代码:

button_anim.xml

AnimationDrawable

MainActivity.java

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item android:drawable="@drawable/button1_press1" android:duration="200" />
<item android:drawable="@drawable/button1_press2" android:duration="200" />
<item android:drawable="@drawable/button1_press3" android:duration="200" />
</animation-list>

默认图片: - protected void onCreate(Bundle savedInstanceState) { button = (ImageView)findViewById(R.id.imageView1); button.setBackgroundResource(R.drawable.button_anim); buttonAnim = (AnimationDrawable)button.getBackground(); button.setOnTouchListener(buttonTest); } private OnTouchListener buttonTest = new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); if (action == MotionEvent.ACTION_DOWN) { buttonAnim.start(); // Log.d("Test", "Touch down"); } else if (action == MotionEvent.ACTION_UP) { buttonAnim.stop(); // Log.d("Test", "Touch Stop"); } return true; } };

2 个答案:

答案 0 :(得分:0)

        buttonAnim.stop();
        buttonAnim.reset();
        // Log.d("Test", "Touch Stop");

答案 1 :(得分:0)

AnimationDrawable mFrameAnimation = (AnimationDrawable)button.getBackground();
mFrameAnimation.stop(); 
mFrameAnimation.setVisible(true, true);