Android按钮的响应点击事件
学习了按钮的响应点击事件,写一下总结,写的不好的希望大家能给出意见或建议。
这是layout xml文件 点击事件只需要获得Button的id或者onClick
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button1" //只需要看这行 1,2,3种方法看这个 android:layout_width="wrap_content" android:layout_height="wrap_content" //id我设置是button(b是小写的) android:layout_alignParentTop="true" //onclick我设置的是Button(B是大写的) android:layout_centerHorizontal="true" android:layout_marginTop="135dp" android:onClick="Button1" //只需要看这行 第四种方法看这个 android:text="Button1"/> <Button android:id="@+id/button2" // 只需要看这行 1,2,3,种方法看这个 android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button1" android:layout_alignStart="@+id/button1" android:layout_below="@+id/button1" android:layout_marginTop="116dp" android:onClick="Button2" //只需要看这行 第四种方法看这个 android:text="Button2"/> </RelativeLayout>
第一种写法:匿名内部 //觉得第四种最简单
需要获得Button的 android:id="@+id/button1" (b是小写的)
package com.example.administrator.click1; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt1_click = (Button) findViewById(R.id.button1); //android :id="@+id/button1" 用的时候只需要把button1改成Button的id bt1_click.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"按键一被点击了", Toast.LENGTH_SHORT).show(); } }); //与上一段用法一样 Button bt2_click = (Button) findViewById(R.id.button2); bt2_click.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"按键二被点击了", Toast.LENGTH_SHORT).show(); } }); } }
第二种写法:自定义事件监听类
个人觉得和第一种一样,只是把匿名内部的的方法用个类存放起来
package com.example.administrator.click1; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt1_click = (Button) findViewById(R.id.button1); Button bt2_click = (Button) findViewById(R.id.button2); bt1_click.setOnClickListener(new MyClickListener()); //与匿名差不多 只是把class new出去了 bt2_click.setOnClickListener(new MyClickListener()); } class MyClickListener implements View.OnClickListener { @Override public void onClick(View v) { //通过switch 判断是哪一个按键按下的 switch (v.getId()) { //个人觉得自定义单击事件监听,有很多Button的时候用 case R.id.button1: Toast.makeText(MainActivity.this, "按键一被点击了", Toast.LENGTH_SHORT).show(); break; case R.id.button2: Toast.makeText(MainActivity.this, "按键二被点击了", Toast.LENGTH_SHORT).show(); break; default: break;
} } } }
第三种写法:
用this替换
package com.example.administrator.click1; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt1_click = (Button) findViewById(R.id.button1); Button bt2_click = (Button) findViewById(R.id.button2); bt1_click.setOnClickListener(this); //与第二种差不多 bt2_click.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: Toast.makeText(this, "按键一被点击了", Toast.LENGTH_SHORT).show(); break; case R.id.button2: Toast.makeText(this, "按键二被点击了", Toast.LENGTH_SHORT).show(); break; default: break; } } }
感觉这三种方法属于一种方法
findViewById 找到button的id
然后用.setOnClickListener调用方法 第四种方法就与众不同第四种写法:
package com.example.administrator.click1; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //只需要把函数名字改成你设置的onclick的名字就可以了 //只需要把函数名字改成你设置的onclick的名字就可以了 //只需要把函数名字改成你设置的onclick的名字就可以了 //Button1(大写的B)是onclick的 public void Button1(View v) { Toast.makeText(this, "按键一被点击", Toast.LENGTH_SHORT).show(); } //Button2(大写的B)是onclick的 public void Button2(View v) { Toast.makeText(this, "按键二被点击", Toast.LENGTH_SHORT).show(); } }
第四种觉得最简单。
写的不好的希望大家能给出意见或建议。
时间: 2024-10-14 11:01:43