一、UI的定义
Android提供了一系列UI,这些UI可以为我们的界面提供布局和控件,使我们的界面变得美观、合理
二、常见的UI控件

  • 2.1 TextView
    作用:主要用于在界面上显示一段文本信息
    TextView常见属性使用:
    <TextViewandroid:id="@+id/text_view"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="This is TextView"//显示文本信息android:gravity="center"//指定文字的对齐方式android:textSize="24sp"//指定文字的大小android:textColor="#00ff00"//指定文字的颜色/>
在Android的UI控件中,match_parent和fill_parent表示让当前控件的大小和父布局的大小一样;wrap_content表示让当前控件的大小能够刚好包含住里面的内容
  • 2.2 Button

    • 作用:表示在界面上显示一个按钮,常见的属性使用如下:
 <Buttonandroid:id="@+id/button_1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button 1"android:textAllCaps="false"//该属性表示禁止控件名称显示时自动转为大写,表示你的按钮名称大小写变化,true为默认,即大写情况;false则把按钮里的文字改为小写/>
  • 两种注册监听器的方法
    (一)匿名类方式注册:
  @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button)findViewById(R.id.button_1);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//在此处添加逻辑}});}

(二)实现接口的方式注册:
1、继承View.OnClickListener接口 2、重写onClick(View v) 方法

     public class MainActivity<onClick> extends AppCompatActivity implements View.OnClickListener{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button)findViewById(R.id.button_1);button.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_1://在此处添加逻辑break;default:break;}}}
  • 2.3 EditText
    作用:允许用户在控件里输入和编辑内容,并可以在程序中对这些内容进行处理
  <EditTextandroid:id="@+id/edit_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="Type something here"// 表示在输入框内显示一些提示性的文字,当用户输入任何内容时,这些提示性文字就会消失android:maxLines="2"//表示指定Edit的最大行数为两行/>

我们还可以结合使用EditText和Button来完成一些功能,比如通过点击按钮来获取EditText中输入的内容

     private EditText editText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button)findViewById(R.id.button_1);editText = (EditText)findViewById(R.id.edit_text); button.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_1:String inputText = editText.getText().toString();//从edittext控件中获取被填入的数据Toast.makeText(MainActivity.this,inputText,Toast.LENGTH_SHORT).show();break;default:break;}}
  • 2.4 ImageView
    作用:适用于在界面上展示图片的一个控件,他可以使得程序界面变得更加丰富多彩。注意,图片一般都是放在drawable文件下的
 <ImageViewandroid:id="@+id/image_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/img_1"/>

我们还可以通过点击按钮来更换图片

    private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button)findViewById(R.id.button_1);imageView = (ImageView) findViewById(R.id.image_view);button.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_1:imageView.setImageResource(R.drawable.img_2);//setImageResource()办法表示设置要展示的图片的来源break;default:break;}}
  • 2.5 ProgressBar
    (一)作用:用于在界面上显示一个进度条,表示我们的程序正在加载一些数据,代码如下:
 <ProgressBarandroid:id="@+id/progress_bar"android:layout_width="match_parent"android:layout_height="wrap_content"/>

