美文网首页Android开发经验谈Android实用技术
2019日更挑战(二),android-聊聊写布局(二)

2019日更挑战(二),android-聊聊写布局(二)

作者: Jlanglang | 来源:发表于2019-01-02 21:32 被阅读25次

瞎扯

第二天,继续
接上篇,上篇主要简单聊了下分析布局
今天还是差不多,优化布局.

优化布局:

就说说我知道的一些,欢迎补充

1.减少嵌套

这点上篇就讲过了,
再提是因为这个的重要性吧,

安卓的嵌套大致两种.
  • 列表嵌套

    这种呢.首先要相信一点.同向的情况下,90%的列表设计都是可以一个RecyclerView搞定的.
    如果非要嵌套呢.那么嵌套RecyclerViewadapter,一定要注意缓存,不要每次
    onBindViewHolder的时候都去重新创建一次,

    纵向套横向其实算不上嵌套.

    当然,还有事件冲突,所以,不到万不得已,不要去嵌套,该怼的设计就得怼.

  • 容器嵌套.

    还是上篇提到的,LinearLayout,RelativeLayout等等疯狂嵌套.
    然后页面渲染卡的一笔,然后被人吐槽,安卓卡死.

    好在现在出了约束布局CoordinatorLayout,虽然我也不大用,因为用不上.不过是优化布局的神器.
    性能上比RelativeLayout更好.还能做一些RelativeLayout不好做的事.
    最重要的是它对屏幕的适配性.


2 .背景

对,就是背景.
我见过很多,现在还喜欢用.9图做背景.真的是不推荐

优化的地方:

(1).不要重复设置背景:

这是常常会被忽略的一件事情.经常会等到做布局优化的时候才会去改.
比如一个列表页面:


image.png
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#fff"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_content"
        android:background="#ccc"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <TextView
        android:id="@+id/tv_next"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true"
        android:background="#ff7000"
        android:gravity="center"
        android:text="确定选择"
        android:textColor="#fff"
        android:textSize="16dp"/>
</RelativeLayout>

然后列表条目的布局:

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="match_parent"
        android:layout_height="44dp"
        android:background="#fff"
        android:gravity="center_vertical"
        android:text="name" />

这种写法我是见过的..

然后打开查看过度绘制,整个页面都是红的.

这里一共重复了4次背景.

  • 第一层,window背景
  • 第二层.RelativeLayout背景
  • 第三层.ReyclerView背景
  • 第四层.TextView背景

实际上.除了TextView,其他的背景都可以去掉.

去掉window背景

<item name="android:windowBackground">@android:color/transparent</item>

(2).尽量不要用图片做控件背景.

除了启动页.和部分标签性的背景,还有什么地方是值得用图片做背景的

如果只是为了一个边线,


image.png
image.png

这些,只是一个shape就解决了.

我基本很少找UI切背景.只有icon会找UI, .9已经1年多没用过了吧.

如果允许,最好使用svg来作为icon和背景.
一.节省app大小,
二.不会失真.如果是图片做背景.失真是很的难看.
三.节省内存.图片可是很占内存的.

总结就是能用shape的或者canvas画的,绝不用图片,搞不定也最好用svg来搞.

(3)ViewStub merge

这两个东西,优化上来说,是很常用的

  • ViewStub
    相当于一个占位符.必须调用了inflate 和setvisible,设置想要的渲染的布局layoutId.才会被渲染.合理运用.可以优化页面启动速度.

  • merge

    这个必须用在xml文件的根级,. image.png

不然是用不了的.这个能减少一层容器布局.不过RecyclerView的item布局不能用这个.


能想到的暂时就这么多了. 日更第二天.

您的喜欢与回复是我最大的动力-_-
交流群:493180098

相关文章

  • 2019日更挑战(二),android-聊聊写布局(二)

    瞎扯 第二天,继续接上篇,上篇主要简单聊了下分析布局今天还是差不多,优化布局. 优化布局: 就说说我知道的一些,欢...

  • 2019日更挑战(一),android-聊聊写布局(一)

    瞎扯: 写布局是最基础东西技能,其实也是最重要的技能之一.合理的分析,才能写出好的app.也能提高开发效率. 我总...

  • 2019日更挑战(三),android-聊聊TextView

    瞎扯 TextView.个人认为是android开发中用的最频繁的一个控件了.非常强大,绝不是只简单的显示文字而已...

  • 2019日更挑战(十),Android-聊聊MVVM

    瞎扯 经历了MVC MVP,然后就出现了MVVM,不得不说.mvvm是最偷懒的那个.人生苦短,谁方便就用谁咯 M...

  • 2019日更挑战(十一),Android-聊聊MVP

    瞎扯 既然说到了MVVM,就再说说MVP.已经是老生常谈了.MVP的文章我写了有7 8篇了吧从2016年使用以来....

  • 2019日更挑战(十二),Android-聊聊MVC

    瞎扯 要来来一套.MVVM,MVP都写了,再来写MVC MVC的概念 我印象中MVC是由j2ee,延伸到andro...

  • 日更挑战(二)

    今天又加班了,上一次就因为加班,我没能完成自己的日更挑战,这一次,我要在加班的时候,完成自己的日更挑战。虽然也是在...

  • 日更挑战(二)

    今天天气很好,风和日丽,是个外出的好时候。潘舒羽一大早就洗了头,用吹风机烘干,梳理整齐,认真的在镜子前刮了胡子,穿...

  • 日更挑战二

    明明是日更的第一天,为何是二开头呢?昨天写下一篇文章时突然看到日更的挑战,就决定参加了,故而那篇就算作日更挑战的...

  • 日更挑战(二)

    前不久在老家看雪,还时不时的关注北京天气,终于这几天痛快的下了几场。北京下雪啦,也被刷爆了朋友圈。 不知何时起,北...

网友评论

    本文标题:2019日更挑战(二),android-聊聊写布局(二)

    本文链接:https://www.haomeiwen.com/subject/cgualqtx.html