android - Android 中应该在 LayoutView 还是 ImageView 中设置背景?

标签 android android-layout android-imageview android-drawable android-image

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

  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 设置背景的推荐方法是什么?

最佳答案

如果我只想为我的布局设置一个简单的背景,我会坚持使用方法 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 中,您将不得不担心管理您的 ImageViewLayoutView 的其他可能的子 View(相对位置,大小、顺序),因为它们将以一种或另一种方式相关。在方法 #1 中,您的 LayoutView 背景永远不会与子 Views 混淆。
  • 就代码易读性而言,看到带有子 ImageViewRelativeLayout 其唯一功能是定义背景是没有意义的,除非是非常特殊的情况。你有 android:background 属性。在这种情况下,代码越少越好。
  • 在代码中,在方法 #2 中,您必须声明两个 View ,因此,需要更多内存才能将这些方法应用于这些 View 。在方法 #1 中,您可以在 3 行代码中完成所需的操作。

似乎有足够的理由使用方法 1。

对于问题的第二部分,使用 Drawable 设置背景的最佳方式取决于该 Drawable 的来源(来自资源、生成的 Drawable 对象等)以及您希望对该 Drawable 执行的操作(将其传递给到位图并进行一些更改等)。

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

关于android - Android 中应该在 LayoutView 还是 ImageView 中设置背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27413044/

相关文章:

java - 处理长字符串和 TextView 行为

android - 无法连接开发服务器。确保打包服务器正在运行

android - 我想使布局边框如下图所示

android - 在谷歌地图上方显示工具栏

android - 如果绑定(bind)适配器提供 getter,请检查适配器是否正确注释以及参数类型是否匹配

android - 在 android 中,我可以将 subview 添加到 ImageView 吗?

android - 使用存储在数据库中的路径显示 imageview

android - NFC 强制重新扫描

android - Gps 位置监听器停止

android - "snapping"horizo​​ntalscrollview 像主屏幕一样