(二)当数据加载完成时,如何让进度条消失?

  • 1、Android控件的可见属性:所有的控件可以通过android:visibility进行指定,其中选定的值有三种:visible、invisible、gone;①visible表示控件是可见的;②invisible表示控件不可见,但是仍然占据着原来的位置的大小;③gone表示控件不仅不可见,而且不再占用任何屏幕空间
  • 2、通过代码来设置控件的可见性,使用的是setVisibility()方法,可以传入View.VISIBLE、View.INVISIBLE、View.GONE这三种值
    实现代码:
 public class MainActivity<onClick> extends AppCompatActivity implements View.OnClickListener{private ProgressBar progressBar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button)findViewById(R.id.button_1);progressBar = (ProgressBar)findViewById(R.id.progress_bar);button.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_1:if(progressBar.getVisibility() == View.GONE){//调用该方法判断ProgressBar是否可见,若可见则隐藏掉;反之就将他显示出来progressBar.setVisibility(View.VISIBLE);}else{progressBar.setVisibility(View.GONE);}break;default:break;}}}

(三)给ProgressBar控件指定不同的样式,默认为圆形进度条

      <ProgressBarandroid:id="@+id/progress_bar"android:layout_width="match_parent"android:layout_height="wrap_content"style="?android:attr/progressBarStyleHorizontal"//提供条形进度条android:max="100"//给进度条设置一个最大值/>
  • 2.6 AlertDialog
    作用:在当前得界面弹出一个对话框,该对话框置顶于所有界面元素之上的,能够屏蔽掉其他控件得交互能力,因此AlertDialog一般都是用于提示一些非常重要的内容或着警告信息,示例代码如下:
    @Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_1://1、首先创建一个实例AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);//2、设置一些内容    dialog.setTitle("This is a dialog");dialog.setMessage("Something important.");//3、可否用Back键关闭对话框,true表示可以;false表示不可以dialog.setCancelable(false);//4、调用setPositiveButton()方法为对话框设置确定按钮的点击事件dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//在此处添加逻辑}});//5、调用setNegativeButton()方法为对话框设置取消按钮的点击事件dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//在此处添加逻辑}});//6、调用show()方法显示  dialog.show();break;default:break;}}
  • 2.7 ProgressDialog
    作用:跟ProgressDialog类似,弹出一个对话框,能够屏蔽掉其他控件的交互能力。不同的是,ProgressDialog会在对话框中显示一个进度条,一般用于表示当前操作比较耗时,让用户耐心地等待
@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_1://1、首先创建一个实例ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);//2、设置一些内容    progressDialog.setTitle("This is a dialog");progressDialog.setMessage("loading.....");//3、可否用Back键关闭对话框,true表示可以;false表示不可以progressDialog.setCancelable(false);//4、调用show()方法显示  progressDialog.show();break;default:break;}}
注意:如果数据或者操作执行完成,需要通过调用dismiss()方法来关闭对话框,否则该控件会一直存在

三、创建自定义控件

  • 3.1 常用控件和布局的继承结构

    1、所有的控件都是直接或间接继承自View的
    2、所有的布局都是直接或间接继承自ViewGroup的
    3、View是Android中最基本的一种UI组件,它在在屏幕上绘制一块矩形区域,并能够响应这块区域的各种事件。
    4、ViewGroup是一种特殊的View,他可以包含很多子View和子ViewGroup,是一个用于放置控件和布局的容器
  • 3.2 引入自定义布局
    作用:我们可以只创建一个通用格式的布局,然后在其他的活动中调用此布局文件,这样就避免频繁的重复的操作控件
    举例:创建如下的导航栏

    1、在layout包下创建一个布局文件title.xml,然后添加控件
     <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/title_back"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5dp"//可以指定控件在上下左右方向上偏移的距离android:text="Back"android:textColor="#00ff66" /><TextViewandroid:id="@+id/title_text"android:layout_width="0dp"android:layout_height="58dp"android:layout_weight="1"android:gravity="center"android:text="Title Text"android:textColor="#00ff66"android:textSize="24sp" /><Buttonandroid:id="@+id/title_edit"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5dp"android:text="Edit"android:textColor="#00ff66" /></LinearLayout>

2、引用该文件的方法:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><include layout="@layout/title"/>//引用,这样该页面就有了自定好的导航栏</LinearLayout>

在include中,引号里的格式:“@包名/布局文件名”
3、java文件中,修改代码,将系统自带的标题栏隐藏掉

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ActionBar actionBar = getSupportActionBar();//getSupportActionBar()方法用于获取实例if (actionBar != null){actionBar.hide();}}
  • 3.3 创建自定义控件
    作用:对自己已经创建好的控件进行操作设置,比如上面的自定义的布局中的Back键,Back键的目的就是销毁该活动,我们可以通过自定义Back的控件,使得每一个自定义的布局中Back键执行的情况都是相同,这样就避免在每一个活动中都需要重新注册一遍返回按钮的点击事件。
    1、新建一个类,继承LinearLayout类,让他成为我们自定义的标题栏控件
     public class TitleLayout extends LinearLayout {public TitleLayout(Context context, AttributeSet attrs) {super(context, attrs);LayoutInflater.from(context).inflate(R.layout.title,this);}}
LayoutInflater的from()方法创建了一个LayoutInflater对象,调用inflate()方法以动态加载一个布局文件,传入的第一个参数就要加载的布局文件的id,第二个参数就是给加载好的布局再添加一个父布局

2、在我们想要引用该控件的布局文件中中添加自定义控件代码:

 <com.example.uicustomviews.TitleLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"/>

3、然后再在回到java代码中为按钮注册点击事件

public class TitleLayout extends LinearLayout {public TitleLayout(Context context, AttributeSet attrs) {super(context, attrs);LayoutInflater.from(context).inflate(R.layout.title,this);Button titleback = (Button)findViewById(R.id.title_back);Button titleEdit = (Button)findViewById(R.id.title_edit);titleback.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {((Activity)getContext()).finish();}});titleEdit.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(getContext(),"Editing",Toast.LENGTH_SHORT).show();}});}
}

四、 小结
1、本节讲了七种常见控件及其使用方法

  • TextView——主要用于在界面上显示一段文本信息
  • Button——表示在界面上显示一个按钮,有两种注册监听器的方法
  • EditText——允许用户在控件里输入和编辑内容,并可以在程序中对这些内容进行处理
  • ImageView——适用于在界面上展示图片的一个控件,他可以使得程序界面变得更加丰富多彩
  • ProgressBar——用于在界面上显示一个进度条,表示我们的程序正在加载一些数据
  • AlertDialog——可以在当前得界面弹出一个对话框,该对话框置顶于所有界面元素之上的,能够屏蔽掉其他控件得交互能力,因此AlertDialog一般都是用于提示一些非常重要的内容或着警告信息
  • ProgressDialog——跟ProgressDialog类似,弹出一个对话框,能够屏蔽掉其他控件的交互能力。不同的是, ProgressDialog会在对话框中显示一个进度条,一般用于表示当前操作比较耗时,让用户耐心地等待

