以下两种情况的优缺点是什么:
使用 LayoutView(例如 RelativeLayout/LinearLayout)并使用 Drawable 对象调用 setBackground(drawable)
在 LayoutView 中使用 ImageView(宽度:fill_parent,高度:fill_parent)并调用以下内容:
- imageView.setBackground(drawable)
- imageView.setBackgroundResource(资源)
- imageView.setImageBitmap(位图)
- imageView.setImageResource(stub_id)
方法 2 的性能更好吗?如果是这样,为 ImageView 设置背景的推荐方法是什么?
最佳答案
如果我只想为我的布局设置一个简单的背景,我会坚持使用方法 1。请注意,您所指的不仅仅是在 LayoutView
上应用背景的方法,例如:
myLayout.setBackgroundColor(int color);
myLayout.setBackgroundDrawable(Drawable d);
myLayout.setBackgroundResource(int resid);
现在,选择方法 #1 的原因:
- Android 只会膨胀一个 View ,而不是两个 View ,就像在方法 #2 中那样
- Android 会自动将您的图像/绘图/位图调整为
LayoutView
大小。在方法 #2 中,该任务必须由您自己执行,使用ImageView
XML
属性。 - 在方法 #2 中,您将不得不担心管理您的
ImageView
和LayoutView
的其他可能的子View
(相对位置,大小、顺序),因为它们将以一种或另一种方式相关。在方法 #1 中,您的LayoutView
背景永远不会与子Views
混淆。 - 就代码易读性而言,看到带有子
ImageView
的RelativeLayout
其唯一功能是定义背景是没有意义的,除非是非常特殊的情况。你有android:background
属性。在这种情况下,代码越少越好。 - 在代码中,在方法 #2 中,您必须声明两个 View ,因此,需要更多内存才能将这些方法应用于这些 View 。在方法 #1 中,您可以在 3 行代码中完成所需的操作。
似乎有足够的理由使用方法 1。
对于问题的第二部分,使用 Drawable 设置背景的最佳方式取决于该 Drawable 的来源(来自资源、生成的 Drawable 对象等)以及您希望对该 Drawable 执行的操作(将其传递给到位图并进行一些更改等)。
您可以查看每种方法的文档,以便更好地了解何时应该使用每种方法。
关于android - Android 中应该在 LayoutView 还是 ImageView 中设置背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27413044/