`
Darar
  • 浏览: 88776 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android UI 优化-使用theme 预加载

 
阅读更多
在很多时候,我们需要给一个Layout设置一个背景。例如,我们下下面的layout中使用了这样一个背景:
  <?xml version=”1.0″ encoding=”utf-8″?>
        <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”    android:orientation=”vertical”
        android:layout_width=”fill_parent”
        android:layout_height=”fill_parent”
        android:background=”@drawable/antelope_canyon”>
        <TextView android:text=”@+id/TextView01″
        android:id=”@+id/TextView01″
        android:layout_width=”wrap_content”
        android:layout_height=”wrap_content” >
        </TextView>
         
</LinearLayout>


其中的LinearLayout使用了 背景图片antelope_canyon。

如果仔细观察程序的运行过过程,我们首先看到了黑色的activity背景,然后才看到背景图被加载,那是因为在activity start以后,我们才能调用setContentView设置我们的layout,然后才绘制我们在layout中放置的背景图。而在此之前,程序中绘制的是android中默认黑色背景。 这样会给用户感觉我们的activity启动较慢。
然而,如果将背景图定义在一个主题中,如下:

 <?xml version=”1.0″ encoding=”utf-8″?>
<resources>
        <style name=”Theme.Droidus” parent=”android:Theme”>
        <item name=”android:windowBackground”>@drawable/antelope_canyon</item>
        <item name=”android:windowNoTitle”>true</item>
        </style>
</resources>

然后在activity中使用这个主题 :
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
        package=”com.droidus”
        android:versionCode=”1″
        android:versionName=”1.0″>
        <application android:icon=”@drawable/icon” android:label=”@string/app_name”>
        <activity android:name=”.SpeedUpStartupActivity”
        android:label=”@string/app_name”
        android:theme=”@style/Theme.Droidus”
        >
        <intent-filter>
        <action android:name=”android.intent.action.MAIN” />
        <category android:name=”android.intent.category.LAUNCHER” />
        </intent-filter>
        </activity>
         
        </application>
        <uses-sdk android:minSdkVersion=”4″ />
         
 </manifest>

运行程序,可以看到背景图马上显示了,没有再看到黑色的背景图。

为什么会有这样的现象呢?那是因为 程序的主题是在程序启动的时候加载的,而不是在activity启动之后加载!
而如果在layout使用背景,背景图是在activity启动之后才加载,故而会让用户看到一个黑色背景闪动的过程。
分享到:
评论

相关推荐

    Android MVVM框架使用(十三)UI更新 (App启动白屏优化、适配Android10.0深色模式)

    3. **预加载资源**:在Application类中预加载必要的资源,如图片、字体等,减少启动时的等待时间。 4. **优化启动性能**:对代码进行优化,减少启动时的内存占用,比如避免在启动时执行不必要的初始化操作。 接...

    Android应用程序启动白屏黑屏优化

    - **预加载技术**:预先加载部分数据和资源,减少初次加载时的等待时间。 - **使用启动画面**:为应用程序设计一个专门的启动画面,可以在Activity完全加载之前显示,提供更好的视觉效果和用户体验。 综上所述,...

    安卓 android 应用启动 加载 界面 实现

    - **预加载数据**:如果应用需要从网络获取数据,可以在后台服务或JobScheduler中预加载,减少用户等待时间。 - **智能判断**:如果数据已经缓存或之前已加载过,可以跳过加载界面直接进入主界面。 - **优化启动时间...

    android自定义主题

    - 使用`Typeface`对象加载自定义字体文件,并应用到控件。 8. **自定义颜色资源** - 创建`color`资源文件,定义颜色资源,如`colorPrimary`、`colorSecondary`等。 - 使用`&lt;color&gt;`标签定义颜色,支持ARGB格式。...

    新版Android开发教程+笔记七--基础UI编程

    Android使用布局管理器来组织和排列UI组件。常见的布局包括线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)和网格布局(GridLayout)。线性布局按照垂直或水平方向排列组件,相对布局...

    Android 仿ios spanner

    - 性能优化:合理使用ViewHolder模式减少视图复用时的查找成本,避免一次性加载过多数据,可以采用懒加载策略。 6. **无障碍功能**: - 考虑到无障碍功能,确保选择器支持TalkBack等辅助技术,提供合适的焦点导航...

    集android众多UI组件于一体的实例

    总之,“集android众多UI组件于一体的实例”是一个全面展示Android UI设计的实践项目,通过这个项目,开发者不仅可以了解和掌握各种Widget控件的使用,还能学习到Android UI设计的各种技巧和最佳实践,从而提升应用...

    【android开发】省钱达人UI

    在Android中,可以使用主题(Theme)和样式(Style)来统一应用程序的视觉风格。主题可以全局改变应用的外观,比如颜色、字体等;样式则可以局部应用于特定控件,实现定制化设计。 五、触摸事件处理 Android应用...

    Navigation-Drawer-Android-Design-Support-Library-with-Fragments:使用Android设计支持库中的“导航视图”,使用带有片段的导航抽屉

    7. **主题和样式**:为了符合Material Design规范,可以自定义主题或使用预设的主题,如`Theme.AppCompat.Light.DarkActionBar`,确保NavigationView的外观与应用整体风格一致。 8. **动画和过渡效果**:Android...

    《android培训》来源于jollen的bolg

    - WebView用于在Android应用中加载和显示网页内容。这一部分可能会讲解WebView的使用方法及其相关API。 - **#7: TableLayout** - TableLayout是一种常用的布局容器,用于展示表格形式的数据。这里会介绍...

    Jquery mobile 中文开发文档

    - **预加载(Preloading)**:使用 `$.mobile.loadPage()` 预加载页面,减少用户等待时间。 - **优化图片(Image Optimization)**:使用适当的图片格式和尺寸,减小文件大小。 ### 7. 兼容性和测试 - **跨平台...

    Android-可灵活定制的主题支持库

    在Android系统中,主题(Theme)是一系列UI元素的外观和行为规范,包括颜色、字体、布局样式等。通过设置主题,可以统一应用的整体风格,同时减少代码中的硬编码颜色值,使得修改更方便。传统的Android主题通常在...

    android换肤demo1

    这可能涉及到预加载皮肤资源,或者使用高效的资源加载策略。 7. **兼容性测试**:由于Android设备的多样性,换肤功能需要在各种设备和Android版本上进行广泛的测试,确保在所有环境下都能正常工作。 8. **热更新与...

    android主题设置与主题切换

    例如,创建一个名为`CustomTheme`的主题,可以通过设置`parent`属性继承自Android预定义的主题,然后自定义需要修改的属性。 ```xml &lt;style name="CustomTheme" parent="Theme.AppCompat.Light.DarkActionBar"&gt; ...

    android splash demo 源代码

    "AdvancedSplashDemo"可能采用了预加载策略,将部分资源在后台加载,减少用户等待时间。 8. **适配不同设备和屏幕尺寸**: - 考虑到Android设备的多样性,"AdvancedSplashDemo"可能包含了针对不同屏幕尺寸和分辨率...

    android程序换皮肤之一

    - 可以考虑使用动态加载技术(如DexClassLoader)加载不同皮肤的资源类,进一步优化性能。 总结,Android程序换肤是一个涉及资源管理、主题应用和用户体验的复杂过程。通过理解皮肤的概念、原理以及实现步骤,...

    Android应用源码之ChangeTheme_new.rar

    在Android应用开发中,主题(Theme)是一种强大的工具,它允许开发者通过全局的方式改变应用程序的外观和风格。这个"ChangeTheme_new.rar"压缩包提供的源码可能是为了展示如何在Android应用中实现动态更换主题的功能...

    Android应用源码之 程序启动界面Demo.zip

    2. 异步加载:如果需要预加载数据,尽量在后台线程进行,避免阻塞UI。 3. 启动速度:减少启动界面的资源占用,如减小图片大小,避免复杂的布局和计算。 4. 判断应用是否已初始化:如果应用已经初始化完成,可以跳过...

    Android 无闪烁启动画面程序源码.zip

    6. **预加载布局**: 在启动画面加载过程中,预先初始化主界面的布局和数据,减少从启动画面到主界面切换时的等待时间。 7. **优化资源加载**: 对图片和其他资源进行压缩,或者使用懒加载策略,减少启动时的内存占用...

    Android应用源码之MyGallery.zip

    为了提高用户体验,源码中可能还实现了图片的预加载策略,确保用户在滑动时能快速看到下一张图片。 总的来说,通过分析MyGallery的源码,开发者可以学习到如何在Android平台上构建一个功能完善的图片浏览应用,包括...

Global site tag (gtag.js) - Google Analytics