Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中检测点击事件是否完成?_Android_Event Handling_Touch_Onclicklistener_Android Event - Fatal编程技术网

如何在android中检测点击事件是否完成?

如何在android中检测点击事件是否完成?,android,event-handling,touch,onclicklistener,android-event,Android,Event Handling,Touch,Onclicklistener,Android Event,我动态创建视图,并正常处理它们的单击事件,如下所示: myView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub v.setBackgroundColor(0xaaffffff);

我动态创建视图,并正常处理它们的单击事件,如下所示:

myView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                v.setBackgroundColor(0xaaffffff);


            }
        });
但此代码不处理onRelease事件,因此单击后视图仍保留白色背景

那么,当单击状态结束时,如何将背景设置为另一个值

提前谢谢

编辑:
OnTouchListener
做了完全相同的事情。我想我需要类似于
onReleaseListener

的东西,因为您需要使用
onTouchListener
=>

请参阅本手册,了解如何使用本手册

例如:

myView.setOnTouchListener(
        new View.OnTouchListener() {
        public boolean onTouch(View myView, MotionEvent event) {
            int action = event.getAction();
            if (action==MotionEvent.ACTION_MOVE)
            {
                myView.setBackgroundColor(Color.BLUE);
            }
            if (action==MotionEvent.ACTION_UP)
            {
                myView.setBackgroundColor(Color.RED);
            }
            if (action==MotionEvent.ACTION_DOWN)
            {
                myView.setBackgroundColor(Color.YELLOW);
            }
            // TODO Auto-generated method stub
            return true;
        }
    }    

为此,您需要使用
onTouchListener
=>

请参阅本手册,了解如何使用本手册

例如:

myView.setOnTouchListener(
        new View.OnTouchListener() {
        public boolean onTouch(View myView, MotionEvent event) {
            int action = event.getAction();
            if (action==MotionEvent.ACTION_MOVE)
            {
                myView.setBackgroundColor(Color.BLUE);
            }
            if (action==MotionEvent.ACTION_UP)
            {
                myView.setBackgroundColor(Color.RED);
            }
            if (action==MotionEvent.ACTION_DOWN)
            {
                myView.setBackgroundColor(Color.YELLOW);
            }
            // TODO Auto-generated method stub
            return true;
        }
    }    

Android有一个选择器。在drawable文件夹中的xml文件中定义,并将其用作背景:

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

    <item android:state_pressed="false" android:drawable="@drawable/YOURDRAWABLE" />           

    <item android:state_pressed="true" android:drawable="@drawable/YOURDRAWABLE_WHEN_CLICKED" />          

</selector>


请检查Android是否有此选择器。在drawable文件夹中的xml文件中定义,并将其用作背景:

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

    <item android:state_pressed="false" android:drawable="@drawable/YOURDRAWABLE" />           

    <item android:state_pressed="true" android:drawable="@drawable/YOURDRAWABLE_WHEN_CLICKED" />          

</selector>


检查状态列表是为了在状态更改时更新样式。看看这个。

状态列表用于状态更改时的样式更新。看看这个。

您需要设置onTouchListener(),而不是使用xml@A.S.是的,这是个好主意。但是我也想学习编程。你需要设置onTouchListener()而不是用xml@A.S.是的,这是个好主意。但是我也想学编程。谢谢你的帮助。我会投你一票。但正如我所说的,这不是我的答案。好的,然后使用onTouchListener处理不同的事件。谢谢谢谢你的帮助。我会投你一票。但正如我所说的,这不是我的答案。好的,然后使用onTouchListener处理不同的事件。谢谢哦,简单而美丽。谢谢:)我接受这个。但是有没有关于如何在过渡中做到这一点的想法?还有一个小问题,在向下+移动之后,动作不会启动。有什么解决方法吗?@mobilgelistiric我尝试在
onTouch
函数中返回
true
而不是
false
。见编辑后的答案。返回
true
表示您正在消费事件,因此您将获得后续事件。仍然没有成功。我问了一个不同的问题。现在接受你的回答。谢谢你的帮助!好的,谢谢。祝你好运。我建议您在消费活动时返回true。。。你离正确的事情不远了,简单而美丽。谢谢:)我接受这个。但是有没有关于如何在过渡中做到这一点的想法?还有一个小问题,在向下+移动之后,动作不会启动。有什么解决方法吗?@mobilgelistiric我尝试在
onTouch
函数中返回
true
而不是
false
。见编辑后的答案。返回
true
表示您正在消费事件,因此您将获得后续事件。仍然没有成功。我问了一个不同的问题。现在接受你的回答。谢谢你的帮助!好的,谢谢。祝你好运。我建议您在消费活动时返回true。。。你离做正确的事情不远了