Android - 按下并释放时更改ImageButton的图像

时间:2017-01-07 18:39:51

标签: android button onclick pressed

我想为按钮设置image1,但是当按下它时 - 将其更改为image2。释放后,该按钮应该再次成为image1。我尝试在onClick()方法中这样做:

  button.setImageResource(R.drawable.image1);
       if(button.isPressed())
            button.setImageResource(R.drawable.image2);

但是在第一次按下按钮的图像后更改为图像2并保持这样。
你能帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

我认为这就是你想要的:

MyCustomTouchListener myCustomTouchListener = new MyCustomTouchListener();
button.setOnTouchListener(myCustomTouchListener);

现在是MyCustomTouchListener:

class MyCustomTouchListener implement OnTouchListener {
    public boolean onTouch(View v, MotionEvent event)
    {
        switch(event.getAction()){
            case MotionEvent.ACTION_DOWN:
            // touch down code
            button.setImageResource(R.drawable.image1);
            break;

            case MotionEvent.ACTION_MOVE:
            // touch move code
            break;

            case MotionEvent.ACTION_UP:
            // touch up code
            button.setImageResource(R.drawable.image1);
            break;
        }
        return true;
    }
}

答案 1 :(得分:2)

您可以使用state list drawable轻松完成此操作,并且您不需要额外的Java代码(除非您在运行时创建StateListDrawable,但即使这样做比实现更合适自定义触摸交互)。

答案 2 :(得分:0)

使用以下内容:

int dispImg = 0;
button.setImageResource(R.drawable.image1);
if (button.isPress()) {
    if (dispImg == 0) {
        button.setImageResource(R.drawable.image2);
        dispImg = 1;
    }
    else if (dispImg == 1) {
        button.setImageResource(R.drawable.image1);
        dispImg = 0;
    }
}

说明:dispImg会跟踪您正在显示的图像。当它为0时,表示第一张图像正在显示,所以我们应该切换到第二张。

希望我帮助过:D