YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Chinese, Simplified subtitles

← 02-07 Visualize_and_Fix_Overdraw_-_Solution

02-07 Visualize_and_Fix_Overdraw_-_Solution

Get Embed Code
13 Languages

Showing Revision 3 created 02/08/2016 by sp8.

  1. 在剩下的文件中应该可以找到4个

  2. 不必要的背景
  3. 我们来查看一下
  4. 在BaseActivity中
    记住我们希望保留白色背景
  5. 现在,我们来看聊天片段XML文件
  6. 我们在这里声明了一个不必要的白色背景
  7. 我们并不需要这个声明
    因为可以使用MainActivity的白色背景
  8. 这就是要找的不必要的背景
  9. 现在,来看聊天记录单个XML文件
  10. 这里有三个不必要的背景
  11. 这里有一个
    这里还有一个
  12. 最后一个在这里
    我们在文本视图中不需要这个白色背景
  13. 我们来删除它们
  14. 好了,现在我们来看看
    过度绘制的情况有没有改善
  15. 你的屏幕就应该像现在这样
  16. 恰当地删除这些背景
  17. 干净多了,不是吗?
  18. 好了,干得不错
  19. 我们就快大功告成了
  20. 但是你还可以再做一个优化
  21. 注意头像区域仍存在过度绘制
  22. 因为我们绘制了一个方框然后再绘制头像图片
  23. 我们来试试看,动下脑筋
  24. 在没有获取到头像时我们才设置一个背景
  25. 我们可以使用一些条件码来实现
  26. 好了
  27. 我们找到聊天适配器代码
  28. 这部分代码负责在个人聊天记录上传后进行填写
  29. 我们找到getview方法
  30. 在底部这里我们找到一个逻辑操作
  31. 用来显示头像的同时设置背景颜色
  32. 我们来看看能否变得更智能一些
  33. 我们来写一段代码
  34. 在未获取到头像时仅用来设置背景颜色
  35. 然后我们将把背景颜色设置为透明
  36. 然后上传头像
  37. 像这样做
  38. 好了,这就是我们更新后的代码
  39. 注意,当未获取到头像时我们要做的是
  40. 在头像通常的位置加载透明色
  41. 然后,为头像设置真正的背景色
  42. 剩下的就是获取到头像时的操作
  43. 我们恰当地加载头像
  44. 然后,我们将背景色设置为透明
  45. 这样我们就能将过度绘制最小化
  46. 好了,我们来看看情况有没有改善
  47. 很好
  48. 你可以看到头像区域
  49. 在更新代码后过度绘制减少了
  50. 好了,这就是我们最后的优化 大功告成
  51. 我们总结一下
  52. 优化前过度绘制非常严重
  53. 首先要做的,就是将背景图片设置为null
  54. 其次,就是清除XML标记中
  55. 不必要的背景声明
  56. 最后,我们只在未获取到头像时
  57. 显示背景颜色
  58. 经过这些优化,我们再来看看
  59. 过度绘制的情况相比开始有了很大改善
  60. 干得漂亮
  61. 记住,性能决定一切