改善布局性能

时间:2016-09-17 10:44:31

标签: android performance android-layout

我是freelancing来解决Android应用程序的崩溃。它发生在启动时,我知道这是因为activity_main.xml。它有太多的视图,嵌套级别太多。除此之外(我会尽量减少)

在Android中改善布局效果的其他策略是什么?

无法更改或简化用户界面。 例如: - 对于重复元素(50 - 100),使用' include'让它更快? - 用于定义样式中的属性而不是每个项目中的属性相同。

3 个答案:

答案 0 :(得分:3)

我最近一直致力于提高应用性能,并提供快速流畅的用户界面让我分享您的体验:

用户界面的表现愿景是:

{
     "name": "slangoApp",
     "icons": [
      {
       "src": "\/android-icon-36x36.png",
       "sizes": "36x36",
       "type": "image\/png",
       "density": "0.75"
      },
      {
       "src": "\/android-icon-48x48.png",
       "sizes": "48x48",
       "type": "image\/png",
       "density": "1.0"
      },
      {
       "src": "\/android-icon-72x72.png",
       "sizes": "72x72",
       "type": "image\/png",
       "density": "1.5"
      },
      {
       "src": "\/android-icon-96x96.png",
       "sizes": "96x96",
       "type": "image\/png",
       "density": "2.0"
      },
      {
       "src": "\/android-icon-144x144.png",
       "sizes": "144x144",
       "type": "image\/png",
       "density": "3.0"
      },
      {
       "src": "\/android-icon-192x192.png",
       "sizes": "192x192",
       "type": "image\/png",
       "density": "4.0"
      }
     ]
    }

布局有一些拇指规则。

最小视图层次结构。

最低背景值

最大限度地减少窗口过度抽取:

尽量减少透支过度

使用drawble left而不是水平对齐的image和textview。

在重复视图时经常使用lists / recyclerview

还有更多。让我分享一些真正有用的链接

https://medium.com/@elifbon/android-application-performance-step-1-rendering-ba820653ad3#.pp7hpnv07

https://www.safaribooksonline.com/library/view/high-performance-android/9781491913994/ch04.html

https://riggaroo.co.za/optimizing-layouts-in-android-reducing-overdraw/

https://www.hackerearth.com/notes/rendering-performance-in-android-overdraw/

Letme知道它是否有用。干杯

答案 1 :(得分:1)

之前我已回复了相关的question,我的建议仍适用于此主题。

处理负载:

延迟加载 - 仅加载现在真正需要的那些信息。示例:电影应用:除非用户告诉您这样做,否则只加载那些最新电影而不是那些旧电影。这里的想法是仅决定首先加载哪个以及稍后加载其他其他东西。负载越小,性能越高,而不会牺牲良好的内容。

缓存 - 如果您继续从服务器下载内容,则可能需要花费很长时间才能加载,并且您的启动画面会在较长时间内可见,或者某些UI可能会特意冻结当你在主线程中执行它。通过缓存,您需要从网络中获取更少的数据,因为您已经下载了一些数据。

创建视图时需要考虑的事项。

  • 避免使用超深嵌套视图。
  • 避免使用深层嵌套权重。
  • 对于图像加载,请使用一些流行的图书馆,如Picasso,Glide等。
  

使用'include'会让它更快吗?

有点,重用布局特别强大,因为它允许您创建可重用的复杂布局。例如,是/否按钮面板,或带有描述文本的自定义进度条。它还意味着可以提取,管理多个布局中常见的应用程序的任何元素,然后将其包含在每个布局中。因此,虽然您可以通过编写自定义视图来创建单独的UI组件,但您可以通过重新使用布局文件来更轻松地完成此操作。

来源:Official docs

附录

当问题仍然存在且Android框架无法提供您真正需要的内容时;最后一种方法是通过扩展ViewViewGroup创建自己的观点。创建自己的视图/布局需要时间和精力,但是你获得了更多的控制,因为它是你自己的视图/布局实现,比如说你有能力改变世界

答案 2 :(得分:1)

您可以尝试从https://developer.android.com

开始关注

Optimizing Layout

  1. 检查您的布局
  2. 修改您的布局
  3. 使用Lint
  4. 以及

    Improving Layout Performance

    1. 优化布局层次结构
    2. 使用
    3. 重新使用布局
    4. 按需加载视图
    5. 使用
    6. 重新使用布局