android编程实现按钮事件

来源:互联网 发布:网络用语ac是什么意思 编辑:程序博客网 时间:2024/06/09 17:39

这几天多次使用按钮事件,在此总结几种常见的实现方法
在实验之前研读了以下博客
《Android按钮单击事件的四种常用写法总结》
《Button 点击事件onclick实现的四种方式》
《Button点击事件的三种实现方式》
《外部类监听事件的点击事件》

第一种,内部匿名类
这种按钮只能点击一次
控件属性:

<Button        android:id="@+id/b01"        android:layout_width="300dp"        android:layout_height="150dp"        android:layout_gravity="center"        android:text="@string/b01"        android:background="@color/colorGreen"        />

一个简单的按钮控件,id为b_01,位置位于屏幕中央,背景我自定义青绿色,文字内容为<string name="b01">内部匿名类</string>
实现:

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.setContentView(R.layout.test_activty);        Button button1 = (Button) findViewById(R.id.b01);       //从R中找到b01的资源        button1.setOnClickListener(new View.OnClickListener(){//监听参数为匿名类            @Override            public void onClick (View v){       Toast.makeText(MainActivity.this,"success",Toast.LENGTH_LONG).show();//点击按钮会有toast弹出说明事件发生            }        }        );    }}

效果:
这里写图片描述
第二种:内部类
控件属性:

<Button        android:id="@+id/b02"        android:layout_width="300dp"        android:layout_height="150dp"        android:layout_gravity="center"        android:text="@string/b02"        android:background="@color/colorRed"        />

与第一个按钮比,id改b02,颜色改为红色,文字内容<string name="b02">内部类</string>
实现:

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.setContentView(R.layout.test_activty);        Button button1 = (Button) findViewById(R.id.b02);        button1.setOnClickListener(new Buttonc());    }    private class Buttonc implements View.OnClickListener {        public void onClick(View v) {            Toast.makeText(MainActivity.this, "aaaa", Toast.LENGTH_LONG).show();        }    }}

效果:
这里写图片描述

6.15日补充
内部类可以用switch选择R.id来触发多个按钮不同事件
控件属性:略
实现:

    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity02);        Log.i("Activity02", "onCreate()");        Button button1=(Button)findViewById(R.id.button1);        Button button2=(Button)findViewById(R.id.button2);        button1.setOnClickListener(this);    }   @Override   public void onClick(View v){       switch (v.getId()){           case R.id.button1:               Intent intent=new Intent();               intent.setClassName("cn.itcast.activity","cn.itcast.activity.Activity01");               startActivity(intent);               break;           case R.id.button2:               Toast.makeText(this,"123",Toast.LENGTH_LONG);               break;       }   }

第三种:外部类
控件属性:

<Button        android:id="@+id/b03"        android:layout_width="300dp"        android:layout_height="70dp"        android:layout_gravity="center"        android:text="@string/b03"        android:background="@color/colorYellow"        />

改id改颜色
实现

 public  class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.setContentView(R.layout.test_activty);        Button button1 = (Button) findViewById(R.id.b03);        Buttonc bbuttonc=new Buttonc();        button1.setOnClickListener( new Buttonc()            {                public void onClick(View v) {                    Toast.makeText(MainActivity.this,"cccc",Toast.LENGTH_LONG).show();                }            }        );    }}  class Buttonc implements View.OnClickListener {    public void onClick(View v) {    }}

监听类写在mainactivty外面,且在定义里无法使用toast
效果
这里写图片描述
第四种:activty直接触发
控件:<Button
android:id="@+id/b04"
android:layout_width="300dp"
android:layout_height="70dp"
android:layout_gravity="center"
android:text="@string/b04"
android:background="@color/colorBlue"
/>

实现:

 public  class MainActivity extends AppCompatActivity implements View.OnClickListener{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.setContentView(R.layout.test_activty);        Button button1 = (Button) findViewById(R.id.b04);        button1.setOnClickListener(this);}               public void onClick(View v) {                    Toast.makeText(MainActivity.this,"终于写完了",Toast.LENGTH_LONG).show();              }    }

直接在oncreate外面写一个onclick,不经过任何类
效果:这里写图片描述

原创粉丝点击