二、Android界面开发_android开发页面-程序员宅基地

技术标签: Android入门简明教程  java  android  android studio  

传送门

《一、Android Studio的安装和使用》
《二、Android界面开发》
《三、Android网络开发》
《四、狗狗大全应用实战》

视频教程

https://space.bilibili.com/249229063/channel/seriesdetail?sid=1930119

学习目标

  • 了解Android常用布局
  • 了解Android常用控件

我们可以把Android界面的开发当作搭积木,一个控件(View)可以当作一个木块,一个布局(Layout)相当于一个盒子,里面可以根据不同规则放置不同的木块。不同的布局和控件又可以进行不同的组合,最终搭成我们想要的界面效果。

Android常用布局

FrameLayout

FrameLayout即帧布局,顾名思义,这个布局内部的控件将会按照顺序一帧一帧的规则叠加起来。如下图布局,页面根视图为FrameLayout,layout_width和layout_height表示其宽和高,match_parent表示与其外层视图(这里可以认为是整个界面)同样大小。在FrameLayout内部放了三个控件TextView,默认都布局到了FrameLayout的左上角,显示的字符串都为“Hello World!”,可以在右边预览中看到,找个控件重叠在一起。

截屏2021-12-18 下午4.27.39.png

另外,我们可以通过控件的layout_gravity属性,来控制控件相对于FrameLayout的位置。如下图所示,给三个TextView设置不同的layout_gravity, 将他们布局到不同的位置。center表示布局到FrameLayout的中间,top表示布局到FrameLayout的顶部,bottom表示布局到FrameLayout的底部,center_horizontal表示布局到FrameLayout水平方向的中间。

截屏2021-12-18 下午4.41.59.png

LinearLayout

LinearLayout即线性布局,顾名思义,这个布局内部的控件将会按照线性排列。这个线性排列可以是垂直方向,也可以是水平方向,通过LinearLayout的属性orientation来控制,orientation为horizontal表示水平排列,orientation为vertical为垂直排列。默认orientation为水平排列。

截屏2021-12-18 下午4.52.29.png

截屏2021-12-18 下午4.53.59.png

RelativeLayout

RelativeLayout即相对布局,顾名思义,这个布局内部的控件可以相对于在同一个布局内的其他控件或者父布局(RelativeLayout)进行摆放。在RelativeLayout里面的控件会有一些特殊的相对属性。

1、相对于RelativeLayout摆放的属性:

  • layout_centerHrizontal 相对于RelativeLayout水平居中
  • layout_centerVertical 相对于RelativeLayout垂直居中
  • layout_centerInparent 相对于RelativeLayout完全居中
  • layout_alignParentBottom 贴紧RelativeLayout的下边缘
  • layout_alignParentLeft 贴紧RelativeLayout的左边缘
  • layout_alignParentRight 贴紧RelativeLayout的右边缘
  • layout_alignParentTop 贴紧RelativeLayout的上边缘
  • layout_alignWithParentIfMissing 如果对应的兄弟控件找不到的话,就以RelativeLayout作为参照物

2、相对于其他兄弟控件摆放的属性:

  • layout_below 在某控件下方
  • layout_above 在某控件上方
  • layout_toLeftOf 在某控件的左边
  • layout_toRightOf 在某控件的右边
  • layout_alignTop 本控件的上边缘和某控件的上边缘对齐
  • layout_alignLeft 本控件的左边缘和某控件的左边缘对齐
  • layout_alignStart 本控件的起始位置和某控件的起始位置对齐
  • layout_alignBottom 本控件的下边缘和某控件的下控件对齐
  • layout_alignRight 本控件的右边缘和某控件的有边缘对齐
  • layout_alignEnd 本控件的结束位置和某控件的结束位置对齐

示例如下,当相对于其他兄弟控件摆放时,需要指定兄弟控件的id。

截屏2021-12-18 下午5.21.16.png
如图所示,tv1摆放在布局中间,tv2摆放在顶部,tv3摆放在底部。

ConstraintLayout

