Android中UI设计的优化

jopen 10年前
1.使用安卓include标签
   在我们安卓布局使用布局文件可以对各个控件的位置和属性进行设置,但是在布局一个复杂的界面,这样使得界面比较繁杂不明朗清晰,所以可以使用一个特殊的标签来实现特殊的功能,那就是include标签了,顾名思义包含标签,它可以使几个不同的布局文件整合在一起。
  具体如下:
主布局 :include_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <include
        android:id="@+id/child1"
        android:layout_height="416dp"
        layout="@layout/include_child1" />
    <include 
        android:id="@+id/child2"
        layout="@layout/include_child2"
        />
</LinearLayout>
  子布局1:include_child1
   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView 
        android:text="include子布局1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>
子布局2:include_child2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView 
        android:text="include子布局2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
</LinearLayout>
这样布局程序可读性大大提高,模块清晰明朗。
2.自定义控件效果
在 res文件下 创建(folder)文件-文件名为drawable,然后再其文件下创建xml文件,其下面可供选择的有shape形状、gradient渐变、圆角corners、Stroke描边、solid实心、rotate旋转、selector选择器等等
常用shape selector如下
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <corners android:radius="5.0dip"></corners>
    <padding android:right="5dip" android:bottom="5dip"></padding>
    <solid  android:color="#1d953f"></solid>
    <stroke android:width="5.0dip" android:color="#1d9530"></stroke>
</shape>
根据自己的需求来设置参数 ,其中还可以设置其形状android:shape="oval"oval为椭圆形,ring环形,rectangle矩形,直线型line;
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="false" android:drawable="@drawable/normal"></item>
    <item android:state_focused="false"  android:drawable="@drawable/normal"></item>
    <item android:state_pressed="true" android:drawable="@drawable/press"></item>
    <item android:state_focused="true"  android:drawable="@drawable/focused"></item>
</selector>
android:state_focused这个为获取焦点事件,android:state_pressed为按下事件 可以自己定义其获取焦点前后和按下按键前后效果,其中@drawable/可添加图片和自定义的drawable布局
最后在控件引用的时候:android:background="@drawable/你自定义文件" 注意在chechbox等一些控件自定义时要使用android:button="@drawable/你自定义文件",或者在style文件中设置 <style name="logincheckbox" parent="@android:style/Widget.CompoundButton.CheckBox">
      <item name="android:button">@drawable/logincheckbox</item> 
   </style>
控件引用的时候 用style="@style/style名字"
3.巧妙的使用style来定义效果
<style name="CustomButton" parent="@android:style/Widget.Button"> 
        <!-- 水平、垂直居中 --> 
        <item name="android:gravity">center_vertical|center_horizontal</item> 
        <!-- 字体颜色 --> 
        <item name="android:textColor">#FFFFFFFF</item> 
        <!-- 指定文本阴影的颜色,需要与shadowRadius一起使用 --> 
        <item name="android:shadowColor">#FF000000</item> 
        <!-- 设置阴影横向坐标开始的位置 --> 
        <item name="android:shadowDx">0</item> 
        <!-- 设置阴影纵向坐标开始的位置 --> 
        <item name="android:shadowDy">-1</item> 
        <!-- 设置阴影的半径,设置为0.1就变成文本的颜色了 --> 
        <item name="android:shadowRadius">0.2</item> 
        <item name="android:textSize">16sp</item> 
        <item name="android:textStyle">bold</item> 
        <!-- 这里引用定义的按钮样式 --> 
        <item name="android:background">@drawable/custom_button</item> 
        <item name="android:focusable">true</item> 
        <item name="android:clickable">true</item> 
    </style> 
根据自己的需要灵活巧妙的来设置其属性来满足需求
4.巧妙地使用动画效果
5.使用九妹(.9patch)无失真图片拉伸处理