OnTouchListener返回值

3

我正在努力全面理解OnTouchListener,但我有一些疑问。

我有以下xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.pablo.MainActivity"
tools:ignore="MergeRootFrame" >

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />

</LinearLayout>

我已经在Java中实现了这段代码:

public class MainActivity extends Activity {

Button b;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    b = (Button)findViewById(R.id.button1);

    b.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {

            switch (arg1.getAction()) {
            case MotionEvent.ACTION_DOWN:
                Toast.makeText(getBaseContext(), "boton down",Toast.LENGTH_SHORT).show();
                break;
            case MotionEvent.ACTION_UP:
                Toast.makeText(getBaseContext(), "boton up",Toast.LENGTH_SHORT).show();
                break;
            }
            return false;
        }
    });

   }
 }

我阅读了一些资料发现,如果在ACTION_DOWN中返回false,则其他手势(MOVEUP)将不起作用。但是在这段代码中,屏幕上显示了“up”消息,但实际上它不应该出现。所以我不完全理解OnTouch事件中的返回值的含义。

有人可以帮助我吗?


1
https://dev59.com/DW865IYBdhLWcg3wkPWD - einschnaehkeee
哦,但如果你运行代码,你会看到“up”消息,这不应该发生...或者说没问题吗?这是我的问题。谢谢 - user2558672
ACTION_DOWN 表示你按下了按钮并且手指还在屏幕上,然后 ACTION_UP 表示你松开了按钮。当然,两个动作都会执行代码,因为你既按下又释放了。这就是为什么 Toast 会显示在屏幕上。如果你不想在 ACTION_UP 时显示 Toast,只需删除该行 :P。从此方法返回 true 将在按钮上显示一个动画,表示按钮已被按下。返回 false 不会改变按钮状态,但将执行在 return 指令之前编写的代码。祝您拥有愉快的一天! - sunlover3
1个回答

5
假设你的问题是"onTouch返回值的含义是什么?"如果你查看文档,你会看到: 如果监听器消耗了事件则返回True,否则返回False。请查看这里的文档。

好的,但是如果你运行上面的代码,你会看到“up”消息显示在屏幕上。这不应该发生... - user2558672

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接