我是freelancing来解决Android应用程序的崩溃。它发生在启动时,我知道这是因为activity_main.xml。它有太多的视图,嵌套级别太多。除此之外(我会尽量减少)
在Android中改善布局效果的其他策略是什么?
无法更改或简化用户界面。 例如: - 对于重复元素(50 - 100),使用' include'让它更快? - 用于定义样式中的属性而不是每个项目中的属性相同。
答案 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可能会特意冻结当你在主线程中执行它。通过缓存,您需要从网络中获取更少的数据,因为您已经下载了一些数据。
创建视图时需要考虑的事项。
使用'include'会让它更快吗?
有点,重用布局特别强大,因为它允许您创建可重用的复杂布局。例如,是/否按钮面板,或带有描述文本的自定义进度条。它还意味着可以提取,管理多个布局中常见的应用程序的任何元素,然后将其包含在每个布局中。因此,虽然您可以通过编写自定义视图来创建单独的UI组件,但您可以通过重新使用布局文件来更轻松地完成此操作。
附录
当问题仍然存在且Android框架无法提供您真正需要的内容时;最后一种方法是通过扩展View
或ViewGroup
来创建自己的观点。创建自己的视图/布局需要时间和精力,但是你获得了更多的控制,因为它是你自己的视图/布局实现,比如说你有能力改变世界。
答案 2 :(得分:1)
您可以尝试从https://developer.android.com,
开始关注以及