• day2-UI布局


    一、Android UI框架:【了解】

        Android中所有的UI(用户界面)元素都是使用ViewViewGroup

    象建立的,View是一个可以将一些信息绘制在屏幕上并与用户产生交互的

    对象,而ViewGroup是一个包含多个的ViewViewGroup的容器,用来定

    UI布局。

        Android提供了一系列的ViewViewGroup的子类,开发者可以灵活地

    组合使用它们来完成界面布局、界面元素绘制和用户交互等工作,同时,开

    发者还可以选择性地继承一些系统提供的View,来自定义View,把自己定

    义的界面元素显示给用户。

        Android使用View类作为界面开发的超类,所有的界面开发都与View

    有关。多个View是一个ViewGroup,但ViewGroup本身继承自View,所以,

    Android界面由ViewViewGroup随意组合而成,Android的界面开发其实

    就是对View及其各种子孙类做操作。

    二、ViewViewGroup

       AndroidUI开发使用层次模型来完成,一般都是在一个ViewGroup

    嵌套多层ViewGroup,每一层中含有随意数目的View。我们可以将整个屏幕

    看做一个ViewGroup,它同时也是一个View,而在这个整体的ViewGroup

    之中,又有多个ViewGroupView,每个ViewGroup中又可以有多个子

    ViewGroupView。基本结构如下图所示。

    三、布局的介绍:【了解】

    对界面控件位置的确定

    注意:如果需要定义layout/xx.xml文件时必须指定当前文件的根布局   选择布局需要根据界面控件的摆放特征

    例如:如果需要所有的控件都在同一方向上今夕摆放需要使用<LineareLayout> 线性布局

    1、在4.0以前版本中一共有五种布局,都是ViewGroup的子类。分别是AbsoluteLayout(绝对布局)、  RelativeLayout(相对布局)、 

    LinearLayout(线性布局)、  FrameLayout(帧布局)、   

    TableLayout(表格布局)。而TableLayoutLinearLayout的子类。。

    2、在2.2操作系统中将AbsoluteLayout过期。而目前FrameLayoutTableLayout

    也逐渐少用。

    3、在4.0之后又新增GridLayout。(GridLayout最经典的案例是计算器界面)

    总之,Android中一共有六种布局。目前推荐使用RelativeLayoutLinearLayoutGridLayout三种布局。

    四、View类的常用xml属性:

    1、类结构:

    java.lang.Object 

        ↳android.view.View

    2View及其子元素常用属性:(各种布局及控件的共同属性)

    android:id   控件的id

    android:background   控件的背景颜色

    android:onClick     为该控件的单击事件绑定监听器

    android:visibility    设置该控件是否可见(invisible/visible/gone

    android:alpha       设置该组件透明度

    android:layout_height   子组件的布局高度

    android:layout_width    子组件的布局宽度

    android:layout_margin   设置控件与控件之间或者是控件与布局之间的间距

    android:layout_marginLeft  左

    android:layout_marginRight   

    android:layout_marginTop  上 

    android:layout_marginBottom  

    android:padding    填充  设置控件的边框与内容的距离

    android:paddingLeft 

    android:paddingRight 

    android:paddingTop  

    android:paddingBottom  

    五、LinearLayout:【掌握】

    1、概念:线性布局控制其中的控件或组件横向或纵向排列。不线性布局布局中,每一行或每一列只能放一个控件。并且线性布局不会换行。当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。

    线性布局的默认方向是水平方向(Horizontal)。

    2LinearLayout的常用属性:

    1android:orientation表示指定当前现形布局中的控件的摆放方

    horizontal  水平摆放  表示布局中每个控件都单独的占据一列

    vertical  竖直摆放  表示布局中的每个控件淡定占据一行

    2android:layout_width    定义控件的宽度

    可选项:fill_parent / match_parent/ wrap_content/绝对数值

    【备注】:fill_parent / match_parent的效果完全一致,都是填充整个父控件。但是自2.2版本开始推荐使用match_parent 

    wrap_content 包裹内容 指的是当前控件或者是布局与控件中的内容或者布局中的内容大小一致

    match_parent 填充  指的是当前控件填充功夫不惧的尺寸  当前的

    布局填充手机屏幕

       fill_parent  含义同match_parent  4.0之前使用

    3android:layout_height    定义控件的高度

    可选项:fill_parent / match_parent/ wrap_content/绝对数值

    android:layout_width相同

    4android:id   设置控件的id。这样就可以在R.java中自动生成相应的值,在程序中通过findViewById就可以调用。

    设置id的格式为:android:id = "@+id/id的名字"

    5android:background  设置控件的背景颜色或背景图片

    例如:android:background="#ffffff"

             android:background="@drawable/图片名称"

    【备注:】颜色有RGB(red green blue)颜色格式和ARGB格式。GRB是红绿蓝三原色。而ARGB是带alpha的三原色,即有透明度的三原色。

    6android:gravity 该属性用来控制该View的内容物的位置。

    a、如果该属性是定义在布局节点中,则该布局中所有控件的位置都受到这个属性的控制。

    b、如果该属性出现在ButtonTextViewEditText等控件中,则用来控制这些控件上的文字的位置。

    7android:layout_gravity  定义在控件中表示控件相对父布局的位置

    可选项有:topbottomleftrightcenter_verticalfill_vertical 、 centerfill等等。

    注意:这些可选项中不是适用于每一种布局。在垂直线性布局中,android:gravitybottom不起作用;而水平线性布局中,android:gravityright不起作用。

    8android:layout_weight 表示控件占据剩余空间的比例

    如果线性布局竖直摆放并且需要均分竖直方向

    方式一:

    android:orientation="vertical"

    android:layout_width="match_parent"

             android:layout_height="wrap_content"

             android:layout_weight="1"

    方式二:

    android:orientation="vertical" 

            android:layout_width="match_parent"

            android:layout_height="0dp"

           android:layout_weight="1"

    如果线性布局水平摆放并且需要均分水平方向

    方式一:

    android:orientation="horizontal" 

             android:layout_width="wrap_content"

             android:layout_height="match_parent"

             android:layout_weight="1"

    方式二:

    android:orientation="horizontal" >

             android:layout_width="0dp"

             android:layout_height="match_parent"

             android:layout_weight="1"

            

    注意:

    1LinearLayout的特有属性:【重新归纳:去除公共属性后的特有属性】

    aandroid:orientation    布局管理器内组件的排列方式

    bandroid:gravity    设置布局管理器内组件的对齐方式

    2LinearLayout 子元素的特有属性:

    aandroid:layout_weight  子元素在 LinearLayout 中所占的权重

    bandroid:layout_gravity   子元素在 LinearLayout 中的对齐方式

    五、基本控件---- TextView

    TextView类结构:

    java.lang.Object

            ↳ android.view.View

               ↳ android.widget.TextView

      

    六、TextView控件

    1andorid:text   设置文本的内容

    2android:textColor    设置文本的颜色

    3android:textSize     设置文本的字体大小(sp

    4android:textStyle  设置字体样式 默认是normal  如果需要设置两个需要 隔开  bold|italic

    5android:background  设置背景色

    6android:layout_height 设置文本的高度,以像素为单位

    7android:layout_width  设置文本的宽度,以像素为单位

    8android:inputType 设置文本的类型。

    例如:普通文本,emailpassword,数字等等。

    9android:lines 设置文本框的行数 

    10android:singleLine   设置文本是否是单行显示。如果为true表示单行显示

    11android:gravity   设置文本框内文本的对齐方式。

    可选项有:topbottomleftrightcenterfillcenter_verticalcenter_horizontalfill_horizontal等等。这些属性值也可以同时指定,各属性值之间用竖线隔开。例如right|bottom

    12android:drawableLeft    用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。

    13android:drawableRight   用于在文本框右侧绘制图片。该属性值通过

    @drawable/图片文件名”来设置。

    14android:drawableTop    用于在文本框上侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。

    15android:drawableBottom 用于在文本框下侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。

    16android:autoLink   根据指定的链接的类型自动添加链接

    可选项为:nonewebemailphonemapall

    17android:hint    设置当文本框内文本内容为空时,默认显示的提示性文字。

    18android:ellipsize  设置当前省略的位置

     【补充:】

    1android:textAllCaps="true"     设置所有字母都大小

    2android:ellipsize="end" 文字过长,设置省略号在结尾。

    可选项:start , end ,middlemarquee

             【备注:】要实现跑马灯效果。要同时具有以下属性。

                 android:ellipsize="marquee" 

                 android:singleLine="true"  

                 android:focusable="true" 

                 android:focusableInTouchMode="true" 

                 android:marqueeRepeatLimit="marquee_forever"

    七、EidtTest控件

    1android:hint  设置文本编辑框输入的提示信息

    2android:maxLenght 设置当前文本编辑框输入的最大的输入数目

    4android:password  设置密码框

    5android:inputType设置当前的编辑框的输入类型  通过限制软件盘的类型限制编辑框的输入类型

      可选项:textPersonName  textPassword  numberPassword  

       textEmailAddress  phone  textPostalAddress  time

               date  number

    6android:imeOptions 指定软件盘的回车键变成相应的功能键

    可选项:actionNext(下一个)  actionSend(发送)  actionGo(前往

    actionSearch(搜索)  actionDone (完成)  number(数字)

    7android:imeActionLable 指定按钮中展示的文本内容

      例如:android:imeActionLabel="@string/launch"

    八、Button按钮

    1android:background=”@null” 去掉按钮图片的背景

    2android:drawableTop 在按钮的上方设置指定的图片

    3android:drawableButtom 在按钮的上方设置指定的图片

    4android:drawableLeft 在按钮的上方设置指定的图片

    5android:drawableRight 在按钮的上方设置指定的图片

    button按钮添加单击事件 

     方式一:

    1、在Button按钮所在的xml布局文件中的<Button>标签中添

    OnClick属性  并指定属性值 如:<Button onClick="click">

       2、在加载Button按钮的activity中需要定义与OnClick属性的值同名

    的方法 public void click(View v){}

          方法的特点

    1)访问修饰符必须是public

              2)返回值必须是void

              3)方法的参数必须是唯一的View类型

              4)方法名必须和OnClick的属性值完全相同

       3、将点击按钮进行的操作放到当前方法中做

    多个按钮的处理事件

    方式二:

            1.<Button>标签当中添加id属性 <Button id="@+id/btn">

            2..java文件中通过findviewById()获取当前的按钮对象

            3.通过Button按钮对象setOnClickListener()设置单击事件监听器

               监听器需要OnClickListener接口类型的对象 可以声明内部类实现这个接口重写OnClick()方法

            当点击按钮时会回调OnClickListenerOnClick()方法

    案例代码:

          方式三:

             1、在<Button>标签当中添加id属性 <Button id="@+id/btn">

             2.java文件中通过findviewById()获取当前的按钮对象

             3、通过Button按钮对象setOnClickListener()设置单击事件监听器 采用匿名内部类的形式

             案例代码:

    方式四:

              1、在<Button>标签当中添加id属性 <Button id="@+id/btn">

              2.java文件中通过findviewById()获取当前的按钮对象

              3、当前的activity实现OnClickListener接口 重写OnClick()方法

              4、按钮对象的setOnClickListener(this)设置单击事件监听器

    案例代码:

    在有限的人生中,你总是在追寻更大的世界, 在忙碌中,赢得更多人生财富, 也在前进中,扩展生命的宽度, 活在当下,去收获更多激情,也活出自我,懂得放弃更多,每一次的自由,让心更辽阔, 你走得越远,就越知道, 世界再大,总有牵挂, 因为,爱,一直都在!
  • 相关阅读:
    ubuntu下常用的apt-get 命令参数
    探索equals()和hashCode()方法
    Java多线程编程核心技术
    线程的状态
    详解Java中的clone方法
    为什么String类是不可变的?
    深入理解final和static关键字
    彻底理解ThreadLocal
    反射消除String类对象的不可变特性
    进程和线程
  • 原文地址:https://www.cnblogs.com/xiaoxiaoshen/p/5103773.html
Copyright © 2020-2023  润新知