Android之常见UI控件相关推荐

  1. android ui界面组件,说说 Android 的常见 UI 控件

    这些控件都有一些共有属性,让我们来看看吧: 共有属性 说明 android:id 唯一标识符 android:layout_width 宽度 android:layout_height 高度 andr ...

  2. 2.android布局及UI控件

    布局 0.约束布局 1.线性布局(LinearLayout) 常见属性 以下属性为常见属性,除了最后一个. 1.组件名称:+id/ android:+id/name:代表声明一个新的元素 androi ...

  3. android基础ui控件,Android基础——基础UI控件

    日历,时钟,计时器 package com.example.mybaseuii; import androidx.appcompat.app.AppCompatActivity; import and ...

  4. android 获取控件高度_安卓开发入门教程UI控件_ImageView

    什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...

  5. android 画布裁剪,一种基于Android系统对UI控件进行轮廓剪裁及美化的方法与流程...

    本发明涉及Android应用的技术领域,特别涉及一种基于Android系统对UI控件进行轮廓剪裁及美化的方法. 背景技术: 目前,随着智能电视的普及,Android应用层出不穷,而那些表现形式单一.传 ...

  6. android通过代码设置铃声_第六十四回:Android中UI控件之SeekBar

    各位看官们,大家好,上一回中咱们说的是Android中UI控件之ProgressBar的例子,这一回咱们的例子是UI控件之SeekBar.闲话休提,言归正转.让我们一起Talk Android吧! 看 ...

  7. android 5.0新增 ui 控件,android3.0新增ui控件示例说明.doc

    android3.0新增ui控件示例说明 Android3.0新增UI控件 AdapterViewAnimator控件 AdapterViewAnimator(堆View),已知子类有AdapterV ...

  8. android md 控件,Android基本UI控件.md

    # Android基本UI控件 ## *TextView 文本框* ### TextView常用用法 | 主要方法 | 功能描述 | | :----------: | :--------------- ...

  9. android 根据bounds坐标进行点击操作_炫酷的Android时钟UI控件,隔壁产品都馋哭了...

    废话不多说,先上效果效果酷炫,动画丰富,效果爆炸boom-设计思路看腻了市面上各种丑陋难看的时钟控件,是时候整点新活!将现实生活中的摆钟圆形表盘设计.电子手表的数显表盘设计抽象出来,提取出" ...

  10. android listview 滑动条显示_第七十六回:Android中UI控件之RecyclerView基础

    各位看官们,大家好,上一回中咱们说的是Android中UI控件之ListView优化的例子,这一回咱们说的例子是UI控件之RecyclerView.闲话休提,言归正转.让我们一起Talk Androi ...

最新文章

  1. linux setroubleshootd进程 内存占用过大
  2. C#操作NPOI插件的HSSFWorkBook,常见的那些坑
  3. OpenCV的滑块与回调函数
  4. java中月日年这种怎么转换成年月日_最“热乎”的Java社招面试经历分享(共40个面试题)...
  5. Xftp远程连接出现“无法显示文件夹”的问题补充
  6. 关于android:windowNoTitle不起作用的解决办法
  7. [剑指offer]面试题第[38]题[JAVA][字符串的排列][回溯法]
  8. 单链表的创建、插入、删除、倒置操作
  9. JavaScript 用typeof来判断是否是对象的弊端
  10. Linux常用50条命令
  11. 60套模板免费送,一秒搞定甘特图
  12. 三级网络技术通关指南
  13. 【重磅】《演化学习:理论与算法进展》| 南大周志华、俞扬、钱超重要成果...
  14. 最大子列问题与分治算法
  15. 洛马公司获得阿联酋“萨德”导弹防御系统支持合同-我爱无人机网
  16. 应用出海之--AdMob
  17. Java相互关注_java --关注/取消关注
  18. 基于NLP的软件安全研究(二)
  19. 如何将本地代码推送至github
  20. 首席商学院新媒体运营黎想:抖音直播入门教学,点这!

热门文章

  1. 我的阿里三面,四面分享给大家
  2. 用oracle 11g bbed copy替换同一个表数据块block为另一个数据块之系列八
  3. php本地解密,PHPDecode 在线解密工具
  4. Fake it till you make it: face analysis in the wild using synthetic data alone
  5. air202c语言编程,Air202学习 五
  6. 入侵sf服务器技术_入侵服务器、疯狂攻击各种网站, 这个黑客团伙终被“团灭”!...
  7. matlab z变换 差分,用matlab绘制差分方程Z变换
  8. 微信检测器 微信过滤工具
  9. uva 10246(最短路变形)
  10. Wekan 部署文档