11月3日Android学习笔记

标签

Android

layout

activity

发布时间:

本文字数: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的区别

  1. 基于内存不同。 DVM基于寄存器,JVM基于栈
  2. 字节码不同。 .dex .class
  3. SDK不同
  4. 运行环境不同

生成的应用程序中重要的文件夹结构

src:java源代码 ,放置处理逻辑的代码
res:存放资源文件,放置图片,xml文件
AndroidMainFest.xml 清单文件,包名,应用名,版本号,icon,使用权限,注册各种组件

Android的四大组件

  1. Activity:提供了与用户交互的视图。
  2. Service: 服务,一般很少有界面,多是后台的操作,例如后台下载等等。
  3. BroadcastReceiver:广播接收者,相当于一个监视器,当程序发送广播时,会处理相应的逻辑
  4. ContentProvider: 内容提供者,实现了跨进程的通信。

android的ui控件分为两类

  1. 容器类控件:
    ViewGroup
    LinearLayout(线性布局)
    RelativeLayout(相对布局)
    FrameLayout(帧布局)
    AbsoluteLayout(绝对布局)TableLayout (表格布局)
    GridLayout(网格布局)
  2. 视图类控件:
    View Button TextView EditText RadioButton Checkbox ImageView ImageButton.......

view

View android中所有UI控件的父类

android中所有的ui控件都放在两个包中,android.view,android.widget

  1. android:id
    该控件在布局当中的唯一标识,(在同一个布局当中,id名不能重复)
  2. android:background
    为控件设置背景(可以设置为颜色的色值,也可以直接使用图片)
  3. android:padding
    控件对于其子控件设置的四个边的内边距
  4. android:paddingTop
    控件对于其子控件设置的上边的内边距
  5. android:paddingBottom
    控件对于其子控件设置的下边的内边距
  6. android:paddingLeft
    控件对于其子控件设置的左边的内边距
  7. 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布局?

  1. 在res/layout文件夹中新建一个布局文件:.xml文件
    Android XML File
  2. 在src文件夹对应的包中新建一个类,让这个类继承Activity
  3. 重写Activity的onCreate()方法,然后在这个方法当中调用setContentView()方法,可以把布局和代码相连接。
    格式:setContentView(R.layout.<资源文件名>); 4 在清单文件中注册此activity。
    <activity name="com.qf.demo01.FirstActivity"/>

LinearLayout(线性布局)

  1. 将其中包含的控件使用横向或者是纵向排列。
  2. 控件的长度和宽度可以带权重。
    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(帧布局)

  1. 帧布局中每一个组件都代表了一个“独立的”画面。
  2. 默认以屏幕左上角作为(0,0)坐标。按组件定义的先后顺序依次逐层显示,后面出现的会覆盖前面的画面。每新加一个组件就相当于新的一层覆盖上去。

属性介绍:

android:foreground 会放置在布局管理器所有组件之上 android:foregroundGravity 控制放置在最前面的图片的位置。

帧布局代表事例:拉花布局,霓虹灯布局

AbsoluteLayout(绝对布局)

还有一个名字:坐标布局,可以直接的指定子元素的绝对位置。
这种布局有一个好处,简单直接,直观性强
使用android:layout_x这个属性确定x坐标,以左上角为定点
使用android:layout_y这个属性确定y坐标,以左上角为定点
如果子元素不设置android:layout_x,android:layout_y这两个属性,默认值是0,会出现在左上角。
由于手机屏幕尺寸差距比较大,使用绝对布局适应性就比较差,所以就过时了。