ConstraintLayout即约束布局,它是一个高阶控件,功能强大,其内部的控件可以根据一些约束规则进行布局。ConstraintLayout与RelativeLayout有一些类似,但是它更加灵活强大,初学ConstraintLayout只需要掌握它的基本用法即可,后续可以学习它的高级用法(如尺寸百分比,角度定位,辅助工具等)。ConstraintLayout常用的相对属性如下(下面的parent指ConstraintLayout):

  • layout_constraintLeft_toLeftOf 控件左边缘相对于parent或者其他控件的左边缘对齐
  • layout_constraintLeft_toRightOf 控件左边缘相对于parent或者其他控件的右边缘对齐
  • layout_constraintRight_toLeftOf 控件右边缘相对于parent或者其他控件的左边缘对齐
  • layout_constraintRight_toRightOf 控件右边缘相对于parent或者其他控件的右边缘对齐
  • layout_constraintTop_toTopOf 控件顶部相对于parent或者其他控件的顶部对齐
  • layout_constraintTop_toBottomOf 控件顶部相对于parent或者其他控件的底部对齐
  • layout_constraintBottom_toTopOf 控件底部相对于parent或者其他控件的顶部对齐
  • layout_constraintBottom_toBottomOf 控件底部相对于parent或者其他控件的底部对齐
  • layout_constraintBaseline_toBaselineOf 控件基线相对于parent或者其他控件的基线对齐
  • layout_constraintStart_toEndOf 控件起始位置相对于parent或者其他控件的结束位置对齐
  • layout_constraintStart_toStartOf 控件起始位置相对于parent或者其他控件的起始位置对齐
  • layout_constraintEnd_toStartOf 控件结束位置相对于parent或者其他控件的起始位置对齐
  • layout_constraintEnd_toEndOf 控件结束位置相对于parent或者其他控件的结束位置对齐

示例:

截屏2021-12-18 下午6.00.54.png
如图所示,tv1摆放在布局中间,tv2摆放在顶部,tv3摆放在底部。

Android常用控件

Android提供了大量的控件来完成UI界面的展示,包括Material Design风格的一些高级控件。初学者掌握一些基本控件的使用即可,其他控件在有需要时再去学习使用,依样画葫芦,和基本控件的使用方式没有根本性的差异。
截屏2021-12-18 下午6.12.08.png

TextView

官方文档:https://developer.android.com/reference/android/widget/TextView 。
TextView用来展示一个文本,通过不同的配置来让文本展示出不同的效果,如跑马灯、富文本、超链接、带图片的文本等。初学只需掌握基本的用法即可,其他效果按需配置。我们可以在布局中配置属性来控制TextView的显示效果:

截屏2021-12-19 上午11.34.29.png

  • textSize表示字体大小,单位是sp,全称是scale-independent pixel(也会缩写为sip),即“独立比例像素”。sp主要用作字体的单位,在不同像素密度的屏幕上能进行同比例的扩大缩小。
  • textColor表示字体颜色
  • textAllCaps表示全部大写
  • fontFamily表示字体类型
  • textStyle表示字体样式,有normal, bold, italic, bold|italic
  • gravity表示文本在TextView内相对于TextView的对齐方式
  • background表示TextView的背景色

布局中的属性配置可以认为是默认的配置,我们也可以通过代码来改变TextView的样式。

截屏2021-12-19 下午12.01.40.png

在MainActivity.java中,通过findViewById找到布局中的TextView,然后重新设置不同的属性值。

EditText

官方文档:https://developer.android.com/reference/android/widget/EditText 。EditText继承TextView,所以天生就具有TextView的所有属性,可以在布局或者代码中像上述TextView一样配置,当然,EditText有自己的特性,即可编辑的文本。

截屏2021-12-19 下午12.16.44.png

  • inputType指定键盘输入类型,常用的有text(文本)、number(数字)、phone(电话号码)、textPassword(文本密码)、numberPassword(数字秘密)等。
  • hint表示默认的提示文本。
    当然上述属性也可通过代码设置。

截屏2021-12-19 下午12.44.32.png

Button

官方文档:https://developer.android.com/reference/android/widget/Button 。Button继承TextView,所以天生就具有TextView的所有属性,可以在布局或者代码中像上述TextView一样配置,但Button会有默认的背景色和点击效果。

截屏2021-12-19 下午1.10.30.png

在代码中,我们找到Button,给它设置一个点击的监听器,即当用户点击这个按钮时,会触发onClick方法的调用,弹出一个Toast,这个Toast的文本就是Button clicked!当然并不是只有Button可以设置点击监听器,所有控件和布局都可以设置点击监听器。

截屏2021-12-19 下午1.14.23.png

点击效果:

Screenshot_1639890836.png

ImageView

官方文档:https://developer.android.com/reference/android/widget/ImageView 。ImageView可以用来展示一张图片。例如,我们使用src属性指定图片的路径,来展示app模块里面res/mipmap路径下的图片。
截屏2021-12-19 下午1.23.43.png

