Android 如何通过onTouchListener区分动作和实际点击?

Android 如何通过onTouchListener区分动作和实际点击?,android,ontouchlistener,Android,Ontouchlistener,我有一个带有图标的ImageView。我希望能够: 1。在悬停状态下更改图标(意思是-在动作向下时更改为图标2,在动作向上时更改为图标1) 2。触发onClick函数(意思是-在单击ImageView时调用另一个函数) 这就是我的onTouch现在的样子: @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.

我有一个带有图标的
ImageView
。我希望能够:

1。在悬停状态下更改图标(意思是-在动作向下时更改为图标2,在动作向上时更改为图标1)
2。触发onClick函数(意思是-在单击
ImageView
时调用另一个函数)

这就是我的
onTouch
现在的样子:

@Override
public boolean onTouch(View v, MotionEvent event) {

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            // CHANGE TO IMAGE #2
            break;

        case MotionEvent.ACTION_UP:
            // CHANGE TO IMAGE #1
            break;
    }

    return true;
}

问题是-我不知道用户何时按下my
ImageView
并在按下时离开其区域。我希望我解释得很好。我的意思是,ACTION\u UP并不总是意味着用户打算单击视图。我如何才能确定何时单击了
ImageView
,而不只是悬停(并且仍然能够在悬停时更改图标)?

如果使用选择器将更好。你可以阅读更多关于。互联网上有很多例子说明它是如何使用的。

如果您使用选择器将更好。你可以阅读更多关于。互联网上有很多例子说明它是如何使用的。

使用
选择器可绘制的
类似的东西

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- default -->
    <item android:drawable="@drawable/btn_bg" android:state_focused="false" android:state_pressed="false" />

    <!-- button focused -->
    <item android:drawable="@drawable/btn_bg_focus_new" android:state_focused="true" android:state_pressed="false" />

    <!-- button pressed -->
    <item android:drawable="@drawable/btn_bg_focus_new" android:state_focused="false" android:state_pressed="true" />
</selector>

使用
选择器可绘制
类似的东西

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- default -->
    <item android:drawable="@drawable/btn_bg" android:state_focused="false" android:state_pressed="false" />

    <!-- button focused -->
    <item android:drawable="@drawable/btn_bg_focus_new" android:state_focused="true" android:state_pressed="false" />

    <!-- button pressed -->
    <item android:drawable="@drawable/btn_bg_focus_new" android:state_focused="false" android:state_pressed="true" />
</selector>


好吧,我想你是想image@Nowshad是的,很好。感谢您的评论如果您在处理onclick事件时遇到问题,请尝试执行setOnLongClickListener。检查您是否仍面临类似问题。我想您希望image@Nowshad是的,很好。感谢您的评论如果您在处理onclick事件时遇到问题,请尝试执行setOnLongClickListener。检查您是否仍面临类似问题。非常简单。非常感谢。这么简单。非常感谢。