View(视图)

一.事件

   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>
图片按钮

原文地址:https://www.cnblogs.com/arxk/p/5458854.html