我们应该在Android的LayoutView或ImageView中设置背景吗?

代码

以下两种情况之间的优缺点是什么:

  1. 使用LayoutView(例如RelativeLayout / LinearLayout)并通过Drawable对象调用setBackground(drawable)

  2. 在LayoutView中使用ImageView(宽度:fill_parent,高度:fill_parent)并调用以下命令:

    • imageView.setBackground(drawable)
    • imageView.setBackgroundResource(资源)
    • imageView.setImageBitmap(位图)
    • imageView.setImageResource(stub_id)

方法2的性能更好吗?如果是这样,那将是为ImageView设置背景的推荐方法?

joao2fast4u

如果我只是想为布局提供简单的背景,我会坚持采用方法1。请注意,您不仅仅指的是在上应用背景的方法LayoutView,例如:

myLayout.setBackgroundColor(int color);
myLayout.setBackgroundDrawable(Drawable d);
myLayout.setBackgroundResource(int resid);

现在,选择方法1的原因:

  • Android只会给一个视图(而不是两个)充气,就像方法2一样。
  • Android会自动将您的图片/可绘制/位图调整为该LayoutView尺寸。在方法2中,该任务必须由您自己使用ImageView XML属性执行
  • 在方法#2,你将不得不有关管理你的担心ImageView和其他可能的孩子Views你的LayoutView(相对位置,大小,顺序),因为它们会以某种方式或其他有关。在方法1中,您的LayoutView背景永远不会和孩子混在一起Views
  • 就代码的易读性而言,除非带有非常特殊的情况,否则RelativeLayoutImageView唯一的功能是定义背景的孩子一起孩子是没有意义的。您具有该android:background属性。在这种情况下,更少的代码可以带来更好的代码。
  • 在方法2中的代码中,您必须声明两个视图,因此,需要更多内存才能将这些方法应用于这些视图。在方法1中,您可以用3行代码完成所需的工作。

似乎有太多的理由使用方法#1。

对于问题的第二部分,使用Drawable设置背景的最佳方法取决于该Drawable的来源(从资源,生成的Drawable对象等)以及您想对该Drawable进行的操作(将其传递给Bitmap和进行一些更改等)。

您可以查看每种方法的文档,以更好地了解何时应使用每种方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我们应该在特质中始终使用`override`吗?

来自分类Dev

我们还应该在Golang中关闭DB的.Prepare()吗?

来自分类Dev

AngularJS-我们应该在服务中包装$ http方法吗

来自分类Dev

AngularJS-我们应该在服务中包装$ http方法吗

来自分类Dev

我们应该在函数中强制转换JQuery参数吗?

来自分类Dev

我们应该在基类中“ super()”吗?

来自分类Dev

为什么我们不应该在 ComponentDidMount 中设置状态

来自分类Dev

即使表中没有页脚,我们也应该在表中包括表脚元素吗?

来自分类Dev

我们应该在 MVP 模式中检查 Presenter 或 Activity 中的视图可见性吗?

来自分类Dev

我们应该在Vue 3中将mixins转换为基于类的组件定义语法吗?

来自分类Dev

我们应该在neo4jphp中更新节点后更新索引吗?

来自分类Dev

我们应该在另一个类中传递注入的对象吗

来自分类Dev

为了性能,我们应该在 ES6 类的原型中包含方法吗?

来自分类Dev

我们应该在不同的调用之间重用cublasHandle_t吗?

来自分类Dev

我们应该在switch语句中打破默认大小写吗?

来自分类Dev

我们应该在观察者模式中使用WeakReference吗?

来自分类Dev

我们应该在竞争性编程中使用cin.ignore()吗?

来自分类Dev

我们应该在OkHttp中使用Google的安全提供程序吗?

来自分类Dev

我们应该在使Domain Class进入休眠状态时实现Serializable接口吗

来自分类Dev

我们应该在AngularJS中使用jQuery吗?

来自分类Dev

我们应该在Rails Factory中使用Faker吗?

来自分类Dev

我们应该在C ++中使用exit吗?

来自分类Dev

我们应该在PHP中使用“ --->”之类的对象范围吗?

来自分类Dev

HTML:我们应该在 HTML 文本字段中使用 `type="text"` 吗?

来自分类Dev

我们应该在更新后处理重用代码应用程序吗?

来自分类Dev

我们应该在 sql server 的更新查询中使用 alise 名称吗?

来自分类Dev

我们应该在多层项目中映射枚举吗?

来自分类Dev

我们应该在Android中使用getPath还是getAbsolutePath

来自分类Dev

我们应该在ctypes中延迟什么?ctypes.open?功能定义?

Related 相关文章

  1. 1

    我们应该在特质中始终使用`override`吗?

  2. 2

    我们还应该在Golang中关闭DB的.Prepare()吗?

  3. 3

    AngularJS-我们应该在服务中包装$ http方法吗

  4. 4

    AngularJS-我们应该在服务中包装$ http方法吗

  5. 5

    我们应该在函数中强制转换JQuery参数吗?

  6. 6

    我们应该在基类中“ super()”吗?

  7. 7

    为什么我们不应该在 ComponentDidMount 中设置状态

  8. 8

    即使表中没有页脚,我们也应该在表中包括表脚元素吗?

  9. 9

    我们应该在 MVP 模式中检查 Presenter 或 Activity 中的视图可见性吗?

  10. 10

    我们应该在Vue 3中将mixins转换为基于类的组件定义语法吗?

  11. 11

    我们应该在neo4jphp中更新节点后更新索引吗?

  12. 12

    我们应该在另一个类中传递注入的对象吗

  13. 13

    为了性能,我们应该在 ES6 类的原型中包含方法吗?

  14. 14

    我们应该在不同的调用之间重用cublasHandle_t吗?

  15. 15

    我们应该在switch语句中打破默认大小写吗?

  16. 16

    我们应该在观察者模式中使用WeakReference吗?

  17. 17

    我们应该在竞争性编程中使用cin.ignore()吗?

  18. 18

    我们应该在OkHttp中使用Google的安全提供程序吗?

  19. 19

    我们应该在使Domain Class进入休眠状态时实现Serializable接口吗

  20. 20

    我们应该在AngularJS中使用jQuery吗?

  21. 21

    我们应该在Rails Factory中使用Faker吗?

  22. 22

    我们应该在C ++中使用exit吗?

  23. 23

    我们应该在PHP中使用“ --->”之类的对象范围吗?

  24. 24

    HTML:我们应该在 HTML 文本字段中使用 `type="text"` 吗?

  25. 25

    我们应该在更新后处理重用代码应用程序吗?

  26. 26

    我们应该在 sql server 的更新查询中使用 alise 名称吗?

  27. 27

    我们应该在多层项目中映射枚举吗?

  28. 28

    我们应该在Android中使用getPath还是getAbsolutePath

  29. 29

    我们应该在ctypes中延迟什么?ctypes.open?功能定义?

热门标签

归档