我们应该在LayoutView中设置背景还是在Android中设置ImageView?

我们应该在LayoutView中设置背景还是在Android中设置ImageView?,android,android-layout,android-imageview,android-drawable,android-image,Android,Android Layout,Android Imageview,Android Drawable,Android Image,以下两种情况的优缺点是什么: 使用布局视图(如RelativeLayout/LinearLayout)并使用可绘制对象调用setBackground(可绘制) 在LayoutView内部使用ImageView(宽度:fill\u parent,高度:fill\u parent)并调用以下命令: imageView.setBackground(可拉伸) imageView.setBackgroundResource(资源) 设置图像位图(位图) setImageResource(存根id) 方

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

  • 使用布局视图(如RelativeLayout/LinearLayout)并使用可绘制对象调用setBackground(可绘制)

  • 在LayoutView内部使用ImageView(宽度:fill\u parent,高度:fill\u parent)并调用以下命令:

    • imageView.setBackground(可拉伸)
    • imageView.setBackgroundResource(资源)
    • 设置图像位图(位图)
    • setImageResource(存根id)

  • 方法2的性能是否更好?如果是这样的话,哪种方法是设置ImageView背景的推荐方法?

    如果我只想为布局设置一个简单的背景,我会坚持方法1。请注意,在
    布局视图
    上应用背景时,您使用的不仅仅是所指的方法,例如:

    myLayout.setBackgroundColor(int color);
    myLayout.setBackgroundDrawable(Drawable d);
    myLayout.setBackgroundResource(int resid);
    
    现在,选择方法#1的原因是:

    • Android只会膨胀一个视图,而不是两个,就像它在方法2中必须膨胀一样
    • Android将自动将图像/可绘制/位图的大小调整为
      LayoutView
      大小。在方法2中,该任务必须由您自己执行,使用
      ImageView
      XML
      属性
    • 在方法#2中,您将不得不担心如何管理
      布局视图的
      图像视图
      和其他可能的子视图
      (相对位置、大小、顺序),因为它们将以某种方式相互关联。在方法1中,您的
      布局视图
      背景永远不会与子
      视图
      混在一起
    • 就代码易读性而言,看到一个
      RelativeLayout
      和一个子
      ImageView
      的关系是没有意义的,除非它是一个非常特殊的情况。您具有该属性的
      android:background
      。在这种情况下,代码越少越好
    • 在代码中,在方法#2中,您必须声明两个视图,因此,在这些视图上应用方法需要更多内存。在方法1中,您可以用3行代码完成所需的工作
    似乎有足够多的理由使用方法1

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

    您可以查看这些方法的文档,以便更好地了解何时应该使用它们