android开发布局优化之ViewStub】的更多相关文章

使用ViewStub可以延迟加载一个布局文件,提高显示速率.刚开始接触到,记录下来. 关于viewstub的使用,我们可以在不同的布局中使用,比如可以根据设备的大小动态决定显示哪个界面. viewstub和include比较像,都是在一个布局文件中嵌入另外一个布局文件,然而viewstub是可以说是延迟加载,它只会在你手动指定加载的时候才会加载这个布局文件,而include则会立即加载. 在布局中使用ViewStub标签来引入文件 <LinearLayout xmlns:android="…
安卓开发应用首先要讲究良好的用户体验,如果一款软件卡顿现象严重,不流畅,经常崩溃,那么将给用户带来极不良好的体验,从而损失用户. 在实际开发和学习中,我总结了一下关于安卓性能的优化,供大家参考交流. 应用程序的性能问题体现在很多方面, 比如第一次启动速度慢,或者进入某一界面速度慢:动画执行过程不流畅,或者动画执行卡顿时间长:ListView列表滑动过程中卡顿,不流畅:应用程序自定义的某特定界面执行速度慢:响应某一用户事件时长时间无响应(ANR):操作数据库时,执行大量数据的增删改查操作,执行速度…
ViewStub是Android布局优化中一个很不错的标签/控件,直接继承自View.虽然Android开发人员基本上都听说过,但是真正用的可能不多. ViewStub可以理解成一个非常轻量级的View,与其他的控件一样,有着自己的属性及特定的方法.当ViewStub使用在布局文件中时,当程序inflate布局文件时,ViewStub本身也会被解析,且占据内存控件,但是与其他控件相比,主要区别体现在以下几点: 1.当布局文件inflate时,ViewStub控件虽然也占据内存,但是相相比于其他控…
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://android.blog.51cto.com/268543/308090 FrameLayout      先来看官方文档的定义:FrameLayout是最简单的一个布局对象.它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片.所有的子元素将会固定在屏幕的左上角:你不能为FrameLayout中的一个子元素指定一个位置.后一个子元…
0. 前言 上一篇我们分析了为什么LinearLayout会比RelativeLayout性能更高,意义在于分析了这两种布局的实现源码,算是对一个小结论的证明过程,但是对布局性能的优化效果,对这两种布局的选择远不如减少布局层级.避免过分绘制.按需加载等效果明显.所以本篇将着重总结Android布局性能优化的各种技巧.本文原创,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52923827.   1.   <include/> &…
转载请标注:转载于http://www.cnblogs.com/Liuyt-61/p/6602926.html ---------------------------------------------------------------- >使用ViewStub惰性加载 作用:ViewStub标签同include标签一样可以用来引入一个外部布局,不同的是,ViewStub引入的布局默认不会扩张,既不会占用显示,也不会占用位置,从而在解析layout时节省cpu和内存. common_text.…
, 0, drawable.getMinimumWidth(),dra.getMinimumHeight()); tv.setCompoundDrawables(null, null, drawable, null); ); int z = text.lastIndexOf("门"); SpannableStringBuilder ssb = new SpannableStringBuilder(text); ssb.setSpan(new AbsoluteSizeSpan(Displ…
作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以需要开发人员更加专心去实现和优化你的代码了.选择合适的算法和数据结构永远是开发人员最先应该考虑的事情.同时,我们应该时刻牢记,写出高效代码的两条基本的原则:(1)不要做不必要的事:(2)不要分配不必要的内存. 我从去年开始接触Android开发,以下结合自己的一点项目经验,同时参考了Google的优…
转自(http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost&gid=74&tid=20713&pg=1贺小令 ) 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要 求远远高于PC的桌面应用程序.以上理由,足以需要开发人员更加专心去实现和优化你的代码了.选择合…
作为android应用来讲,无论应用本身多么美观,功能多么强大,内容多么丰富.但如果App本身打开界面缓慢超过手机16ms刷新一次页面的时间,就会产生卡顿.用户体验都会变得极差,导致用户量减少.所以我们在开发过程中同样要注重布局优化. <include>标签 在Layout布局中如果有你想要引用的布局时,若该布局在不同的布局是公共布局,我们会多次使用到.这时可以使用<include>标签.并且便于统一的修改与查看. <-- container为引用布局的布局id -->…
布局技巧 在Android开发过程中,我们会遇到很多的问题,随着UI界面越来越多,布局的重复性.复杂度也随之增加,所幸的是,Android官方也给出了几个对布局进行优化的方法,下面根据自己的理解对官方所介绍的方法进行分享,有错误的地方希望大家进行留言,相互交流. 轻量布局之ViewStub标签分析 ViewStub是一个轻量级View,也是一个初始化不做任何事情的View,但是之后我们可以加载入一个布局文件,在慢加载时View中做占位符而已.比如我们根据条件在动态加载View或者某个布局时,最通…
源码分析 @RemoteView public final class ViewStub extends View { private int mInflatedId; private int mLayoutResource; private WeakReference<View> mInflatedViewRef; private LayoutInflater mInflater; private OnInflateListener mInflateListener; public View…
多数Android开发者都知道在Android中可以使用HashMap来映射一种对应关系,在java开发中HashMap也算是一种很重要的数据存储结构.然后很多人在Android开发中多数都会用HashMap来存储这种映射形式的数据. 其实,Android提供了一种更加适合Android开发的数据结构——SparseArray.初看之下,好像是一种数组,其实不然.数组的index是连续的.而SparseArray可以不连续,所以导致SparseArray就具有HashMap的一些特性,但是比Ha…
在开发中UI布局是我们都会遇到的问题,随着UI越来越多,布局的重复性.复杂度也会随之增长.Android官方给了几个优化的方法,但是网络上的资料基本上都是对官方资料的翻译,这些资料都特别的简单,经常会出现问题而不知其所以然.这篇文章就是对这些问题的更详细的说明,也欢迎大家多留言交流. 一.include 首先用得最多的应该是include,按照官方的意思,include就是为了解决重复定义相同布局的问题.例如你有五个界面,这五个界面的顶部都有布局一模一样的一个返回按钮和一个文本控件,在不使用in…
以前在写布局的时候总是喜欢用自己熟悉的方式去写,从来也没有想过优化怎么的,后来又一次在上班的时候老大拿着我写的一个页面说我这个不行.我说这不是和设计图上的一模一样的么?怎么就不行了?然后他就跟我说了一些界面优化的知识,其实以前在学习的时候也遇到过但是没有好好的去研究过,也没有真正的去在自己的代码里面实现过.在看了网上的一个效果之后,觉得有必要把自己的代码进行一定的优化了. 一 重用布局文件 Android系统中已经提供了非常多好用的控件,这让我们在编写布局的时候可以很轻松.但是有些时候我们可能需…
1.  采用硬件加速,在androidmanifest.xml中application添加android:hardwareAccelerated="true".不过这个需要在android 3.0才可以使用.android4.0这个选项是默认开启的.2.  View中设置缓存属性.setDrawingCache为true.3.    优化你的布局.通过Android sdk中tools目录下的layoutopt 命令查看你的布局是否需要优化.4.    动态加载View. 采用View…
创建好看的Android布局是个不小的挑战,当你花了数小时调整好它们适应多种设备后,你通常不想再重新调整,但笨重的嵌套布局效率往往非常低下,幸运的是,在Android SDK中有一个工具可以帮助你优化布局,以减少内存消耗,提高应用程序运行性能. 优化是需要一定技巧的,性能良好的代码固然重要,但写出优秀代码的成本往往也很高,你可能不会过早地贸然为那些只运行一次或临时功能代码实施优化,如果你的应用程序反应迟钝,并且卖得很贵,或使系统中的其它应用程序变慢,用户一定会有所响应,你的应用程序下载量将很可能…
android中提供了<include />.<merge />.<ViewStub />三种优化布局. 1.<include /> <include layout="@layout/test"/> 此布局通常用于一些复用较多的布局,方便后期维护. <include />标签若指定了ID属性,而你的layout也定义了ID,则你的layout的ID会被覆盖. <include />如要使android:…
所有Android的开发者一定都遇到过内存溢出这个头疼的问题,一旦出现这个问题,很难直接确定我们的应用是那里出了问题,要想定位问题的原因,必须通过一些内存分析工具和强大的经验积累才能快速的定位到问题具体出现在那里. 基于移动开发具有的这个特性,本着尽量减少内存消耗的原则,以及我最近遇到的内存堆积(偶尔溢出)问题,总结一下这次解决这个问题的经验. 问题源头:开始App功能没那么多的时候,是没有注意到这个问题的,后来功能越强越多,图片也越来越多的时候,用ADT自带的 Allocation Track…
微信主界面 我们布局应该从局来看,如上图,我们可以分为三个大的LinearLayout,再从LinearLayout嵌套其它布局,从而做出界面 文件 主界面代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent&…
1.Andrid:控件布局(表格布局)TableLayout 有多少个TableRow对象就有多少行, 列数等于最多子控件的TableRow的列数 直接在TableLayout加控件,控件会占据一行 TableLayout属性(也叫全局属性):*代表所有列 android:shrinkColumns -------设置可收缩的列,(内容过多,则收缩,扩展到第二行,控件没布满TableLayout时不起作用) android:stretchColumns ------设置可伸展的列,(有空白则填充…
一:LinearLayout  1.线性布局,这个东西,从外框上可以理解为一个div,他首先是一个一个从上往下罗列在屏幕上.每一个LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" ).当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下:水平布局时,只有一行,每一个元素依次向右排列.  linearLayout中有一个重要的属性…
线性布局中,有 4 个及其重要的参数,直接决定元素的布局和位置,这四个参数是 android:layout_gravity ( 是本元素相对于父元素的重力方向 ) android:gravity (是本元素所有子元素的重力方向) android:orientation (线性布局以列或行来显示内部子元素) android:layout_weight (线性布局内子元素对未占用空间[水平或垂直]分配权重值,其值越小,权重越大. 前提是子元素 设置了 android:layout_width = "…
8.  用缓存避免内存泄漏 很常见的一个例子就是图片的三级缓存结构,分别为网络缓存,本地缓存以及内存缓存.在内存缓存逻辑类中,通常会定义这样的集合类. private HashMap<String, Bitmap> mMemoryCache = new HashMap<String, Bitmap>();//String类为该图片对应url 三级缓存结构过程介绍: 在用户切换到展示图片的界面时,当然是优先判断内存缓存是否为Null,不为空直接展示图片,若为空,同样的逻辑去判断本地缓…
权重:就是在布局界面中所占的比例 实践案例: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_height="match_pare…
ImageView的属性scaleType,如果等比缩放的话,就使用CenterInside,如果想固定大小的话,就CenterCrop <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pa…
SparseArray是android里为<Interger,Object>这样的Hashmap而专门写的class,目的是提高效率,其核心是折半查找函数(binarySearch) private static int binarySearch(int[] a, int start, int len, int key) { int high = start + len, low = start - 1, guess; while (high - low > 1) { guess = (…
一.SparseIntArray API SparseIntArrays map integers to integers.  Unlike a normal array of integers, there can be gaps in the indices.  It is intended to be more memory efficient than using a HashMap to map Integers to Integers, both because it avoids…
接上篇: 1.在JAVA+Oracle 的应用系统开发中,Java中内嵌的sql语句尽量使用大写的形式,以减少Oracle解析器的解析负担: 2.由于JVM的有其自身的GC机制,但是也有遗漏的隐患,建议在对象使用完毕后,手动设置成null: 3.不要在循环中使用Try/catch语句,应放在最外层: 4.当复制大量数据时,使用System.arraycopy()命令: 5.代码重构: 6.尽量使用HashMap和Arraylist,少用HashTable:…
实践案例: XML <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas…