11月3日Android学习笔记
发布时间:
本文字数:2,199 字 阅读完需:约 2 分钟
今日内容总结
今天内容总结:
1.安装android studio 、sdk,mumu,关联studio和模拟器
2.创建android项目,运行android项目
3.介绍android项目文件夹结构
java 编写代码
res
mipmap:放置图片,
drawable:用xml编写图片背景,
layout-编写布局
values:放置统一的资源设置信息
string.xml color.xml dimens.xml themes.xml
AndroidManifest.xml
4.容器类控件----布局
线性布局
放置方向
权重
gravity layout_gravity
相对布局
4+4+4+3
内部控件属性
约束布局
5.常见控件
View:
OnClickListener
TextView=========AppCompatTextView
会根据设置应用样式发生改变,Button等其他控件同理
相关属性:
Button
1.在代码中设置监听
2.在drawable设置点击效果
EditText
hint:提示信息
inputType:输入类型
设置背景:图片或者自己绘制xml
CheckBox
监听器
Compound.OnCheckChangeListener
6.页面跳转
Intent intent = new Intent("当前的activity的对象","即将跳转的页面.class");
startActivity(intent)
android系统的体系结构
应用程序层 应用程序框架层 函数层 android运行时 Linux内核
DVM与JVM的区别
- 基于内存不同。 DVM基于寄存器,JVM基于栈
- 字节码不同。 .dex .class
- SDK不同
- 运行环境不同
生成的应用程序中重要的文件夹结构
src:java源代码 ,放置处理逻辑的代码
res:存放资源文件,放置图片,xml文件
AndroidMainFest.xml 清单文件,包名,应用名,版本号,icon,使用权限,注册各种组件
Android的四大组件
- Activity:提供了与用户交互的视图。
- Service: 服务,一般很少有界面,多是后台的操作,例如后台下载等等。
- BroadcastReceiver:广播接收者,相当于一个监视器,当程序发送广播时,会处理相应的逻辑
- ContentProvider: 内容提供者,实现了跨进程的通信。
android的ui控件分为两类
- 容器类控件:
ViewGroup
LinearLayout(线性布局)
RelativeLayout(相对布局)
FrameLayout(帧布局)
AbsoluteLayout(绝对布局)TableLayout (表格布局)
GridLayout(网格布局) - 视图类控件:
View Button TextView EditText RadioButton Checkbox ImageView ImageButton.......
view
View android中所有UI控件的父类
android中所有的ui控件都放在两个包中,android.view,android.widget
- android:id
该控件在布局当中的唯一标识,(在同一个布局当中,id名不能重复) - android:background
为控件设置背景(可以设置为颜色的色值,也可以直接使用图片) - android:padding
控件对于其子控件设置的四个边的内边距 - android:paddingTop
控件对于其子控件设置的上边的内边距 - android:paddingBottom
控件对于其子控件设置的下边的内边距 - android:paddingLeft
控件对于其子控件设置的左边的内边距 - android:paddingRight
控件对于其子控件设置的右边的内边距
ViewGroup:布局管理器
提供了两个内部类:
ViewGroup.LayoutParams
android:layout_height: 控件在屏幕纵向的长度
android:layout_width:控件在屏幕横向的长度
上面的两个属性提供了三个属性值
FILL_PARENT:填充父类,填充窗体
MATCH_PARENT:匹配父类,和fill_parent效果是相同的,在android2.2之后建议使用这种属性。
WRAP_CONTENT:包裹内容,只要确定包裹住内部控件就可以了。
也可以使用绝对的数值对以上两个属性进行赋值。
150dp,120dp
ViewGroup.MarginLayoutParams
android:layout_margin: 设置控件在四个边上的外边距。
android:layout_marginTop: 设置控件在上边的外边距。
android:layout_marginBottom: 设置控件在下边的外边距。
android:layout_marginLeft: 设置控件在左边的外边距。
android:layout_marginRight: 设置控件在右边的外边距。
什么是dp?
dp:代表每英寸上有多少个像素点,和px是不同的。
dip:和dp完全相同
sp:文字大小使用的单位
px:分辨率,屏幕上的像素点
怎么用xml文件去控制ui布局?
- 在res/layout文件夹中新建一个布局文件:.xml文件
Android XML File - 在src文件夹对应的包中新建一个类,让这个类继承Activity
- 重写Activity的onCreate()方法,然后在这个方法当中调用setContentView()方法,可以把布局和代码相连接。
格式:setContentView(R.layout.<资源文件名>); 4 在清单文件中注册此activity。
<activity name="com.qf.demo01.FirstActivity"/>
LinearLayout(线性布局)
- 将其中包含的控件使用横向或者是纵向排列。
- 控件的长度和宽度可以带权重。
android:orientation 设置布局内控件的排列方式。
horizontal:水平的
vertical:垂直的
android:weightSum 设置布局内控件的总权重
android:gravity 设置布局管理器内控件的放置位置 (外对内的要求,是容器对内容的重力要求)
包含的子控件常用的属性:
android:layout_weight 设置该控件在线性布局中所占的权重。
【内对外的请求,用于分配剩余空间的权重属性】
剩余空间 = 总长度-已分配的长度
备注:
如果是水平方向设置权重,就把layout_width的属性值设为0dp
如果是垂直方向设置权重,就把layout_height的属性值设为0dp
android:layout_gravity 设置该控件在布局中的放置位置。 (内对外的请求,用来设置控件相对于外层容器的控制位置)
特点: 1.垂直线性布局,每一行只能放一个控件,到底部装不下的就会被挤出去。(全部或者部分) 2.水平线性布局,每一列只能放一个控件,到右边装不下的就会被挤出去。 (全部或者部分)
代表事例:爬格子事例,计算器事例
RelativeLayout(相对布局)
概念:指控件之间或者控件与容器之间的相对位置进行排列的。
相对布局的特有属性:
android:gravity 设置布局容器内子控件对于容器的对齐方式,相对布局默认的方向是左上
android:ignoreGravity 设置布局容器内哪个控件都不受gravity属性的影响。 属性值为指定控件的id。
RelativeLayout的子元素(子控件)特有的属性。 4+5+7=16 个属性
1.第一组(4个):兄弟控件之间的相对位置。该组属性的值就是另一个控件的id。
android:layout_toLeftOf :该控件在哪个控件的左侧 api17之后建议使用 layout_toStartOf
android:layout_toRightOf 该控件在哪个控件的右侧 api17之后建议使用 layout_toEndOf
android:layout_above 该控件在哪个控件的上边
android:layout_below 该控件在哪个控件的下边
2.第二组(5个):兄弟控件之间的对齐位置(都是以align开头的)。该组属性的值就是另一个控件的id。
android:layout_alignRight 该控件的右边与指定控件的右边对齐。
android:layout_alignLeft 该控件的左边与指定控件的左边对齐。
android:layout_alignTop 该控件的上边与指定控件的上边对齐。
android:layout_alignBottom 该控件的下边与指定控件的下边对齐。
android:layout_alignBaseLine 该控件与指定控件的基线对齐。(首行文本对齐)
3.第三组(7个):控件与父布局(父容器)的对齐关系。该组属性的值是true或者是false。
android:layout_alignParentRight 设置是否该控件与其父容器右对齐
android:layout_alignParentLeft 设置是否该控件与其父容器左对齐
android:layout_alignParentTop 设置是否该控件与其父容器上对齐
android:layout_alignParentBottom 设置是否该控件与其父容器下对齐
android:layout_centerVertical 设置是否该控件位于父类控件垂直中心方向
android:layout_centerHorizontal 设置是否该控件位于父类控件水平中心方向
android:layout_centerInParent 设置是否该控件位于父类控件中心位置
使用注意点: 1.在相对布局中必须避免循环的描述。 2.在布局里面,线性布局特有的属性在相对布局中不一定有效果。比如说weight这个属性在相对布局中不生效。 相对布局独有的属性,放在线性布局当中一样不生效。
相对布局代表事例:梅花布局,登录注册布局
FrameLayout(帧布局)
- 帧布局中每一个组件都代表了一个“独立的”画面。
- 默认以屏幕左上角作为(0,0)坐标。按组件定义的先后顺序依次逐层显示,后面出现的会覆盖前面的画面。每新加一个组件就相当于新的一层覆盖上去。
属性介绍:
android:foreground 会放置在布局管理器所有组件之上 android:foregroundGravity 控制放置在最前面的图片的位置。
帧布局代表事例:拉花布局,霓虹灯布局
AbsoluteLayout(绝对布局)
还有一个名字:坐标布局,可以直接的指定子元素的绝对位置。
这种布局有一个好处,简单直接,直观性强
使用android:layout_x这个属性确定x坐标,以左上角为定点
使用android:layout_y这个属性确定y坐标,以左上角为定点
如果子元素不设置android:layout_x,android:layout_y这两个属性,默认值是0,会出现在左上角。
由于手机屏幕尺寸差距比较大,使用绝对布局适应性就比较差,所以就过时了。
预览: