
Android中Button点击事件
具体如何实现鼠标点击事件
·
在Android中的Button控件上,有三种鼠标点击事件,分别是鼠标点击事件,长按事件,触摸事件
接下来,看一下是如何进行的
方法一:
在layout中创建一个xml文件,使用什么布局方式,你都可以选,我用的是线性布局文件名为activity_mainlinearlayout。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮"
android:id="@+id/btn_one"
android:textColor="@color/blue"
android:background="@color/aqua"/>
</LinearLayout>
接下来是事件,首先要在main中的java文件夹中创建一个java文件,名称一般是MainAcitivty,具体请看代码:
package com.example.myapplication3;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.tabs.TabLayout;
public class MainActivity extends AppCompatActivity {
private static final String TAG="happy";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate((savedInstanceState));
// 这句话的意思是引用layout中的activity_main文件
setContentView(R.layout.activity_main);
View btn=findViewById(R.id.btn_one);
// 点击事件
btn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
// 进行打印
Log.e(TAG,"onClick");
}
});
// 长按事件
btn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Log.e(TAG,"OnLongClick");
return false;
}
});
// 触摸事件
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Log.e(TAG,"onTouch");
return false;
}
});
}
}
运行结果:
方法二:
可以直接在layout文件中的activity_main文件中写入onclick事件,看下图,也是可以实现点击事件
细节
1.关于MotionnEvent类
为了区分action事件,MotionEvent类中有ACTION_UP\ACTION_MOVE\ACTION_CANCEL三种。
可以在这里加getAction()方法,然后运行虚拟机,点击按钮,并长按拖动鼠标,你会发现,
当你点击鼠标时,会打印1(代表是Up)
当你按住鼠标不要离开按钮左右拖动时是2(代表是move)
当你松手时是1(代表是Cancel),然后才是onClick
2.关于onLongclick方法和onTouch方法
在这两个方法中,都有返回值,返回值的作用是判定是否继续执行下去,如果为true表示不要继续执行下去。
更多推荐
所有评论(0)