Android学习之基础知识五—Android常用的七大控件
一、TextView控件:在界面上显示一段文本信息
先看XML代码和执行效果:


代码分析:
1、android:id属性,给当前控件定义了一个唯一的标识符
2、android:layout_width和android:layout_height,指定控件的宽度和高度。所有控件均具有这两个属性,可选值有三种:match_parent、fill_parent、wrap_content。其中match_parent与fill_parent意义相同,更推荐使用match_parent,match_parent表示当前控件的大小与父布局的大小一样,也就是由父布局来决定当前控件的大小。wrap_content表示当前控件的大小能够正好包含住里面的内容,也就是由控件内容来决定当前控件的大小。所有上面的代码表示TextView控件的宽度与父布局的宽度一样宽,也就是手机的屏幕,高度正好包含住里面的内容就行。
3、android:gravity属性用来指定文字的对其方式,可选值有:top,bottom,left,right,center等等,可以使用 “|”来同时指定多个值,这里我们指定的center,效果等同于“center_vertical | center_horizontal”,表示文字在垂直和水平方向都居中对齐。
4、android:textSize属性,指定文字的大小,使用sp作为单位
5、android:textColor属性,指定文字的颜色。
二、Button控件:用于和用户进行交互的重要控件
Button控件很简单,直接看代码和效果:点击按钮,弹出一个信息:You Clicked the button!
第一步:在XML文件中新加一个Button控件(关于最后程序运行后字母全部变大写的问题请查看随笔中的学习问题汇总笔记https://www.cnblogs.com/hh8888-log/p/9854952.html)

第二步:在MainActivity活动中给Button控件添加监听事件

备注:如果不想使用匿名类的方式来注册监听事件,也可以通过使用实现接口的方法来注册监听

第三步:运行程序,点击按钮,弹出一个提示信息:You Clicked the button!

三、EditText控件:和Button控件一样,也是用于与用户交互的重要控件
EditText控件允许用户在控件里面输入和编辑内容,并可以在程序中对这些内容进行处理。比如在发短信、发微信、QQ聊天等等。下面我们先来看代码和效果:



代码分析:
1、android:hint属性,指定一段提示性文本,告诉用户在该处需要输入什么类型的内容,当用户输入内容时,该提示文本会自动消失。
2、android:maxLines属性,指定EditText的最大行数为两行
3、android:maxLength属性,指定EditText中输入内容的最大长度,从上面实例中最多只能输入20个长度的内容
拓展:
需求:通过点击按钮来获取EditText中输入的内容
实现:在MainActivity活动中修改按钮的监听事件。获取EditText控件中输入的内容,调用getText()方法,然后再调用toString()方法转换为字符串保存。

效果:点击按钮,弹出输入的信息。

四、ImageView控件:在界面上显示图片
在使用ImageView之前,需要提前把图片准备好,图片通常都放在以“drawable”开头的目录下。项目中有一个drawable目录,但是这个目录没有指定具体的分辨率,所以我们一般不使用它来放置图片。在res目录下,我们新建一个Directory,命名为drawable-xhdpi,在该目录下,我们放置两张图片,命名为img_1.jpg,img_2.jpg。
图片资源准备好以后,我们开始写代码,下面是代码和效果:
在ImageView控件中指定一张图片使用:android:src属性。为了图片能够完整的显示出来,我们将图片的宽度和高度都设置为“wrap_content”


拓展:
需求:通过点击按钮,切换图片
实现:修改MainActivity活动中的按钮监听事件,通过使用ImageView控件的setImageResource()方法来指定需要切换成哪个图片

效果:点击button按钮后,图片切换成了img_2.jpg

五、ProgressBar控件:在界面上显示一个进度条,表示程序正在加载一些数据
先看代码和效果:
第一步:添加ProgressBar控件

第二步:修改MainActivity活动中按钮的监听事件

第三步:运行程序,没有点击按钮之前,我们可以看到一个圆形的进度条在不停的转动,点击按钮,进度条消失,再点击按钮,进度条又重新出现

代码分析:
1、Android控件的可见性属性是通过android:visibility属性进行指定的,所以控件均具有这个属性。
可见性属性有三个可选值:visible、invisible、gone。
visible:控件可见,这是默认值
invisible:控件不可见,但是它仍然占据原来的位置和大小,可以理解为控件变为透明状态了
gone:控件不可见,也不占据屏幕的任何空间。
2、我们也可以通过代码来控制控件的控件属性,如上所示,在代码中我们使用ProgressBar控件的两个方法来操作可见性:
setVisibility()方法:设置可见性
getVisibility()方法:获取当前控件的可见性状态
在方法中我们传入对应的三个值:
View.VISIBLE:控件可见
View.INVISIBLE:不可见,但占据位置和大小
View.GONE:不可见,也不占据任何屏幕空间
拓展:
需求:将进度条设置为水平进度条,每点击一次按钮,进度条前进10
第一步:设置进度条样式,并给进度条设置最大值为100

第二步:在MainActivity活动中重新注册监听事件

效果展示:每点击一下按钮,进度条前进10

代码分析:
1、设置进度条的样式:style="?android:attr/....."
2、android:max属性是设置水平进度条的最大值
3、进度条状态操作通过ProgressBar控件的getProgress()方法和setProgress()方法:
getProgress():获取当前进度条状态
setProgress():设置当前进度条状态
六、AlertDialog控件:在当前界面弹出一个对话框
AlertDialog控件置顶于所以界面元素之上,能够屏蔽掉其他控件的交互能力。它一般用于提示一些非常重要的内容或者警告信息,eg:防止用户误删重要内容,在删除前弹出一个确认对话框。下面我们先看代码和效果:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText editText;
private ImageView imageView;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button)findViewById(R.id.first_button);
editText=(EditText)findViewById(R.id.edit_text);
imageView=(ImageView)findViewById(R.id.image_view);
progressBar=(ProgressBar)findViewById(R.id.progress_bar);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.first_button:
AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);
20 dialog.setTitle("This is Dialog");
21 dialog.setMessage("Something important.");
22 dialog.setCancelable(false);
23 dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
24 @Override
25 public void onClick(DialogInterface dialog, int which) {
26 Toast.makeText(MainActivity.this,"You Clicked the OK",Toast.LENGTH_SHORT).show();
27 }
28 });
29 dialog.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
30 @Override
31 public void onClick(DialogInterface dialog, int which) {
32 Toast.makeText(MainActivity.this,"You Clicked the CANCEL",Toast.LENGTH_SHORT).show();
33 }
34 });
35 dialog.show();
break;
default:
break;
}
}
}
效果:点击button按钮,弹出一个对话框,点击OK,弹出“You Clicked the OK”,点击CANCEL,弹出"You Clicked the CANCEL"

