如何在ImageView上绘制ImageView?

时间:2013-12-31 15:08:48

标签: android image imageview draw android-drawable

我有一个ImageView,我想在我的基础ImageView上绘制另一个图像。

在这张图片中,例如我有一棵树,我想绘制人物的图像

有什么建议吗?

enter image description here

是的,我的问题就像@Tsunaze说:

我有一棵树,我想把头放在上面,

3 个答案:

答案 0 :(得分:2)

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ImageView
    android:id="@+id/iv_tree"
    android:scaleType="fitXY"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:adjustViewBounds="true"
    android:src="@drawable/my_tree" />

</RelativeLayout>

MyView.java:

public MyView extends View{
 private Bitmap head_1, head_2;
 public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    this.context = context;
    init();
}
public MyView(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.context = context;
    init();
}
public MyView(Context context) {
    super(context);
    this.context = context;
    init();
}
    private void init(){
     head_1= BitmapFactory.decodeResource(context.getResources(), 
R.drawable.head_1); 
     head_2= BitmapFactory.decodeResource(context.getResources(), 
R.drawable.head_2);
    }

    @Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);       
    canvas.drawBitmap(head_1, coordinateX_head_1, coordinateY_head_1, null);
            canvas.drawBitmap(head_2, coordinateX_head_2, coordinateY_head_2, null);
}
  }

您可以选择所需的坐标,甚至可以使用canvas.getWidth()或canvas.getHeight()等函数。把自己当作画家。祝你好运。

答案 1 :(得分:1)

setBackgroundResource到ImageView并在其上使用setImageResource

例如:

imageView.setBackgroundResource(R.id.backgroundTree);
imageView.setImageResource(R.id.allPeople);

编辑:

如果要覆盖多个图像,check this example.

您还可以使用RelativeLayout并以编程方式在其中添加 ImageView

 <RelativeLayout>
   <ImageView/>
   <ImageView/>
   <ImageView/>
   <ImageView/>
 </RelativeLayout>

答案 2 :(得分:1)

你要做的是创建一个从ImageView扩展的类,设置你想要的默认参数并覆盖on draw方法,这个方法将让你有机会获得对画布的引用并绘制位图或几乎任何你想要的东西,但记得首先调用super.onDraw以保持默认配置并覆盖新图像。

有很多关于如何使用画布的教程,所以现在你有了正确的路径,希望这会有所帮助。

此致