zoukankan      html  css  js  c++  java
  • android用户界面编程技巧——背景和图像的开发技巧

    前面给大家分享了listview中adapter的开发技巧,下面我继续跟着2009年google开发大会上当分享的技巧给大家分享背景和图像的开发技巧。

    • 视图背景的优化

    视图的背景是根据视图的大小自动调节的。不管图像的尺寸是多大,如果图像做为视图的背景的时候,图像会自动缩放来匹配填充视图的大小。当视图大小和背景图片的尺寸不匹配的的时候,系统会自动的缩放图片。这样的自动调整如果多次甚至大量的出现在我们的应用中,那么势必会造成程序加载到延时、效率降低。那么我们如何尽量的避免自动缩放呢?

    一、提供的背景图片正好和视图的大小一致

    我们在制作程序的时候选择的背景图片正好和视图的大小一致,这样可以避免背景图标的自动缩放。

    有些时候我们受到一些因素的制约可能做不到这一点。例如横竖屏的差异、图片来源不受我们控制等等原因。那么这个时候我们可以考虑将图片进行预先缩放。

    二、背景图片预先缩放,减少缩放次数。

    预先缩放图片之后,在试图每次显示的时候就每次都去缩放图片。而是采用我们预先缩放好的图片,着可以提高效率。

    originalImage = Bitmap.createScaledBitmap(
    originalImage,
    // 缩放图像
    view.getWidth(), // 视图宽度
    view.getHeight(), // 视图高度
    true); // 线性过滤器

    背景图片采用预先缩放的技巧和自动缩放的frame刷新频率比较如下:

    左边为自动缩放的刷新频率是每秒25个frame,右边是才有预先缩放技巧的刷新率是每秒50个frame 。效率提高了50%。

    • 窗口背景的优化

    视图有背景,每个窗口也是有背景的。每一Activity是一个窗口,每一个Activity都有不同得背景。界面的绘画顺序如下:窗口——跟视图——子视图。当我们的跟视图已经覆盖了整个窗口的时候 ,程序还是会画一个透明的窗口的背景,而这个背景用户是看不到的。我们就需要想办法让程序在这样的情况下去掉窗口背景,节约画窗口背景的时间提高效率。

    删除窗口背景的方法:

    一、java代码中

    复制代码
    publicvoid onCreate(Bundle icicle){
    super.onCreate(icicle);
    setContentView(R.layout.mainview);
    // 删除窗口背景
    getWindow().setBackgroundDrawable(null);
    ...
    复制代码

    二、在xml文件中

    首先在res/values/style.xml 文件中定义如下:

    复制代码
    <resources>
    <style name="NoBackgroundTheme" parent="android:Theme">
    <item name="android:windowBackground">@nullitem>
    style>
    resources>
     
     
    复制代码

    然后在AndroidManifest.xml文件中 找到要去掉背景的activity  书写代码如下:

    <activity android:name="MyApplication"
    android:theme
    ="@style/NoBackgroundTheme">
    ...
    activity>

    在xml中使用时首先要检查一下时候有NoBackgroundTheme这个参数可用。

    可以看到如果画了透明的窗口背景的时候刷新频率是每秒43个frame,如果删除掉窗口背景刷新频率是53个frame。

    后面给大家分享跟新请求、视图和布局、内存分配方面的开发技巧。

    再次申明着一下这些开发技巧是2009年google开发者大会上官方的开发技巧。

  • 相关阅读:
    在C#中使用SQL存储过程说明
    asp.net后台获取html控件值
    SQL字符串操作汇总[记住这个]select substring(quantityperunit,charindex('',quantityperunit)+1,100) as 结果 from products
    分页控件AspnetPager的用法,巩固用
    摆脱Access在.net中中模糊查询,老错的困扰
    基于黑金开发板的秒表verilog hdl程序
    2808 sci 接收中断
    黑金开发板状态机实现的可用按键控制的流水灯
    基于黑金开发板的键盘边沿检测程序
    可以使用键盘实现加减数的数码管的verilog hdl程序(基于黑金开发板)
  • 原文地址:https://www.cnblogs.com/xiaoran1129/p/2794770.html
Copyright © 2011-2022 走看看