一.事件
1.概念
1>事件源
事件发起者,也就是视图组件。
2>事件
事件源产生的动作,并包含相关信息。
3>监听器
是一些关于事件处理的接口,负责拦截和处理事件信息,要实现相关的接口,把处理事件的业务逻辑写在回调方法里,要把监听器的实现类的实例和事件源进行关联。
4>回调方法
负责处理事件,由监听器监听到事件后自动调用。
2.实现方法
1>自动关联方式
2>匿名内部类
3>普通内部类
4>普通外部类
5>Activity实现类
1 package com.hanqi.testapp2; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.widget.Button; 7 import android.widget.TextView; 8 9 public class MainActivity extends AppCompatActivity implements View.OnClickListener { 10 11 TextView tv_1; 12 13 Button bt9; 14 Button bt4; 15 Button bt5; 16 Button bt6; 17 Button bt_add; 18 Button bt_jian; 19 Button btc; 20 Button bt_hun; 21 Button bt_bai; 22 Button bt_chu; 23 Button bt_cheng; 24 Button bt1; 25 Button bt2; 26 Button bt3; 27 Button bt0; 28 Button bt_dian; 29 Button bt_deng; 30 31 @Override 32 public void onClick(View v) { 33 34 //访问内部组件 35 } 36 37 @Override 38 protected void onCreate(Bundle savedInstanceState) { 39 super.onCreate(savedInstanceState); 40 setContentView(R.layout.activity_main); 41 42 tv_1=(TextView)findViewById(R.id.tv_1); 43 44 //事件源 45 bt9=(Button)findViewById(R.id.bt9); 46 bt4=(Button)findViewById(R.id.bt4); 47 bt5=(Button)findViewById(R.id.bt5); 48 bt6=(Button)findViewById(R.id.bt6); 49 bt_add=(Button)findViewById(R.id.bt_add); 50 bt_jian=(Button)findViewById(R.id.bt_jian); 51 btc=(Button)findViewById(R.id.btc); 52 bt_hun=(Button)findViewById(R.id.bt_hun); 53 bt_bai=(Button)findViewById(R.id.bt_bai); 54 bt_chu=(Button)findViewById(R.id.bt_chu); 55 bt_cheng=(Button)findViewById(R.id.bt_cheng); 56 bt1=(Button)findViewById(R.id.bt1); 57 bt2=(Button)findViewById(R.id.bt2); 58 bt3=(Button)findViewById(R.id.bt3); 59 bt0=(Button)findViewById(R.id.bt0); 60 bt_dian=(Button)findViewById(R.id.bt_dian); 61 bt_deng=(Button)findViewById(R.id.bt_deng); 62 63 64 65 //给bt9按钮添加事件监听器 实现方式:1.匿名内部类 不可以复用 66 bt9.setOnClickListener(new View.OnClickListener() { 67 @Override 68 public void onClick(View v) { 69 70 //处理事件的业务逻辑 71 tv_1.setText("9"); 72 73 } 74 }); 75 76 //外部的实现类 77 MyOnClick myOnClick=new MyOnClick(); 78 79 bt4.setOnClickListener(myOnClick); 80 81 //设置自身实例为关联监听器 82 bt4.setOnClickListener(this); 83 84 85 86 //2.普通内部类 可以复用 87 bt_OnClickListener bt_1=new bt_OnClickListener(); 88 89 btc.setOnClickListener(bt_1); 90 bt4.setOnClickListener(bt_1); 91 bt5.setOnClickListener(bt_1); 92 bt6.setOnClickListener(bt_1); 93 bt_jian.setOnClickListener(bt_1); 94 btc.setOnClickListener(bt_1); 95 bt_hun.setOnClickListener(bt_1); 96 bt_bai.setOnClickListener(bt_1); 97 bt_chu.setOnClickListener(bt_1); 98 bt_cheng.setOnClickListener(bt_1); 99 bt1.setOnClickListener(bt_1); 100 bt2.setOnClickListener(bt_1); 101 bt3.setOnClickListener(bt_1); 102 bt0.setOnClickListener(bt_1); 103 bt_dian.setOnClickListener(bt_1); 104 bt_deng.setOnClickListener(bt_1); 105 bt_add.setOnClickListener(bt_1); 106 } 107 108 //内部类实现OnClickListener接口 109 class bt_OnClickListener implements View.OnClickListener 110 { 111 @Override 112 //v 事件源 113 public void onClick(View v) { 114 115 //转成按钮 116 Button bt=(Button)v; 117 118 //取得按钮上的文字 119 String str=bt.getText().toString(); 120 121 //处理事件的业务逻辑 设置显示文字 122 tv_1.setText(str); 123 } 124 125 } 126 127 //3.关联方式 128 public void bt7_OnClick(View v) 129 { 130 tv_1.setText("7"); 131 } 132 133 public void bt8_OnClick(View v) 134 { 135 tv_1.setText("8"); 136 } 137 138 139 //重用 140 public void bt_OnClick(View v) 141 { 142 //设置显示内容 143 144 //转成按钮 145 Button bt=(Button)v; 146 147 //取得按钮上的文字 148 String str=bt.getText().toString(); 149 150 //处理事件的业务逻辑 设置显示文字 151 tv_1.setText(str); 152 153 154 } 155 156 157 158 }
二.按钮
1.单选按钮
1>格式:
<RadioGroup> //按钮组
<RadioButton/>//单选按钮
<RadioButton/>
</RadioGroup>
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:paddingBottom="@dimen/activity_vertical_margin" 7 android:paddingLeft="@dimen/activity_horizontal_margin" 8 android:paddingRight="@dimen/activity_horizontal_margin" 9 android:paddingTop="@dimen/activity_vertical_margin" 10 tools:context="com.hanqi.testapp2.TestActivity1" 11 android:orientation="vertical"> 12 13 <RadioGroup 14 android:layout_width="match_parent" 15 android:layout_height="wrap_content"> 16 <RadioButton 17 android:layout_width="wrap_content" 18 android:layout_height="wrap_content" 19 android:text="男"/> 20 21 <RadioButton 22 android:layout_width="wrap_content" 23 android:layout_height="wrap_content" 24 android:text="女"/> 25 </RadioGroup> 26 </LinearLayout>
2.图片按钮
1>关键词:ImageButton
2>src 图片按钮
3>按钮上不能添加文字
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:paddingBottom="@dimen/activity_vertical_margin" 7 android:paddingLeft="@dimen/activity_horizontal_margin" 8 android:paddingRight="@dimen/activity_horizontal_margin" 9 android:paddingTop="@dimen/activity_vertical_margin" 10 tools:context="com.hanqi.testapp2.TestActivity1" 11 android:orientation="vertical"> 12 13 <LinearLayout 14 android:layout_width="match_parent" 15 android:layout_height="wrap_content"> 16 <ImageButton 17 android:layout_width="wrap_content" 18 android:layout_height="wrap_content" 19 android:src="@drawable/anniu04"/> 20 21 <ImageButton 22 android:layout_width="wrap_content" 23 android:layout_height="wrap_content" 24 android:src="@drawable/anniu05"/> 25 26 <Button 27 android:layout_width="wrap_content" 28 android:layout_height="wrap_content" 29 android:background="@drawable/anniu04" 30 android:text="普通按钮"/> 31 </LinearLayout> 32 </LinearLayout>