如何进行按钮动画(使用ImageView)?

时间:2014-09-10 20:12:47

标签: java android eclipse

我正在使用Eclipse,java,android aps。

如何对ImageView执行推送效果?我正在使用GridViewsetOnItemClick。 我要做这样的事情:

iv1.setImageResource(R.drawable.button_push);
//here i want to use any SLEEP function or something (but I dont want freeze app effect)
iv1.setImageResource(R.drawable.button_normal);

你知道我怎么能这样做,或者你有更好的想法? (应该很简单)。感谢。

2 个答案:

答案 0 :(得分:0)

使用:

iv1.post(new Runnable{
    public void run(){
       iv1.setImageResource(R.drawable.button_push);
       //here i want to use any SLEEP function or something (but I dont want freeze app effect)
    }
});

答案 1 :(得分:0)

来自Input Events

的文件
  

onTouch()来自View.OnTouchListener。当用户执行限定为触摸事件的操作时调用此方法,包括按下,释放或屏幕上的任何移动手势(在项目的范围内)。

所以你可以使用onTouchListener

iv1.setOnTouchListener(new View.OnTouchListener() {        
@Override
public boolean onTouch(View v, MotionEvent event) {
    switch(event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            // PRESSED
            iv1.setImageResource(R.drawable.button_push);
            return true; // if you want to handle the touch event
        case MotionEvent.ACTION_UP:
            // RELEASED
            iv1.setImageResource(R.drawable.button_normal);
            return true; // if you want to handle the touch event
    }
    return false;
}
});

这是一种更好的方法

您可以使用drawable选择器更改按钮的显示状态,而不是使用OnTouchListener

res/drawable中创建一个选择器xml文件,例如“button_bg.xml”

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
  android:drawable="@drawable/button_push" /> <!-- pressed -->
<item android:state_focused="true"
   android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>

现在在您的活动中(可能在onCreate()内),您可以使用

iv1.setBackgroundResource(R.drawable.button_bg);

您可以在iv1.setOnClickListener()内执行任何操作来处理点击事件。您现在无需担心在代码中设置后台资源。当您按下或关注按钮时,它会自动更改