界面布局Layout

Android应用中讲究逻辑和视图分离,所以一般不建议在android程序中直接编写界面。通常的方式是在布局文件(res/layou/*.xml)中编写页面,然后在Activity中引入即可。

Layout用于设计界面的布局,所以layout类型的资源文件就是界面定义文件。AS中提供了界面构建器用于以所见即所得的方式设计界面。UI定义对应一个xml文件,不是Java代码,所以被归并为资源

MainActivity对应的界面文件就是res/layout/activity_main.xml,这个就是界面定义。注意:第一次显示UI的过程可能比较长,请耐心等待。

这个就是AS提供的界面设计器,这个窗口支持拖拽式开发,可以从1/2窗口中选定组件拖拽添加到4窗口中即可,不需要手动编写

窗口1:控件类别,
窗口2:选中类别下的子控件列表
窗口3:设计页面中的控件树
窗口4:页面预览,主要实际上的显示效果有可能会有差别
窗口5:页面排版预览区,主要显示各个控件之间的摆放位置和相互的位置关系
窗口6:有下拉菜单,用于选择如何预览界面,有3种不同的方式:同时显示预览图和排版图、只显示排版图、只显示预览图
窗口7:属性列表,主要用于方便用户对选择的控件的属性进行修改,同时可以看到修改后的预览效果

改动Layout

控件类别有
1、common包含一些最常见的控件。例如TextView控件用于在UI界面上显示固定的提示信息
2、Text文本显示控件和各种文本输入控件,都不能包含子组件
3、Buttons各种按钮
4、Wedgets包含不和分类的各种组件,不能包含子组件
5、Layouts专门用于排版控制子控件,按照某种规则针对子组件进行排版
6、Containers容器类,主要用于容纳子控件,支持内容的滚动,子组件的排列方式固定,不能修改
7、google是Google为android提供的第三方控件,例如Google的广告控件

图像显示

使用Commons分组中的ImageView组件用于显示一个图片,srcCompat用于定义具体的图片名称,名称规则【@res下的分组名称/图片资源名称】

自定义图片

将图片拷贝到项目中的res目录下的drawable分组中,可以修改srcCompat的值为@drawable/a01对应的就是存储在drawable分组中的a01.jpg图片。其中drawable分组主要用于存放可绘制资源
注意:资源名称应该符合Java变量的命名规则,不允许数字开头或者只用中文

定义大小

layout_width定义宽度,layout_height用于定义高度
android:layout_width=“200dp”
android:layout_height=“160dp”
dp是一个距离范围,表示的是实际的物理距离,和像素大小无关

界面设计

界面设计文件的格式是xml

<?xml version="1.0" encoding="utf-8"?> xml文件的开头,version表示xml的版本号,encoding用于设置xml文件的编码字符集
<androidx.constraintlayout.widget.ConstraintLayout 这是一个布局管理器,一般一个xml的界面文件最外层就是一个布局管理器,如果这个类是Android SDK的核心库中的类,可以省略包名称 xmlns:android="http://schemas.android.com/apk/res/android" 以xmlns开头的属性是为xml命名空间定义别名,如果需要使用这个规范中定义的内容,应该是android:xxx的方式引用,如果命名空间没有引入则不能使用xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent" 设置这个组件的宽度,match_parent表示填充满整个父组件android:layout_height="match_parent"tools:context=".MainActivity"><ImageView  在layout组件中添加一个子组件ImageView,用于显示图片android:id="@+id/imageView2"  任何一个组件都必须有一个在当前xml文件中唯一的名称,用于区分或者编码使用android:layout_width="200dp"android:layout_height="160dp"android:layout_marginTop="27dp"android:layout_marginBottom="16dp"
和layout相关的属性配置,用于设定ImageView的具体位置app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView"
用于定义ImageView所对应的显示图片app:srcCompat="@drawable/a001" />
</androidx.constraintlayout.widget.ConstraintLayout>

应用清单文件AndroidManifest.xml

整个项目的工程描述文件,声明系统需要使用什么已经构建这个app所必须的一些内容

<?xml version="1.0" encoding="utf-8"?>
Xml文件必须有且仅有一个根标签
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.yan">根标签,其中xmlns定义所使用的android命名空间,package用于定义所使用的包名称,这个文件中的所有类名称,允许相对这个包的位置进行定义<application 定义应用相关的全局特性android:allowBackup="true"android:icon="@mipmap/ic_launcher"  定义当前应用在启动器中的图标android:label="@string/app_name" 定义当前应用在启动器中的名称android:supportsRtl="true"android:theme="@style/Theme.Helloandroid"><activity android:name=".MainActivity">  申明一个activity组件,定义一个activity必须在这里进行声明,否则不能调用<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

application常见的子标签

  • activity用于定义一个Activity,activity组成了当前应用的UI和对应的显示逻辑。所有可能调用的activity都需要在manifest文件中进行声明,否则系统无法访问,也不会执行
  • service用于定义一个服务,允许执行长时间的后台操作,或者被其他应用调用的重量级的通讯API,service没有UI
  • receiver用于定义广播接收器,允许从系统接收intent广播,甚至在应用的其他组件没有运行的情况下
  • uses-permission用于请求权限,以便应用中某个操作被允许

项目中的资源

res目录用于存放项目中的所有资源文件,例如jpg、png、文本常量等。所有以drawable开头的文件夹用于图片,所有以mipmap开头的文件夹用于存放三维效果的应用图标,所有以values开头的文件夹都是用于存放字串常量、样式、颜色等配置,所有layout文件夹用于存放布局文件,不同的目录是为了使程序能够更好的兼容各种设备

res/values/strings.xml可以定义应用中的常量字符串,定义了一个名为app_name的常量,数值为【第一个Android程序】

<resources><string name="app_name">第一个Android程序</string>
</resources>

可以有2种不同的引用方式
代码中引用 R.string.app_name
xml中引用 @string/app_name

日志工具

Logcat工具是查看系统日志信息的工具,可以获取Android系统运行时打印出来的信息。主要用于开发调试。不建议再使用System.out.println
编码使用:
Android中日志工具类android.util.Log提供了5种相关的方法,对应5种不同的日志等级。通过日志等级可以控制只查看所关心的日志信息,避免不相关的繁琐的信息干扰

Log.v打印最为繁琐的日志,对应的级别就是verbose
Log.d调试信息,对应的级别为debug,比verbose等级高
Log.i比较重要的信息,对应等级info,比debug等级高
Log.w警告信息,对应等级warn,比info等级高
Log.e错误信息,对应等级error,比warn等级高

编程使用

Log.d(“MainActivity”,“this is debug message”); 参数1用于定义标签,输出时可以进行过滤,从而实现只查看一部分所关心得日志信息,一般常用类名称;参数2就是需要输出的内容

日志信息

日志过滤器


编译过滤器配置Edit Filter Configuration,然后定义对应的tag

Toast的基本用法

Toast是一种非常友好的提示方式,可以用于实现以非常短小的信息提示用户的某些信息。这些消息以弹出窗口的方式进行显示,并且在一段时间后自动消失,而且不会占用任何的屏幕空间
1、在layout/activity_main.xml中添加一个按钮

<Buttonandroid:id="@+id/btn1"  这个id值用于编程,所以必须定义
android:text="弹出Toast窗口"  按钮上所显示的问题信息,可以定义在strings.xml中,再通过@string/xxx的方式进行应用,可以使用硬编码
/>

2、在MainActivity类中添加按钮的点击事件处理

Button btn=findViewById(R.id.btn1);//按照组件的id值获取对应组件的引用
btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this,"this is toast message!",Toast.LENGTH_LONG).show();}
});//采用匿名内部类的方式定义对应的点击事件处理

Toast提供了一个工具方法makeText用于创建Toast对象,调用show方法则可以进行显示。
makeText(MainActivity.this,“this is toast message!”,Toast.LENGTH_LONG) 参数1是上下文对象,参数2定义显示的内容,参数3定义显示的时间,有2个常量Toast.LENGTH_LONG表示7000ms,Toast.LENGTH_SHORT表示4000ms

界面布局layout相关推荐

  1. 使用Apache Tiles3.x构建界面布局(一)

    Tiles是一个免费的开源模板Java应用程序的框架.基于复合模式简化的用户界面的构建.对于复杂的网站仍是最简单.最优雅的方式与任何MVC技术一起工作.Struts2对Tiles提供了支持,如今Til ...

  2. 自定义View:测量measure,布局layout,绘制draw

    1. 什么是View 在Android的官方文档中是这样描述的:表示了用户界面的基本构建模块.一个View占用了屏幕上的一个矩形区域并且负责界面绘制和事件处理. 手机屏幕上所有看得见摸得着的都是Vie ...

  3. matlab恢复默认界面布局

    matlab界面布局不小心被弄乱了,命令框和历史命令窗口自己弹出来了,如何恢复呢? 方法: [desktop]-> [desktop Layout] -> [default] 这样就可以& ...

  4. 基于数据挖掘的旅游推荐APP(二):主界面布局

    主界面布局通过Fragment实现,底部类似于Tab选项卡,效果如下: 底部导航栏是借鉴GitHub上的一个项目,不对,其实就是抄的.附上原地址链接,把库引进来直接用就行了.下面上代码: activi ...

  5. 疯狂连连看之开发界面布局

    开发界面布局 本程序将会使用一个RelativeLayout作为整体的界面布局元素,界面布局的上面是一个自定义组件,下面是一个水平排列的LinearLayout. 程序清单:codes\18\Link ...

  6. 模拟新浪微博随便看看界面布局

    模拟新浪微博随便看看界面布局,布局是利用listview控件,利用adapter使数据和空加你绑定到一起,由于只是为了模仿布局,因此数据是利用List集合设定好的. 布局:布局中标题栏的样式是新建的一 ...

  7. Android界面布局练习

    Android界面布局练习 一.实验目的 掌握常用的几种界面布局方法. 能够熟练综合应用各种布局方法进行界面设计. 二.实验内容 制作如下图所示的手机QQ登陆界面. 给控件绑定监听器,当用户点击登陆按 ...

  8. New UI-Hierarchy Viewer工具解析app的界面布局

    New UI-Hierarchy Viewer工具解析app的界面布局  --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入,无论是 ...

  9. android studio按坐标布局,Android studio一个手势锁的界面布局

    目的:完成一个手势锁的界面布局,对Relative,Contains等布局进行简单的使用,onWindowFocusChanged进行一定的熟练.大概来说,就是增加对界面布局的了解. 技术:(1)简单 ...

最新文章

  1. seq2seq与Attention机制
  2. Ubuntu环境下使用gnuplot由数据表绘制曲线图
  3. vCenter 5.5升级到vCenter 6.0实战指导
  4. 使用Fabric自动化你的任务
  5. Console.js:彩蛋和作弊码
  6. 对TELNET登陆路由器的用户进行限制
  7. sqlplus -prelim,sqplus区别
  8. Linux学习笔记 文件读写小细节
  9. 从入门到放弃,C++ 真这么难?
  10. ASP.NETCore的Kestrel服务器
  11. NCRE四级网络工程师考题详解----三级索引结构
  12. python 统计单词个数---从文件读取版本---不去重
  13. 线性代数【1】线性代数是什么【2】行列式计算【3】行列式性质【特殊行列计算】【4】克莱姆法则
  14. 【C++】用sort函数产生的段错误问题
  15. 多核处理器_游戏爱好者的福音!AMD全新一代高性能多核处理器3950X
  16. Centos 6.8 配置mysql数据库主从同步
  17. 绑定校园卡服务器没有响应,单击校园卡管理系统常见问题汇总.doc
  18. 毕业论文 Word 排版技巧
  19. 更强大、更灵活、更全面丨一文搞懂DolphinDB窗口计算
  20. 三星智能手表取得快速增长,华为和小米则以低价穿戴设备取胜

热门文章

  1. 【Python爬虫】按时爬取京东几类自营手机型号价格参数并存入数据库
  2. 12个在线网站测速工具——web性能
  3. idea设置关键字颜色_IntelliJ IDEA配置颜色与字体
  4. IP地址(IP Address)
  5. DOS下格式化移动硬盘
  6. 第三章-分支程序设计代码实例(C++蓝豹子)
  7. 信息网络传播中的服务器标准,信息网络传播权侵权认定标准适用研究
  8. Python 关于引用注意
  9. Java 【求一个整数是否为2的倍数】
  10. Java获取国内各个地区实时天气