我正在尝试关注
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而不扩展它用于画布绘图时,它工作正常。
问题是什么?
基本上我打算在图像上绘制一个图像和几行。怎么做?
答案 0 :(得分:3)
要解决此问题,您必须将构造函数更改为
public CustomDrawableImageView (Context context, AttributeSet attrs) {
super(context, attrs);
}
它会起作用