在imageview中绘制形状

时间:2010-07-14 11:17:18

标签: android

我正在尝试关注

http://developer.android.com/guide/topics/graphics/2d-graphics.html

并在imageview顶部绘制一个形状

我的班级是

package com.bayer.glucofacts;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.OvalShape;
import android.widget.ImageView;

public class CustomDrawableImageView extends ImageView {
 private ShapeDrawable mDrawable;

 public CustomDrawableImageView(Context context) {
  super(context);
  int x = 10;
  int y = 100;
  int width = 300;
  int height = 50;
  mDrawable = new ShapeDrawable(new OvalShape());
  mDrawable.getPaint().setColor(0xff74AC23);
  mDrawable.setBounds(x, y, x + width, y + height);
 }

 protected void onDraw(Canvas canvas) {
  mDrawable.draw(canvas);
 }
}

并且xl喜欢

<com.cmp.app.CustomDrawableImageView
  android:id="@+id/bg_image" android:src="@drawable/book"
  android:layout_width="wrap_content" android:layout_height="wrap_content" />

但是当我在活动的onCreate中设置了CContnetLayout时,这会导致我的应用崩溃

当我只使用ImageView而不扩展它用于画布绘图时,它工作正常。

问题是什么?

基本上我打算在图像上绘制一个图像和几行。怎么做?

1 个答案:

答案 0 :(得分:3)

要解决此问题,您必须将构造函数更改为

public CustomDrawableImageView (Context context, AttributeSet attrs) {
    super(context, attrs);
}

它会起作用