本文针对常用控件(Textview、Button、EditText、RadioButton、CheckBox、ImageView)进行简单说明

控件、组件、插件概念区分

说到控件,就不得不区分一些概念。

控件(Control):编程中用到的部件

组件(Component):软件的组成部分

插件(plugin): 应用程序中已经预留接口的组件

下面举些例子

Android的系统控件:

  • Textview
  • ImageView
  • Button
  • ...

Android的四大组件

  • Activity
  • Service
  • Content Provider
  • Broadcast Receiver

网页上常用插件莫过于flash了,用于视频加载播放。

控件说明

和布局类似控件至少需要设置的属性为android:layout_widthandroid:layout_height,分别控制布局的宽度和高度,一般填入的参数为match_parent和wrap_content,也可填入具体尺寸 。

出于实际需要,android:id也必不可少,id属性只能接受资源类型的值,也就是必须以@开头的值,在R中用一个int类型的值来表示。比如@+id/xyz,在R.java中表示为int xyz = value,其中value是一个十六进制数。

值得说明的是@id和@+id的区别

  • @+id,就是在R.java文件里新增一个id名称,如果之前已经存在相同的id名称,那么会覆盖之前的名称。
  • @id,则是直接引用R.java文件的存在的id资源,如果不存在,会编译报错。

Textview 显示文本框

布局文件中常用的几个单位

  • dp(dip): device independent pixels(设备独立像素)不同设备有不同的显示效果
  • px: pixels(像素): 不同设备显示效果相同
  • sp: scaled pixels(放大像素): 主要用于字体显示
  • pt:(point):是一个标准的长度单位,1pt=1/72英寸,不常用

可实现的常用功能:

  • 可以设置四个方向的图片: drawableTop(上),drawableButtom(下),drawableLeft(左),drawableRight(右)

  • 当文字中出现了URL,E-Mail,电话号码的时候,我们可以通过设置android:autoLink属性;当我们点击对应部分的文字,即可跳转至某默认APP,比如一串号码,点击后跳转至拨号界面!

  • 文字效果,如跑马灯,阴影等等

  • android:ellipsize="end" 内容超过屏幕宽度,尾部显示省略号

  • 实现跑马灯效果(文字循环滚动)

    android:singleLine="true" //单行显示
    android:ellipsize="marquee" //文字循环滚动
    android:marqueeRepeatLimit="marquee_forever" //设定为永久循环
    android:focusable="true" //获取键盘焦点
    android:focusableInTouchMode="true" //获取触屏焦点

    简单介绍下这里的焦点,获取焦点的控件就是当前可以执行操作的控件。举个例子,当我们点击文本框时,会出现光标闪烁,在光标处可以输入文字,这里的文本框就获取了焦点,单行显示如果用android:maxLines="1"会报错。

    这样的设计存在一个缺陷——当前界面的其他控件都无法获取焦点了,也就无法在本界面上进行其他操作,仅仅起到演示效果,而且若同时设置多个跑马灯只有第一个会有响应。(还遇到一个坑,就是在我的红米真机上显示不出跑马灯效果,有待填坑)所以需要设计无焦点的跑马灯

动图的下方图标是水印

Button 按钮

Button一般需要实现的效果是按下后发生某种响应,跳转。 Button是TextView的子类,Textview也可像Button一样设置点击事件

点击效果的原理是:按下前为浅色,按下后变为深色,当然颜色选得恰当的话效果会更好。一种做法是在android:background中引用Drawable资源文件,设置< item android:state_pressed="xx">中xx分别为true和false的情况下,按钮状态的改变

按钮水波效果实现可见https://www.runoob.com/w3cnote/android-tutorial-button-imagebutton.html

动图中,如果未设置按钮状态改变,看不出按钮点击效果,于是我加入了点击时带圆点提示

EditText 可输入文本框

常用的实用属性如下

  • android:hint 输入时输入框的提示文本
  • android:inputType 指定输入类型,如果指定为phone类型,手机键盘会自动弹出数字键盘,同时输入也只接受数字类型。
  • android:maxLines="1" 指定输入框的最大行数为1,防止格式变形

demo只演示了数字输入,可以看到号码不接受数字外的其他类型输入

RadioButton 单选按钮

使用方法如下

比如出一道单选题,选项的集合就是布局文件中的<RadioGroup>,里面嵌套几个<RadioButton>,每个各代表一个选项,选项内容由android:text决定。

为了方便起见,通常在用户未选时设置默认选中的选项,在该选项中设置属性android:checked="true"

选项默认的样式是在文本前加点表示选中,也可以采用文本框对纯色填充的样式。则需要在android:background中引用Drawable资源文件,设置< item android:state_checked="xx">中xx分别为true和false的情况下,按钮状态的改变。

CheckBox 复选框

相当于多选题,区别RadioButton的地方在于,不需设置一个选项集合,而是

题目可由TextView显示,每个选项由一个<CheckBox>表示,选项内容由android:text决定。

选项的按钮样式可通过引用Drawable资源文件,在Drawable资源文件中进行修改设置。

ImageView 图像视图

ImageView有两个可以设置图片的属性,分别是:src和background

  • background通常指的都是背景,而src指的是内容!!

  • 当使用src填入图片时,是按照图片大小直接填充,并不会进行拉伸

而使用background填入图片,则是会根据ImageView给定的宽度来进行拉伸

图片缩放类型可由两种控制方式设置:

  • 布局文件中设置 android:scaleType 属性
  • Java代码中设置ImageView.setScaleType()方法

ImageView源码中暂时没有实现加载网络图片的方法,当然在网上有很多种方法,这里介绍其中一种:使用第三方的库Glide加载网络图片。