代码分析:
1、AlertDialog.Builder:创建一个AlertDialog实例
2、setTitle()方法:设置标题
3、setMessage()方法:设置内容
4、setCancelable()方法:设置可否用Back键关闭对话框
5、setPositiveButton()方法:设置对话框确定按钮的点击事件,该方法传入两个参数,一个是按钮名称,一个是点击按钮过后执行的操作。
6、setNegativeButton()方法:设置对话框取消按钮的点击事件,该方法也传入两个参数,一个是按钮名称,一个是点击按钮过后执行的操作。
7、show()方法:将对话框显示出来。
七、ProgressDialog控件:与AlertDialog控件类似
ProgressDialog控件与AlertDialog控件类似,它也是在界面上弹出一个对话框,但是在对话框中显示的是一个进度条,一般用于表示当前操作比较耗时,让用户耐心等待。ProgressDialog控件也有屏蔽其他控件的能力,ProgressDialog控件的用法与AlertDialog控件类似,下面是代码和效果:

效果:点击button按钮,弹出有进度条的对话框,点击对话框以外的其他地方或者点击Back键,对话框消失

代码分析:
与AlertDialog控件类似,也是先创建一个实例“new ProgressDialog()”,然后设置对话框的标题、内容、可否通过Back键取消等,最后通过show()方法将对话框显示出来。
注意事项:
如果在setCancelable()方法中传入的是false,表示ProgressDialog是不能通过Back键取消掉的,也不能通过点击对话框以外的地方取消,这时就一定要在代码中做好控制,当数据加载完毕后必须要调用ProgressDialog控件的“dismiss()“方法来关闭对话框,否则对话框就会一直存在。
Android学习之基础知识五—Android常用的七大控件的更多相关文章
- Android学习之基础知识五—ListView控件(最常用和最难用的控件)
ListView控件允许用户通过上下滑动来将屏幕外的数据拉到屏幕内,把屏幕内的数据拉到屏幕外. 一.ListView的简单用法第一步:先创建一个ListViewTest项目,在activity_mia ...
- Android学习之基础知识五—创建自定义控件
下面是控件和布局的继承关系: 从上面我们看到: 1.所有控件都是直接或间接继承View,所有的布局都是直接或间接继承ViewGroup 2.View是Android中最基本的UI组件,各种组件其实就是 ...
- Android学习之基础知识五—RecyclerView(滚动控件)
RecyclerView可以说是增强版的ListView,不仅具有ListVIew的效果,还弥补许多ListView的不足. 一.RecyclerView的基本用法 与百分比布局类似,Recycler ...
- Android学习之基础知识六—Android四种布局详解
一.Android基本布局 布局是一种可以放置多个控件的容器,它可以按照一定规律调整内部控件的位置,而且布局内部除了可以放置控件外,还可以放置布局,实现多层布局嵌套.布局和控件.布局和布局之间的关系如 ...
- Android学习之基础知识五—编写聊天界面
第一步:在app/build.grandle添加RecyclerView依赖库 第二步:在activity_main.xml文件中编写主界面:聊天.发送框.发送按钮三个部分 第三步:编写Message ...
- Android学习之基础知识八—Android广播机制
一.广播机制简介 Android提供了一套完整的API,允许应用程序自由的发送和接受广播,发送广播借助于我们之前学过的:Intent,而接收广播需要借助于广播接收器(Broadcast Receive ...
- Android学习之基础知识八—Android广播机制实践(实现强制下线功能)
强制下线功能算是比较常见的了,很多的应用程序都具备这个功能,比如你的QQ号在别处登录了,就会将你强制挤下线.实现强制下线功能的思路比较简单,只需要在界面上弹出一个对话框,让用户无法进行任何操作,必须要 ...
- Android学习之基础知识七—碎片的最佳实践
一.Android碎片(Fragment)的最佳实践——简易版新闻应用 第一步:新建FragmentBestPractice项目,在app/build.gradle当中添加:RecyclerView ...
- Android学习之基础知识十五 — 最佳UI体验(Material Design实战)
一.前言 长久以来,大多数人都认为Android系统的UI并不美观,至少没有iOS系统的美观.以至于很多IT公司在进行应用界面设计的时候,为了保证双平台的统一性,强制要求Android端的界面风格必须 ...
随机推荐
- HttpHandler与HttpModule介绍
前言:作为一个开发人员,我们看过很多的关于开发的书,但是都是教我们"知其然",并没有教我们"知其所以然",我们开发web项目的过程中,当我们输完URL敲下回车就 ...
- BZOJ4259: 残缺的字符串(FFT 字符串匹配)
题意 题目链接 Sol 知道FFT能做字符串匹配的话这就是个裸题了吧.. 考虑把B翻转过来,如果\(\sum_{k = 0}^M (B_{i - k} - A_k)^2 * B_{i-k}*A_k = ...
- 随机x到x之间的值
function rand(max, min){ return Math.floor(Math.random()*(max-min+1)+min) }
- Application.Current的使用
来源 http://www.cnblogs.com/symons/archive/2010/03/15/1686200.html Application.Current的使用 WPF程序对应一个App ...
- MYSQL获取当前年、季、月、周第一天、最后一天的日期/时间戳
因为做一些商场某个会员今年的消费分析,所以对sql中时间的获取进行了判断. 例如获取今年(即当前年的第一天到昨天0时之间)的消费总额. 如果需要时间戳转换,用UNIX_TIMESTAMP()函数. 一 ...
- retrofit框架接口调用时候报Throwing new exception
最近在开发的时候遇到了一个很坑的问题,在三星6.0手机上请求接口时候报了一个异常:Throwing new exception 'length=1658; index=3248' with unexp ...
- Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- (后端)Java新人入职——配置环境及安装开发工具(完全)
转自csdn:执笔记忆的空白 很多新人对于进入新公司,相关工具的安装和环境变量的设定很苦恼.又苦于没有完整的配置开发环境的资料,我这里写一篇操作步骤的案例, 至少让你能把开发工具安装起来,并实用起来, ...
- 将 Azure 文件共享用于 Windows VM
可将 Azure 文件共享用作一种从 VM 中存储和访问文件的方式. 例如,你可以存储一个要与所有 VM 共享的脚本或应用程序配置文件. 本主题将介绍如何创建和装载 Azure 文件共享,以及如何上传 ...
- 洗礼灵魂,修炼python(29)--装饰器(1)—>利用经典案例解析装饰器概念
前提必备 不急着进入正题,在前面函数作用域那一章介绍了闭包,全局变量局部变量,这里再看几个简单的闭包案例: 1):不带参数 注意: 1.这里的name属性是每个函数都有的,可以反馈函数名 2.temp ...