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>

图片按钮

时间: 2024-10-09 02:10:37

View(视图)的相关文章

Android 自定义View视图

创建全新的视图将满足我们独特的UI需求. 本文介绍在指南针开发中会用到的罗盘的界面UI,通过继承View类实现的自定义视图,以此来深刻了解自定义视图. 实现效果图: 源代码: 布局文件activity_main(其中CompassView继承View类): <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.

DNS主从服务,子域授权,view视图,日志系统,压力测试rsync配置

DNS主从服务,子域授权,view视图,日志系统,压力测试 DNS性能测试工具queryperfDNS查询过程: DNS主从建立: 环境: 主服务器:10.140.165.93 从服务器:10.140.165.169 关闭防火墙,关闭selinux. 主服务器建立: [[email protected] ~]# yum -y install bind-util bind #安装bind服务 [[email protected] ~]# vim /etc/named.conf #编辑主配置文件 o

Atitit.code&#160;base&#160;view&#160;视图的实现原理

Atitit.code base view 视图的实现原理 1. 视图的执行算法:1 2. 不可更新的视图:1 3. 关于视图的可插入性:insert2 4. 视图定义3 5. 调用3 1. 视图的执行算法: 存在两种执行算法: 1.  Merge:合并的执行方式,每当执行的时候,先将我们视图的sql语句与外部查询视图的sql语句,混合在一起,最终执行: 2.  Temptable:临时表模式,每当查询的时候,将视图所使用的select语句生成一个结果的临时表,再在当前的临时表内进行查询. 指的

linux下DNS主从复制,view视图,转发,子域授权

我们知道相同网段内各网络设备之间是基于mac通信,而跨网络的不同主机之间是基于IP地址通信.随着世界主机数量爆炸式的增长,对于记住数目众多IP和想访问未知对方IP的主机成为一个痛点.通过基于人们熟知的文字访问主机应运而生. DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析). DNS是一项

自定义View视图

自定义View视图文件查找逻辑 之前MVC5和之前的版本中,我们要想对View文件的路径进行控制的话,则必须要对IViewEngine接口的FindPartialView或FindView方法进行重写,所有的视图引擎都继承于该IViewEngine接口,比如默认的RazorViewEngine.但新版本MVC6中,对视图文件的路径方式却不太一样了,目前有两种方式,一种是通过RazorViewEngine,另外一种是通过新特性IViewLocationExpander接口. 通过RazorView

ASP.Net MVC View(视图)

View视图职责是向用户提供界面.负责根据提供的模型数据,生成准备提供给用户的格式界面. 支持多种视图引擎(Razor和ASPX视图引擎是官方默认给出的,其实还支持其它N种视图引擎,甚至你自己都可以写一套视图引擎) View和Action之间数据传递(前后台数据传递) 弱类型 ViewData[""] 动态型 ViewBag //dynamic 动态类型Model              后台:return View(data); //存入 ViewData.Model       

MVC中View视图调用Controllers里返回的值

在MVC中前台页面调用控制器里面的方法跟ASP中<% %>.<%= %>是有区别的,在MVC Razor引擎中,如果需要输出值,先声明一个变量去接收,然后用@输出就可以了. GetDictionaryNameByID()方法返回的是一个string类型的, 控制器的路径地址,这个地址在页面调用里面的方法会用到 前台View调用,注意:MVC里面显示输出得先声明一个变量去接收,然后在输出 最终显示效果如下图: MVC中View视图调用Controllers里返回的值

ThinkPHP框架视图详细介绍 View 视图--模板(九)

原文:ThinkPHP框架视图详细介绍 View 视图--模板(九) 视图也是ThinkPHP使用的核心部分: 一.模板的使用 a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].html(.tpl) -->更换模板文件的后缀名(修改配置文件) 'TMPL_TEMPLATE_SUFFIX'=>'.tpl',//更改模板文件后缀名,默认是html b.修改模板文件目录层次 Tpl/Index/index.ht

DNS的view视图功能

在一个庞大的网络中,由于网络的复杂性等原因造成的,我们访问某些互联网资源时,速度会非常慢,而这些资源的提供商,比如购物网站,他们为了让客户访问速度提升,于是会将多个业务服务器会放在不同的网络中,而我们期望访问到离我们最近的服务器,以达到最快的速度访问,这个时候我们的DNS服务器解析的功能就要能指向到不同网络中的对应的固定的服务器,这种功能的实现就需要用到DNS的view功能,这个时候DNS服务器起到的是分网的效果. DNS的View功能,需要在DNS服务配置文件中来定义,在视图中需要最先需要定义

解读ASP.NET 5 &amp; MVC6系列(16):自定义View视图文件查找逻辑

原文:解读ASP.NET 5 & MVC6系列(16):自定义View视图文件查找逻辑 之前MVC5和之前的版本中,我们要想对View文件的路径进行控制的话,则必须要对IViewEngine接口的FindPartialView或FindView方法进行重写,所有的视图引擎都继承于该IViewEngine接口,比如默认的RazorViewEngine.但新版本MVC6中,对视图文件的路径方式却不太一样了,目前有两种方式,一种是通过RazorViewEngine,另外一种是通过新特性IViewLoc