常用事件
- 点击事件
- 长按事件
- 触摸事件(包括滑动)
MainActivity.java
package com.pha.first;
import androidx.appcompat.app.AppCompatActivity;
import android.nfc.Tag;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private static final String tag = "测试按钮事件";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_one = findViewById(R.id.btn_one);
//点击事件
btn_one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e(tag, "onClick: " );
}
});
// 长按事件
btn_one.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Log.e(tag, "onLongClick: " );
return false;
}
});
// 触摸事件
btn_one.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Log.e(tag, "onTouch: "+motionEvent.getAction());
return false;
}
});
}
}
运行后,点击按钮,并按钮移动,继而松手。根据记录信息显示如下
涉及知识点
-
按钮触发事件的顺序:onTouch->onLongClick->onClick
-
Touch的event.GetAction值:0–接触;1–离开;2–滑动
-
获取空间id的关键词findViewById :例如 Button btn_one = findViewById(R.id.btn_one);
-
在onTouch和onLongClick中返回值:
默认时false,表示可以继续运行一下触发事件;
返回true,表示触发事件停止
onTcouch 返回值true,不运行 onLongClick 和onClick
onLongClick 返回值true,运行onTcouch(因为在onLongClick事件之前), 不运行 onClick -
onClick 的第二种写法
layout/activity_main.xml 添加属性 android:onClick=“TestClick”
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_one"
android:text="@string/btn_one"
android:textSize="30sp"
android:layout_width="200dp"
android:layout_height="200dp"
android:onClick="TestClick"
android:background="@drawable/btn_selector_press"
android:textColor="@color/btn_selector_color"
/>
</LinearLayout>
com.pha.frist/MainActivity.java添加方法TestClick(由于和setOnClickListener 是相同,setOnClickListener优先度高于android:onclick。想使用android:onclick的方法需要将setOnClickListener 注释或去掉)
public void TestClick(View view) {
Log.e(tag, "onClick: "+"TestClick" );
}