按照天哥的视频进行配置 build.gradle,一开始报错了,说一下修改遇到的坑:

  • 需要修改的build.gradle是在app目录下的,不是另一个
  • 当前版本使用的是androidx,因此会找不到android.v7包,改成当前版本下的appcompat即可,其余同理
  • 当前版本的compile都建议修改为implement

参考资料

  1. 组件、控件和插件的区别

    https://blog.csdn.net/haiross/article/details/22662635

  2. TextView、ImageView详解|菜鸟教程

    https://www.runoob.com/w3cnote/android-tutorial-textview.htmlhttps://www.runoob.com/w3cnote/android-tutorial-imageview.html

  3. Android 基础之简单控件

    https://www.jianshu.com/p/a32f639bc756

  4. @id和@+id的区别

    https://blog.csdn.net/bzlj2912009596/article/details/80491153

  5. 【天哥】Android开发视频教程最新版 Android Studio开发

    https://www.bilibili.com/video/av38409964

  6. Android 获取焦点

    https://zhidao.baidu.com/question/455464125905865485.html

  7. Android之跑马灯详解

    https://www.jianshu.com/p/67e74148a122

Android Studio 学习笔记(三):简单控件及实例的更多相关文章

  1. Android开发学习笔记-自定义组合控件的过程

    自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局 ViewGroup:2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:3.根据一些需要或者需 ...

  2. Android开发学习笔记-自定义组合控件

    为了能让代码能够更多的复用,故使用组合控件.下面是我正在写的项目中用到的方法. 1.先写要组合的一些需要的控件,将其封装到一个布局xml布局文件中. <?xml version="1. ...

  3. 【VC++学习笔记三】控件自绘

    MFC应用程序中,大部分的控件类型都已经被定制好了,即便是修改,也只是小范围内的修改,而很多情况下,我们又需要对界面进行特殊定制,这时,最好的办法就是用CWnd类进行派生,自己生成新的窗体,在WM_P ...

  4. Android Studio 学习笔记(一)环境搭建、文件目录等相关说明

    Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...

  5. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  6. WPF-学习笔记 动态修改控件Margin的值

    原文:WPF-学习笔记 动态修改控件Margin的值 举例说明:动态添加一个TextBox到Grid中,并设置它的Margin: TextBox text = new TextBox(); t_gri ...

  7. JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  8. Android Studio 学习笔记(五):WebView 简单说明

    Android中一个用于网页显示的控件,实际上,也可以看做一个功能最小化的浏览器,看起来类似于在微信中打开网页链接的页面.WebView主要用于在app应用中方便地访问远程网页或本地html资源.同时 ...

  9. Android学习笔记_30_常用控件使用

    一.状态栏通知(Notification): 如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息.发送消息的代码如下: public void sendNotice(View v){ int ic ...

随机推荐

  1. 你对Java泛型的理解够深入吗?

    泛型 泛型提供了一种将集合类型传达给编译器的方法,一旦编译器知道了集合元素的类型,编译器就可以对其类型进行检查,做类型约束. 在没有泛型之前: /** * 迭代 Collection ,注意 Coll ...

  2. Exceptionless运用结果

    一.后台页面功能 列表菜单 SubmitLog - 记录一般日志 log Messages SubmitException - 记录一次日志 Exceptions SubmitNotFound - 4 ...

  3. ubuntu(linux)虚拟主机部署桌面,使用window链接

    买的ubuntu只有命令行,想安装一个桌面,远程操控 网上教程很多,我主要遇到一个问题,百思不得其解 之间安装的不是连接超时,就是拒绝连接 又重新参考这篇博客安装后才解决 说一下大致流程,详细的见这位 ...

  4. java数据库学习路线和必学知识点!

    java数据库必学知识点! 分享一下数据库的学习路线和必学的知识点! 掌握mysql,Oracle在各个平台上的安装及使用 Mysql数据库基础 mysql概述.优点.运行原理及内存结构 mysql数 ...

  5. tensorflow数据读取机制tf.train.slice_input_producer 和 tf.train.batch 函数

    tensorflow中为了充分利用GPU,减少GPU等待数据的空闲时间,使用了两个线程分别执行数据读入和数据计算. 具体来说就是使用一个线程源源不断的将硬盘中的图片数据读入到一个内存队列中,另一个线程 ...

  6. 清晰架构(Clean Architecture)的Go微服务: 依赖注入(Dependency Injection)

    在清晰架构(Clean Architecture)中,应用程序的每一层(用例,数据服务和域模型)仅依赖于其他层的接口而不是具体类型. 在运行时,程序容器¹负责创建具体类型并将它们注入到每个函数中,它使 ...

  7. python报错: invalid syntax

    invalid syntax: 无效的语法. 解决办法:查看当前语句中的  , 如果当前行没找到错误,依次往上找,往上找时可以利用是否有输出进行快速查找. 原因:python语法很严格,少了左括号.右 ...

  8. 测试必备之Java知识(三)—— 集合、Map相关

    集合相关 List.Set.Map的区别 类型 描述 List 允许重复对象,可插入多个null元素,有序 Set 不允许重复对象,只允许一个null元素,无序 Map 不是collection的子接 ...

  9. BeautifulSoup的简单用法

    官方文档加载比较慢(估计是我党的原因) https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#find-parents ...

  10. lisp学习总结(一)

    lisp太简单 lisp核心太简单了只有几个简单的逻辑定理,简单到你会认为他啥事都做不了. lisp语法太简单了,只有符号,参数,以及括号,组成一种万能的表达式. 由于上述lisp的简单,所以对于初学 ...