zoukankan      html  css  js  c++  java
  • Android实现入门界面布局

    Android实现入门界面布局

    开发工具:Andorid Studio 1.3
    运行环境:Android 4.4 KitKat

    代码实现

    首先是常量的定义,安卓中固定字符串应该定义在常量中。

    strings.xml

    <resources>
        <string name="app_name">Exp1</string>
    
        <string name="title_activity_personal_info">PersonalInfo</string>
        <string name="welcome_info">Welcome to first Android Class</string>
        <string name="personal_info">个人信息</string>
        <string name="submit">提交</string>
        <string name="student_id">学号</string>
        <string name="name">姓名</string>
        <string name="man">男</string>
        <string name="woman">女</string>
        <string name="register">Register</string>
        <string name="login">Login</string>
        <string name="user">user:</string>
        <string name="input_hint">Input Your User Account Here</string>
        <string name="input_password">password:</string>
        <string name="pick_aspect">选择你的方向</string>
        <string name="pick_birthday">选择你的生日</string>
    </resources>
    

    color.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="green">#0eff2e</color>
        <color name="purple">#ff18c5</color>
    </resources>
    

    arrays.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="aspect">
            <item>移动</item>
            <item>软院</item>
            <item>管理</item>
            <item>政务</item>
            <item>环境</item>
        </string-array>
    </resources>
    

    界面一:(LinearLayout、TableLayout)

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="@string/welcome_info"
            android:id="@+id/title"
            android:textColor="@color/green"
            android:textSize="25sp"
            android:gravity="center"/>
    
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/logoImage"
            android:src="@mipmap/crab"/>
    
        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            >
            <TableRow>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/user"
                    />
                <EditText
                    android:layout_height="wrap_content"
                    android:layout_width="fill_parent"
                    android:hint="@string/input_hint"/>
            </TableRow>
            <TableRow>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/input_password"/>
                <EditText
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"/>
            </TableRow>
    
        </TableLayout>
    
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center">
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/login"
                android:id="@+id/btn_login" />
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/register"
                android:id="@+id/btn_register" />
        </LinearLayout>
    
        <ProgressBar
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/progressBar"
            android:layout_gravity="center_horizontal" />
    </LinearLayout>
    

    注意:

    1. 外层的定义可以使用LinearLayout,加上属性android:orientation="vertical",就变成了线性垂直布局,这是安卓开发中比较常用的基本布局。
    2. TableLayout中实现占据一行剩余空间还有另一种实现方法,<EditText android:layout_width="0dp" android:layout_weight="1" />,重点就在于layout_weight这上面。
    3. 两个button水平居中的实现使用的是嵌套布局,也就是在Layout中还有Layout,但要合理使用Layout,避免区域重复渲染,安卓开发者人员调试工具中可以看到渲染情况。

    界面二:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:orientation="vertical">
    
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/purple">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/personal_info"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end"
                android:text="@string/submit"
                android:minWidth="100dp"
                android:id="@+id/submit"/>
        </FrameLayout>
    
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@mipmap/avatar"
                android:id="@+id/avatar" />
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical">
                <EditText
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="@string/student_id"/>
                <EditText
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:hint="@string/name"/>
                <RadioGroup
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">
                    <RadioButton
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/man"/>
                    <RadioButton
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/woman"/>
                </RadioGroup>
            </LinearLayout>
        </LinearLayout>
    
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/pick_aspect"/>
        <Spinner
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/aspect"
            android:entries="@array/aspect"
            android:prompt="@string/pick_aspect">
        </Spinner>
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/pick_birthday"/>
        <DatePicker
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:calendarViewShown="false">
    
        </DatePicker>
    
    </LinearLayout>
    

    注意:

    1. FrameLayout会将所有的子元素放在整个布局的左上角,后面的子元素会直接覆盖前面的子元素,因此需要添加layout_gravity参数控制方向。

    效果图

    由于是真机测试,因此给两个按钮加入了跳转响应,这些内容在后面的博客中再讲实现。

    cant show cant show

    一些总结

    学到的东西:

    • android:orientation="vertical"
      布局的方向
    • android:layout_width="match_parent"
      和父级元素同样的宽度
    • android:layout_width="fill_parent"
      填充父级元素剩余的宽度
    • android:layout_height="wrap_content"
      根据内容来决定高度
    • android:gravity="center"
      决定自动靠拢的位置
    • android:textColor="@color/green"
      修改文本中文字的颜色
    • android:src="@mipmap/crab"
      图片的源地址
    • android:layout_gravity="center_horizontal"
      水平居中
    • android:minWidth="100dp"
      最小的宽度设置
    • android:background="@color/purple"
      布局控件的底色
    • android:entries="@array/aspect"
      Spinner控件的静态内容
    • android:calendarViewShown="false"
      DataPicker隐藏日历的方法

    不同的Layout的简要不同:

    Layout名称 区别
    LinearLayout 按照水平或垂直的顺序将子元素(可以是控件或布局)依次按照顺序排列,每一个元素都位于前面一个元素之后
    TableLayout 适用于多行多列的布局格式,每个TableLayout是由多个TableRow组成,一个TableRow就表示TableLayout中的每一行,这一行可以由多个子元素组成
    RelativeLayout 按照子元素之间的位置关系完成布局
    FrameLayout 将所有的子元素放在整个界面的左上角,后面的子元素直接覆盖前面的子元素
    AbsoluteLayou 将所有的子元素通过设置android:layout_x 和 android:layout_y属性,将子元素的坐标位置固定下来
    GridLayout 使用虚细线将布局划分为行、列和单元格,也支持一个控件在行、列上都有交错排列

    工程下载

    传送门:下载

  • 相关阅读:
    windows中dos命令指南
    HDU 2084 数塔 (dp)
    HDU 1176 免费馅饼 (dp)
    HDU 1004 Let the Balloon Rise (map)
    变态杀人狂 (数学)
    HDU 2717 Catch That Cow (深搜)
    HDU 1234 开门人和关门人 (模拟)
    HDU 1070 Milk (模拟)
    HDU 1175 连连看 (深搜+剪枝)
    HDU 1159 Common Subsequence (dp)
  • 原文地址:https://www.cnblogs.com/wsine/p/5168787.html
Copyright © 2011-2022 走看看