简体   繁体   English

如何设置更改 ImageView 图像资源的 onTouchListener?

[英]How to set up an onTouchListener that changes an ImageView image resource?

I want to setup up an onTouchListener that changes an ImageViews image resource on ACTION_UP and ACTION_DOWN.我想设置一个 onTouchListener 来更改 ACTION_UP 和 ACTION_DOWN 上的 ImageViews 图像资源。 Here is my code:这是我的代码:

    // Setup a basic upDownListener that registers UP and DOWN actions and changes the
    // view image resource accordingly
    View.OnTouchListener upDownListener = new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_DOWN) {
                // Button was pressed, change button background
                v.setImageResource(R.drawable.button_white_pressure);
                return true;
            } else if(event.getAction() == MotionEvent.ACTION_UP) {
                // Button was released, reset button background
                v.setImageResource(R.drawable.button_white);
                return true;
            }

            return false;
        }

    };

This code does not compile because View does not have the method setImageResource, only ImageView.这段代码没有编译,因为View没有setImageResource方法,只有ImageView。 But how do I tell the listener that an ImageView is being used?但是我如何告诉听众正在使用 ImageView 呢?

Cast the incoming View to an ImageView .将传入的View转换为ImageView

Sample code:示例代码:

@Override
public boolean onTouch(View v, MotionEvent event) {
    ImageView iv = (ImageView) v;

    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        iv.setImageResource(R.drawable.button_white_pressure);
        return true;
    } else if (event.getAction() == MotionEvent.ACTION_UP) {
        iv.setImageResource(R.drawable.button_white);
        return true;
    }

    return false;
}
View.OnTouchListener upDownListener = new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        ImageView v = (ImageView) v;
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
            // Button was pressed, change button background
            v.setImageResource(R.drawable.button_white_pressure);
            return true;
        } else if(event.getAction() == MotionEvent.ACTION_UP) {
            // Button was released, reset button background
            v.setImageResource(R.drawable.button_white);
            return true;
        }

        return false;
    }

};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM