Android布局优化

针对布局优化的几点笔记:


1.一个FrameLayout内的LinearLayout,两者都被设置为MATCH_PARENT,这样做没什么实际的意义,只是增加了填充它们的时间。特别是在对一个已有的布局做了重大调整或者再已有布局上添加子布局的时候,需要查找冗余布局。


2.当设置为MATCH_PARENT的FrameLayou被添加到一个父容器时,它就会成为冗余。更好的选择是使用merge标签:

<merge xmlns:android="http://schemas.android.com/apk/res/android">
 <ImageView....

当包含有merge标签的布局被添加到另一个布局时,该布局的merge节点会被删除,而该布局的子View会被直接添加到新的父布局中。merge标签结合include标签一起使用时尤其有用。


3.避免使用过多的View,填充每个额外的View都需要花费时间和资源。想要在复杂的布局内填充的View的数量最少,可以使用ViewStub。View Stub的工作原理就像是一个延迟填充的include标签——一个stub代表了在父布局中指定的(多个)子View——但只有显示地调用inflate()方法或被置为可见的时候,这个stub才会被填充。


//查找stub
View stub = findViewById(R.id.download_progress_stub);
//将其设置为可见,以填充子布局
stub.setVisibility(View.VISIBLE);
//查找已填充的stub布局的根节点
View downloadProgressPanel = findViewById(R.id.download_progress_panel);


ViewStub只能Inflate一次,之后ViewStub对象会被置为空。按句话说,某个被ViewStub指定的布局被Inflate后,就不会够再通过ViewStub来控制它了.


4.使用Lint工具来分析布局,Lint是一个强大的工具用来检测应用程序中的问题,包括布局的性能问题。还可以用来检测缺少的翻译、未使用的资源、不一致的数组大小、可访问性和国际化问题、丢失或重复的图像资源、可用性问题和manifest错误。


5.Fragment:Fragment是作为Android 3.0(API 11)发布版本的一部分引入的,为了能够在1.6及其以上版本使用Fragment,可以通过Android支持包的方式来使用,要通过Android支持包来使用Fragment,必须要保证Activity是继承自FragmentActivity类。如果Fragment需要和它的父Activity的UI交互,需要一直等到onActivityCreated事件被触发。该事件被触发意味着Fragment所在的Activity已经完成了初始化并且它的UI也已经完全构建好了。当使用Fragment基于不同屏幕尺寸来定义一系列静态布局时,该技术是行之有效的。如果打算运行时通过添加、删除或者替换Fragment的方式来动态地修改布局,更好的方法是基于当前应用程序状态使用容器View来创建布局,Fragment可以在运行时放入到一个容器View内。在一个给定方向的布局中删除一个Fragment容器,只需要简单地将布局定义中的该Fragment容器的visibility属性置为“gone”即可。
       想要应用众多默认过度动画中的一个,可以对任何Fragment Transaction使用setTransition方法,传入一个FragmentTransaction.TRANSIT_FRAGMENT_*常量。也可以通过使用setCustomAnimations方法对Fragment Transaction应用自定义动画。这个方法接收两个动画XML资源:一个是通过该事务添加到布局的Fragment,而另一个是被删除的Fragment:
fragmentTransaction.setCustomAnimations(R.animator.slide_in_left,R.animator.slide_out_right);当在布局内替换Fragment时,这种方式对于添加无缝动态过度尤其有用。
另:随着Android3.0中Animator类的引入,Android动画库有了显著的改进。为运行在API level 11及以上版本的设备构建的应用程序应该使用Animator资源,而那些为了支持更早版本而使用支持库的应用程序,应该使用老的View Animation资源。
       也可以创建没有UI的Fragment来提供后台行为,该行为会一直持续到Activity重新启动。这特别适合于定期和UI交互的后台任务或者当因配置改变而导致的Activity重新启动时,保存状态变得特别重要的场合。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值