当图片的尺寸和ImageView大小不一致时,就涉及到缩放的问题,ImageView提供属性scaleType属性来控制缩放方式。常用的属性值有:

  • center,图片不进行缩放,放置ImageView中间
  • centerCrop,图片按比例缩放,直到图片的宽高都大于或者等于ImageView的宽高
  • centerInside,图片按比例缩放,直到图片的宽高都小于或者等于ImageView的宽高
  • fitCenter, 图片按比例缩放, 直到宽等于ImageView的宽或者高等于ImageView的高,默认方式
  • fitXY,拉伸宽和高,直到图片填充满整个ImageView

当然我们也可以通过代码来设置图片资源以及缩放类型。

截屏2021-12-19 下午1.57.10.png

RecyclerView

官方文档:https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView 。RecyclerView是一个高阶控件,也是Android Jetpack中的一部分。RecyclerView可以用来展示横向列表、纵向列表、网格布局、瀑布流等效果,初学者只需掌握常用的纵向列表即可。

1、在布局中放置RecyclerView

截屏2021-12-19 下午2.39.57.png

2、创建ViewHolder

ViewHolder表示列表中一个条目的视图持有者,它可以持有一个控件或者布局。

在MainActivity.java中编写MyViewHolder代码,继承自RecylerView.ViewHolder。
截屏2021-12-19 下午2.45.29.png

3、创建适配器Adapter
适配器用来适配列表中的条目视图和条目数据,将条目数据与条目视图绑定。在MainActivity.java中编写MyAdapter,继自RecylerView.Adapter代码。

截屏2021-12-19 下午2.50.11.png

  • onCreateViewHolder表示创建一个条目的视图持有者,这里创建一个自定义的MyViewHolder,让他持有一个TextView
  • onBindViewHolder表示绑定一个条目的视图持有者,在这个方法里面可以通过视图持有者获取到视图,即itemView, 然后对itemView进行绑定,给它设置数据或样式。这里就是给TextView设置它的样式以及它显示的文本。另外,position表示这个条目在列表中的位置。
  • getItemCount表示返回条目的个数,这里我们返回10,表示创建10个条目。

4、RecylcerView设置适配器和布局管理器

在MainActivity的onCreate方法中设置RecyclerView的适配器以及布局管理器。

截屏2021-12-19 下午3.00.08.png

5、运行
代码完成后,运行到模拟器,效果如下:

Screenshot_1639897252.png

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a526247082/article/details/122033540

智能推荐

linux 网络协议分析器,Wireshark 2.6 发布:最流行的网络协议分析器-程序员宅基地

文章浏览阅读121次。导读世界上最流行的开源网络协议分析器Wireshark已经升级到2.6版本的新稳定版本,这是一个重大更新,增加了许多新功能和改进,并支持新协议。自从Wireshark 2.5以来,已经进行了许多用户界面改进,而Wireshark 2.6似乎是支持传统GTK+图形用户界面的最后一个版本,正如开发团队宣布它在下一个Wireshark 3.0主要系列中不会得到支持,Wireshark 2.6的新功能包括..._linux是否支持twamp

Linux cut用法-程序员宅基地

文章浏览阅读599次。一、作用cut命令是一个选取命令,其功能是将文件中的每一行”字节” ”字符” ”字段” 进行剪切,选取我们需要的,并将这些选取好的数据输出至标准输出二、格式cut -[n]b file cut -c file cut -d[分隔符] -f[域] file三、参数解释-b(bytes) :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指

Eclipse连接mySQL(亲测经历的错误)解决方法_eclipse client does not support authentication pro-程序员宅基地

文章浏览阅读5.5k次,点赞8次,收藏49次。Eclips连接mySQL错误的解决方法错误一:报错:Client does not support authentication protocol requested by server; consider upgrading MySQL client解决方法:1.打开mySQL输入use mysql;2.输入(*号表示你自己的密码)alter user 'root'@'localhost' identified with mysql_native_password by '******';_eclipse client does not support authentication protocol requested by server;

汽车UDS诊断详解及Vector相关工具链使用说明——1.3 诊断响应规则汇总_uds 功能寻址 怎么知道谁响应-程序员宅基地

文章浏览阅读2.1k次。第一篇文章中我们简要提到过服务器接收到客户端的诊断请求后的响应规则,上一篇文章我们详细介绍了诊断请求和响应的流程,现在我们来完整归纳一下服务器的诊断响应规则,即ECU接收到诊断仪的诊断请求后,应该按照哪些规则来决定给出肯定响应还是否定响应,如果给出否定响应,应该使用哪些否定响应码(后文统称NRC)。这部分内容在14229-1-2013版本的7.5章节。一、通用服务响应规则上图是标准给出的通用诊断响应规则。图中被划分为三部分:mandatory 强制的:这部分的规则是标准强制要求遵守的optio_uds 功能寻址 怎么知道谁响应

java web 项目总结_【javaWeb开发工作总结_javaWeb开发个人年终总结】-看准网-程序员宅基地

文章浏览阅读165次。java实训个人总,java实训个人总范文实训已经进行两周多了,还有一周就要正式了,突然发现自己似乎又重蹈覆辙了,再一次一次的不经意中和某些人的就距离却是越来越来大,总是想偷一下懒,总是想着马马虎虎过去算了,没有那么精打细算过。果不经意有些人人开始脱颖而出,有些人开始展露锋芒,而我也开始黯淡下去。我是想好好学学别人的,果画虎不成反类犬。原来我也是不轻易臣服的人,我即便不去领导他们也没有人可以领导我..._web项目工作总结

Linux服务器出现大量的CLOSE_WAIT的问题_linux tomcat close_wait 详情-程序员宅基地

文章浏览阅读5.4k次。Linux服务器出现大量的CLOSE_WAITLinux服务器tcp socket常见的几种状态:ESTABLISHED、TIME_WAIT、CLOSE_WAIT。TCP协议中描述,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。提供网络服务时,需要特别关注两种状态:CLOSE_WAI_linux tomcat close_wait 详情

随便推点

java静态绑定&动态绑定详解_java静态绑定概念-程序员宅基地

文章浏览阅读2.2k次。程序绑定的概念: 绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定静态绑定: 在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现。例如:C。 针对java简单的可以理解为程序编译期的绑定;这里特别说明一点,java当中的方法只有final,static,private和构造方法是前期绑定动态绑定: 后期_java静态绑定概念

学习go语言国内最全资料链接_七米 golang-程序员宅基地

文章浏览阅读571次,点赞5次,收藏4次。就最近和各位大佬认识下来,以前觉得学习go语言,可能资料比较少,可是后来才发现,原来资料并不少,甚至可以说通过大家的努力,go社区已经非常包容且完善了接下来会推荐一些资料,以及大佬社区微软go语言中文网Gopher China golang中国LearnKu自建博客:boyacch码农桃花源七月天面向信仰编程less is betterPure White煎鱼mzh鸟窝峰云就她了luozhiyun`s BlogVincent Blanchon地鼠导航go夜读g_七米 golang

linux+tar怎样解压zip文件内容,linux tar压缩解压文件-程序员宅基地

文章浏览阅读1.7w次。时间:2016-08-30作者:admin 阅读:次-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。下面的参数-f 是必须的-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。# tar -cf..._tar怎么解压zip文件

一名双非程序媛面试蚂蚁、美团、携程等大厂拿 offer 分享面试过程_双非女后端大厂面经-程序员宅基地

文章浏览阅读184次。今天小编给大家带来一个优秀妹子的后台面试经验总结,希望对正在面试或者以后需要面试的人提供一些参考和帮助。具体如下:本人妹子,985 硕士,211 本科,专业都是软件工程,一直投的是 Java 后台开发,只投过一次网易的测试,技术不是大牛,但是比较努力。实验室没有项目,so 项目经验是 0,在去年这个时候看到实验室师兄找工作的艰难,因此开始复习的时间比较早。最开始先看的 java 基础,看的马某某的视频,后面就看框架视频,后来也看过某某学院的视频,都是在网上找的免费的。..._双非女后端大厂面经

运行成功:char转换为wchar_t的代码_char 转换成 wchar_t-程序员宅基地

文章浏览阅读593次。  具体代码是:int charTowchar(char* pSrc, wchar_t* pDest){ if (pSrc == NULL || pDest == NULL) { return 0; } setlocale(LC_CTYPE, "zh_CN.utf8"); int w_size = mbstowcs(NULL, pSrc, 0) + 1; //w_size=0说明出错了。可能有非法字符,也可能是locale设置不对。_char 转换成 wchar_t

Spring Security最难的地方就是这个了-程序员宅基地

文章浏览阅读3.6k次,点赞6次,收藏6次。本篇摘自胖哥最新的基于Spring Security 5.6.x的《Spring Security干货》教程。旧版的教程将在2022年1月1日下线,请需要的同学尽快通过本公众号回复“202..._configurer.addobjectpostprocessor

推荐文章

热门文章

相关标签