Extended ImageView中的Android getDrawable始终返回原始drawable

时间:2014-10-07 20:11:41

标签: android imageview android-canvas android-drawable android-bitmap

我已经扩展了一个ImageView,并且我在onDraw方法中为画布添加了一行。

@Override
public void onDraw(Canvas canvas) { 

    if(mBitmap!=null) {

        paint.reset();
        paint.setXfermode(DUFF_LIGHTEN);
        paint.setColor(Color.rgb(0, 0, 0));
        paint.setStrokeWidth(30);

        canvas.drawLine(0, 100, canvas.getWidth(), 100, paint);     

    }       
}   

我可以在屏幕上看到这条线,但是当我调用GetDrawable Method时,我会看到原始图像。 UI Canvas(onDraw one)无法分配给另一个位图。这会抛出一个不受支持的操作异常。

我应该如何覆盖getDrawable方法以获取在屏幕画布中绘制的图像?

@Override
public Drawable getDrawable() {
    return super.getDrawable();
}

我无法使用getDrawingCache因为我的图像比屏幕更大。

非常感谢

1 个答案:

答案 0 :(得分:0)

要使用直线获取Drawable,您应该在Drawable画布上绘制(转换为位图并绘制),而不是在ImageView画布上绘制。在ImageView画布上绘图不会在存储在变量中的Drawable上绘制。