- 浏览: 139997 次
- 性别:
- 来自: 北京
最新评论
-
66jacky:
请问,如果要把某些信息写tag或者修改tag怎么做?
利用《Java MP3 ID3 Tag Library》读取mp3文件ID3信息 -
snowtree_ok:
老大,id3v2还是乱码哦。id3v1你是怎么改的呢?能帮忙发 ...
利用《Java MP3 ID3 Tag Library》读取mp3文件ID3信息 -
yuyuyc:
利用《Java MP3 ID3 Tag Library》读取mp3文件ID3信息 -
qianxueyiran:
老大,能把修改后的jid3lib的源码发给我一份吗,我用你的j ...
利用《Java MP3 ID3 Tag Library》读取mp3文件ID3信息 -
airpeng:
import java.io.File;
import jav ...
利用《Java MP3 ID3 Tag Library》读取mp3文件ID3信息
有一句古话:不论黑猫白猫,能抓到耗子就是好猫。这个也许在某些方面是有道理的,但对于我们追求精益求精的思想是背道而驰的,往往就是因为满足于一个结果,而放弃探求更加优化的处理方法。
当关注应用程序或者游戏所达到的结果时,往往非常容易忽视一些优化的问题,例如内存优化,线程优化,Media优化和UI优化等等。不同的模块都存
在更为巧妙的方式来对待一般性问题,所以每当我们实现一个行为后,稍微多花一些时间来考虑目前所作的工作是否存在更为高效的解决办法。
这一次我们对常用的UI Layout优化说起,这个例子转载于 android developing blog
在Android中最常用
LinearLayout
表示UI的框架,而且也是最直观和方便的方法。例如创建一个UI用于展现Item的基本内容。如图所示:
线框图:
直接可以通过LinearLayout快速的实现这个UI的排列:
?
[url=javascript:;]View Code[/url]
XML xmlns:
android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
android:orientation="vertical"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="fill_parent">
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="My Application" />
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:singleLine="true"
android:ellipsize="marquee"
android:text="Simple application that shows how to use RelativeLayout" />
>
>
尽管可以通过Linearlayout实现我们所预想的结果,但是在这里存在一个优化的问题,尤其是针对为大量Items。比较RelativeLayout和LinearLayout,在资源利用上前者会占用更少的资源而达到相同的效果,以下是用
RelativeLayout
实现的代码:
?
[url=javascript:;]View Code[/url]
XML xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
android:id="@+id/secondLine"
android:layout_width="fill_parent"
android:layout_height="26dip"
android:layout_toRightOf="@id/icon"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:singleLine="true"
android:ellipsize="marquee"
android:text="Simple application that shows how to use RelativeLayout" />
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/icon"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_above="@id/secondLine"
android:layout_alignWithParentIfMissing="true"
android:gravity="center_vertical"
android:text="My Application" />
>
针对RelativeLayout有一点需要注意,因为它内部是通过多个View之间的关系而确定的框架,那么当其中某一个View因为某些需要调用
GONE
来完全隐藏掉后,会影响与其相关联的Views。Android为我们提供了一个属性
alignWithParentIfMissing
用于解决类似问题,当某一个View无法找到与其相关联的Views后将依据
alignWithParentIfMissing
的设定判断是否与父级View对齐。
下边是两种不同layout在Hierarchy Viewer中的层级关系图:
简单或复杂的问题都需要时常考虑如何优化资源的分配。比如一个功能很简单的应用程序,它会调用一些我们常用的对话框或者输入面板,这需要采用统一的方式来针对不同的应用程序制定统一标准。
当我们面对Android UI优化时,有必要继续考虑资源复用。手机开发给我们的直观感觉是运行其上的软件应该尽可能的达到资源高效利用的极致,而不能像开发PC机那样,似乎有用之不尽的资源。
定义Android Layout(XML)时,有四个比较特别的标签是非常重要的,其中有三个是与资源复用有关,分别是 viewStub />, , and 。可是以往我们所接触的案例或者官方文档的例子都没有着重去介绍这些标签的重要性。
- 用法:通过android:layout来指定所包含的内容。默认情况下,ViewStub所包含的标签都属于visibility=GONE。viewStub通过方法inflate()来召唤系统加载其内部的Views。
下一篇
做详细介绍。
- 用法:将需要复用xml文件路径赋予include标签的Layout属性。
- 用法: 将标签置于Views标签内部
单独将标签做个介绍,是因为它在优化UI结构时起到很重要的作用。目的是通过删减多余或者额外的层级,从而优化整个Android Layout的结构。
将通过一个例子来了解这个标签实际所产生的作用,这样可以更直观的了解的用法。
建立一个简单的Layout,其中包含两个Views元素:
ImageView
和
TextView
默认状态下我们将这两个元素放在FrameLayout中。其效果是在主视图中全屏显示一张图片,之后将标题显示在图片上,并位于视图的下方。以下是xml代码:
FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/golden_gate" />
TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_gravity="center_horizontal|bottom"
android:padding="12dip"
android:background="#AA000000"
android:textColor="#ffffffff"
android:text="Golden Gate" />
FrameLayout>
应用上边的Layout运行的视图为:
启动 tools> hierarchyviewer.bat工具查看当前UI结构视图:
我们可以很明显的看到由红色线框所包含的结构出现了两个framelayout节点,很明显这两个完全意义相同的节点造成了资源浪费(这里可以提醒大家在开发工程中可以习惯性的通过hierarchyViewer查看当前UI资源的分配情况),那么如何才能解决这种问题呢(就当前例子是如何去掉多余的frameLayout节点)?这时候就要用到标签来处理类似的问题了。我们将上边xml代码中的framLayout替换成merge:
merge xmlns:android="http://schemas.android.com/apk/res/android">
ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="center"
android:src="@drawable/golden_gate" />
TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_gravity="center_horizontal|bottom"
android:padding="12dip"
android:background="#AA000000"
android:textColor="#ffffffff"
android:text="Golden Gate" />
merge>
运行程序后在Emulator中显示的效果是一样的,可是通过hierarchyviewer查看的UI结构是有变化的,当初多余的
FrameLayout节点被合并在一起了,或者可以理解为将merge标签中的子集直接加到Activity的FrameLayout跟节点下(这里需要提醒大家注意:所有的Activity视图的根节点都是frameLayout)。如果你所创建的Layout并不是用framLayout作为根节点(而是应用LinerLayout等定义root标签),就不能应用上边的例子通过merge来优化UI结构。
除了上边的例子外,meger还有另外一个用法
当应用Include或者ViewStub标签从外部导入xml结构时,可以将被导入的xml用merge作为根节点表示,这样当被嵌入父级结构中后可以很好的将它所包含的子集融合到父级结构中,而不会出现冗余的节点。
另外有两点需要特别注意:
inflate()
文档)
发表评论
-
关于用eclipse调试Desire和Desire HD机型时连接不上的处理办法
2011-03-14 14:28 2192需要找到android-sdk-windows\usb_dri ... -
自定义控件的ondraw函数在android1.5下不调用的原因之一
2010-07-10 17:49 1874花了5个小时的时间,BT的自定义控件ondraw函数在andr ... -
[转]Windows系统下的CVS服务器配置与Eclipse集成开发项目管理
2010-05-31 21:11 1281原文链接:http://hi.baidu.com/chenhj ... -
用反射来调用Android里的隐藏Class
2010-05-17 12:36 2341发现android.os.ServiceManager自1.6 ... -
Apache mime.types 文档 分享
2010-05-13 15:19 2028IIS--默认网站属性-->http 头--> ... -
【转】How to port native (C/C++) library into android.
2010-05-05 10:54 2312Android official documents don’ ... -
【转】Android JNI实例
2010-05-04 17:32 1862Android的SDK中没有包括JNI的支持,而且对如何支持J ... -
[转]Android编译环境 - 编译Native C的helloworld模块
2010-04-27 14:34 4258Android编译环境本身比较复杂,且不像普通的编译环境: ... -
bitmap内存溢出的问题
2010-04-23 21:16 2137我的代码如下 is = new FileInpu ... -
【转】编写高效的Android代码
2010-04-02 18:07 934编写高效的Android代码 毫无疑问,基于Andro ... -
【转】Android UI 性能優化教學
2010-04-02 18:04 3878基於如何在合理利用資 ... -
[转]Setting up a Device for Development
2010-03-22 19:22 1003Setting up a Device for Dev ... -
【转】ArrayAdapter和SimpleCursorAdapter例子
2010-03-19 23:49 2159使用ArrayAdapter定制To-D ... -
[转]HTC Tattoo刷机全过程以及ROM下载!!!
2010-03-19 16:49 4020貌似是去年12月19日的事情,可以金卡刷机到当前最新1. ... -
[转]Intent 解析
2010-03-13 18:19 2550基于组件的架构体系,除了有定义良好的组件,如何把这些组件组 ... -
[转]Android事件侦听器回调方法浅谈
2010-03-13 17:53 1846Android事件侦听器作为视图View类的接口,其中 ... -
【转】Adapter应用总结
2010-03-12 19:14 1635Adapter应用总结 首先 ... -
【转】android manifest.xml中元素含义
2010-03-12 16:02 1738android manifest.xml中元素含义 20 ...
相关推荐
Android UI 优化.ppt
Android UI优化之merge标签的使用,主要介绍merge方法使用的注意事项及方法实现。
《AndroidUI基础教程》是一本Android用户界面设计的基础入门图书。全书从最基础的技术概念开始介绍,深入讨论了UI设计的各项技术,涵盖了为应用程序创建UI的所有内容。本书不仅会告诉读者创建灵活布局的最佳方法,...
Android UI优化之merge标签的使用,主要介绍ViewStub方法使用的注意事项及方法实现。
Android 性能优化之UI优化源码 配合博客参照 https://www.cnblogs.com/Oztaking/p/9350295.html
这个demo主要讲解了UI的一些优化方法,希望可以帮助需要的同学.
android 性能优化-Systrace分析UI性能android 性能优化-Systrace分析UI性能
9、Android的UI工具包 android-ui-utils 是一个工具包用来帮助设计和开发 Android 用户界面,包含三个单独的工具:Android Asset Studio用户界面原型模具,Android 设计预览,时常需要重复确认程序版面设计状况的 ...
Android优化UI设计原则!
010_android 之UI线程阻塞及其优化视频教材,讲解的比较详细,有兴趣的可以学习下哦。
本文带您全面了解Android开发规范,其中包括Android编码规范,Android性能优化和Android UI优化,读完绝对不会后悔的好文章。 一、Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文 2.局部变量...
Android UI构造 Android UI的布局和优化
利用shape优化android UI
android优化技术详解:包括:UI布局优化,内存优化,性能优化,代码优化
英文资料,针对Android UI开发中提高运行速度和效率的技巧
Android MVVM框架使用(十三)UI更新 (App启动白屏优化、适配Android10.0深色模式)
在Android应用开发过程中,屏幕上控件的布局代码和程序的逻辑代码通常是分开的。界面的布局代码是放在一个独立的xml文件中的,这个文件里面是树型组织的,控制着页面的布局
android最全的UI设计资料,整合收集优秀的博文,内有各种android问题及解决方案,不可多得的第一手开发资料!
Android UI设计规范文档 1 设计原则 2 风格 2.1 设备和显示 Android 驱动了数百万的手机、平板和其它设备,兼容了各种屏幕宽度和比例。利用 Android 灵活的布局系统,您可以创造出从平板到手机都看起来很优雅的应用...