开发工具与关键技术:Android Studio
撰写时间:2020年9月26日
Android点击事件四种实现方式:
1、结合layout文件声明方法 2、内部实现类 3、Activity实现OnClickLitener 4、匿名内部实现类
事件写法的思路: (1、根据控件ID去获取控件 (2、设置控件的事件 (3、在事件方法中处理事件
第一种事件写法:结合layout文件声明方法
先按钮给一个onClick属性, android:onClick="onClick" ;
xml代码如下:
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="100dp"
android:background="@drawable/button_style"
android:onClick="onClick"
android:text="按 钮"
android:textColor="@color/colorWhite"
android:textSize="22sp" />
结合layout文件声明方法:
import android.view.View;
import android.widget.Toast;
//点击按钮提示
public void onClick(View view) {
//参数,context,text,duration
//上下文,要提示的消息,提示显示的时长
Toast.makeText(ButtonActivity.this, "提示:你点击了按钮", Toast.LENGTH_SHORT).show();
}
Toast.LENGTH_LONG :
显示的时间较长,而Toast.LENGTH_SHORT :
显示的时间较短;
效果如下图所示:
第二种事件写法:内部实现类
先按钮给一个id,android:id="@+id/btn_button" ;
xml代码如下:
<Button
android:id="@+id/btn_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="100dp"
android:background="@drawable/button_style"
android:text="按 钮"
android:textColor="@color/colorWhite"
android:textSize="22sp" />
内部实现类:
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.Nullable;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置布局
setContentView(R.layout.activity_button);
//获取控件
Button button = findViewById(R.id.btn_button);
//② 创建内部实现类
ClickListener clickListener = new ClickListener();
//② 设置点击事件
button.setOnClickListener(clickListener);
}
//IDEA alt+enter
//② 第二种事件写法:内部实现类
class ClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
int id = v.getId();
switch (id){
case R.id.btn_button:
Toast.makeText(ButtonActivity.this,"提示:你点击了按钮,内部实现类",Toast.LENGTH_SHORT).show();
break;
}
}
}
第三种事件写法:Activity实现OnClickListener
先按钮给一个id,android:id="@+id/btn_button" ;
xml代码如下:
<Button
android:id="@+id/btn_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="100dp"
android:background="@drawable/button_style"
android:text="按 钮"
android:textColor="@color/colorWhite"
android:textSize="22sp" />
Activity实现OnClickListener:
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class ButtonActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置布局
setContentView(R.layout.activity_button);
//获取控件
Button button = findViewById(R.id.btn_button);
//③ 设置点击事件
button.setOnClickListener(this);
}
//③ Activity实现OnClickListener
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_button:
Toast.makeText(ButtonActivity.this,"提示:你点击了按钮,Activity实现OnClickListener",Toast.LENGTH_SHORT).show();
break;
}
}
}
在这里插入图片描述
第四种事件写法:匿名内部实现类
先按钮给一个id,android:id="@+id/btn_button" ;
xml代码如下:
<Button
android:id="@+id/btn_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="100dp"
android:background="@drawable/button_style"
android:text="按 钮"
android:textColor="@color/colorWhite"
android:textSize="22sp" />
匿名内部实现类:
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class ButtonActivity extends AppCompatActivity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置布局
setContentView(R.layout.activity_button);
//获取控件
Button button = findViewById(R.id.btn_button);
//④ 匿名内部实现类
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ButtonActivity.this, "提示:你点击了按钮,匿名内部实现类", Toast.LENGTH_SHORT).show();
}
});
}
}