Android UI优化—使用stytle

使用style替换背景,防止Activity黑色背景闪过


1.原来的布局

复制代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="@drawable/img_bg"
              android:orientation="horizontal">

    <Button
        android:layout_weight="1"
        android:layout_width="0"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button2"/>

    <Button
        android:layout_weight="1"
        android:layout_width="0"
        android:layout_height="wrap_content"
        android:text="New Button1"
        android:id="@+id/button3"/>


</LinearLayout>
复制代码

 

这里写图片描述

这里我们用了android:background="@drawable/img_bg"来设置了背景图片,但是当我们启动activity是有时候会出现一个黑色的背景,然后才出现我们设置的背景,给用户感觉我们的程序运行的很慢

2.解决办法

复制代码
<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="android:background">@drawable/img_bg</item>
    </style>
</resources>
复制代码

我们可以给主题设置一个背景,这样就不会给用户感觉我们的应用卡住了

3.知其然知其所以然

1.因为程序的主题是在程序启动的时候加载
2.Layout中设置的背景实在Activity启动之后才加载
所以会让用户看到一个黑色背景闪过的过程。

Android UI优化—优化布局层次

优化布局层次


1.避免布局镶嵌过深(如下)

复制代码
<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"
              tools:context=".MainActivity">

    <LinearLayout
        android:id="@+id/main_ll_duoyu"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:text="@string/hello_world"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_horizontal"
            android:layout_gravity="center_vertical"
            >

            <TextView
                android:text="@string/hello_world"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

        </LinearLayout>

    </LinearLayout>

</LinearLayout>
复制代码

 

 

 

我们完全可以去掉id为:main_ll_duoyu的这个LinearLayout,也可以实现我们想要的效果(效果如下)
这里写图片描述

2.使用工具查看布局

  • 工具路径

sdk\tools\hierarchyviewer.bat | 双击打开

  • 查看布局对比
    这里写图片描述
    这里写图片描述
    这里写图片描述

我们现在去掉了main_ll_duoyu的这个LinearLayout,我们比一下前两张图和*有一张图,中间少了一层,这里只是给举个例子,可以使用google提供的这些工具帮助我们优化app,增加用户体验的流畅性

3.默认*大布局深度

android 默认的对打布局深度为10