简介
在Android官网中有对UI 优化的文档,开发者有必要对它进行掌握。
详解
1、抽象布局
<include />标签能够重用布局文件
<include layout="@layout/titlebar"/>
<merge/>标签可以删减多余的层级,它多用于替换FrameLayout或者当一个布局包含另一个时,消除视图层次结构中多余的视图组
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/delete"/> </merge>
<ViewStub />标签使用它的优点是需要时才会加载,它并不会影响UI初始化时的性能。各种不常用的布局都可以使用<ViewStub />标签,以减少内存使用量,加快渲染速度。
<ViewStub android:id="@+id/stub_import" android:inflatedId="@+id/panel_import" android:layout="@layout/progress_overlay" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" />
2、Android样式和主题
android中的样式是用于为界面元素定义显示风格,它是一个包含一个或者多个view控件属性的集合。
Android 允许在外部样式文件中定义 Android 应用程序的 Look 和 Feel ,你可以将定义好的样式应用在不同的视图(Views)上。你可以在 XML 文件中定义样式,并将这些样式运用到不同的组件上。使用XML这种方式定义样式,你只需要配置一些通用的属性,以后如果需要修改样式,可以集中修改。
你可以在你 Android 项目的 /res/values 文件下创建一个 XML 文件,注意给文件的根目录必须是 <resources>。下面的例子将展示在 /res/xml目录下创建 style.xml 文件。
定义和使用如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name=“itcast”> <!-- 为样式定义一个全局唯一的名字--> <item name="android:textSize">18px</item> <!-- name属性为样式要用在的View控件持有的属性 --> <item name="android:textColor">#0000CC</item> </style> </resources>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" .> <TextView style="@style/itcast" .. /> </LinearLayout>
主题是针对应用中所有Activity或者针对某个Activity设置样式,可以通过编辑AndroidManifest.xml来完成。
主题相比单个视图而言,是应用到整个 Activity 或者 application 的样式。下面例子将自定义一个主题,该主题将继承 Android 定义好的主题。
定义和使用如下:
<activity android:theme="@style/wrap_content">
<activity android:theme="@android:style/Theme.Dialog">
3、ViewFlipper
它的作用是什么呢,就是一个简单的ViewAnimator,将添加到ViewFlipper的View形成动画。但是在一个时间点只要一个View显示。当然,也可以设置让动画自动的有规律的显示。
4、Fragment框架
什么是Fragment?Fragment是一个片段,寄生于Activity的上下文中,Fragment拥有一个与它相关的视图层次结构,拥有一个与活动非常相似的生命周期。
Fragment的作用是什么?Activity有一个局限,不能将多个Activity活动界面放在屏幕上一并显示。因此创建了Fragment来弥补Activity的局限。Fragment可以像Activity一样响应Back键等类似Activity的功能。
Fragment的生命周期如图: