一、按钮响应事件的四种方式
整体布局
沿用登录界面,对登录按钮进行事件响应处理
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:shrinkColumns="1"
android:stretchColumns="2,3"
>
<!-- 第一行-->
<TableRow
android:id="@+id/tableRow0"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_1"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#F8F6F6"
android:src="@drawable/touxiang"
android:scaleType="fitXY"
/>
</TableRow>
<!-- 第二行-->
<TableRow
android:id="@+id/tableRow1"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView1"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="用户名:"
android:textSize="40px"
android:layout_column="1" />
<EditText
android:id="@+id/editText1"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:minWidth="100px"
android:textSize="40px"
android:hint="廖燕霞"
android:textColor="#E91E63"
android:maxLength="10"
android:lines="1"
android:selectAllOnFocus="true"
android:layout_column="2" />
<TextView
android:id="@+id/textView1_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" "
android:textSize="100px"
android:layout_column="3" />
</TableRow>
<!-- 第三行-->
<TableRow
android:id="@+id/tableRow2"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView2"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="密 码:"
android:textSize="40px"
android:layout_column="1" />
<EditText
android:id="@+id/editText2"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:minWidth="100px"
android:textSize="40px"
android:hint="请输入10位数字密码"
android:textColor="#E91E63"
android:maxLength="10"
android:lines="1"
android:digits="1234567890"
android:selectAllOnFocus="true"
android:layout_column="2" />
<TextView
android:id="@+id/textView1_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" "
android:textSize="100px"
android:layout_column="3" />
</TableRow>
<!-- 第四行-->
<TableRow
android:id="@+id/tableRow3"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/button1"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:text="注 册"
android:textSize="40px"
android:layout_column="1" />
<Button
android:id="@+id/button2"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:text="登 录"
android:textSize="40px"
android:layout_column="2"
android:onClick="click"/>
<TextView
android:id="@+id/textView1_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" "
android:textSize="100px"
android:layout_column="3" />
</TableRow>
<!-- 第四行-->
<TableRow
android:id="@+id/tableRow4"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv4"
android:layout_width="match_parent"
android:layout_height="48dp"
android:gravity="center"
android:text="@string/baidu"
android:textSize="50px" >
</TextView>
</TableRow>
</TableLayout>
1.通过布局文件中添加onClike事件重载处理
public class MainActivity extends AppCompatActivity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logindemo);
button=(Button)findViewById(R.id.button2);
}
//重载
public void ClickButton2(View view){
button.setText("(布局文件onclike)正在登陆中...");
}
}
效果
2.利用匿名内部类方式处理
public class MainActivity extends AppCompatActivity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logindemo);
button=(Button)findViewById(R.id.button2);
//匿名内部类
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
button.setText("(匿名内部类)正在登陆中...");
}
});
}
}
效果
3.利用外部类方式处理
public class MainActivity extends AppCompatActivity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logindemo);
button=(Button)findViewById(R.id.button2);
//关键
button.setOnClickListener(new MyListener());
}
//外部类
class MyListener implements View.OnClickListener {
@Override
public void onClick(View v) {
button.setText("(外部类)正在登陆中...");
}
}
}
效果
4.利用Lambda表达式处理
Lambda环境配置见:https://blog.csdn.net/qq_18625571/article/details/104466610
public class MainActivity extends AppCompatActivity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logindemo);
button=(Button)findViewById(R.id.button2);
//Lambda表达式
button.setOnClickListener(v->button.setText("(Lambda)正在登陆中..."));
}
}