突出显示imageView的一部分

时间:2014-01-25 16:59:00

标签: android imageview

嗨,我想这是一个非常简单的解决方案,但我无法弄清楚自己。 假设我们有4个点(start_X,start_Y,end_X,end_Y),我们必须向用户显示此选择。

目前,我认为最佳解决方案是拥有3张图片视图:

  1. 原创(没有改变);
  2. 面具(任何半透明颜色)
  3. 部分(原始图像的切出部分)
  4. 并将它们显示为以下:3> 2> 1

    这个解决方案很棒,但我无法完成它。坚持裁剪图像部分并将其插入原始图像所属的“地点”;

    问题是 - 这个问题是否有其他解决方案?如果没有 - 如何使用这4个点裁剪部分图像然后将此图像放在它所属的非常精确的位置?

    Udate 1 创建具有透明背景(可能是.png)且与原始图像大小相同的新位图。然后在特殊位置将切割部分添加到其中并将其用作图像3(如上所述); 此解决方案是否正确?如果是的话怎么做? Desired effect

1 个答案:

答案 0 :(得分:3)

试试这个:

class BD extends BitmapDrawable {
    private Rect mSelection;

    public BD(Resources res, Bitmap bitmap) {
        super(res, bitmap);
        mSelection = new Rect(20, 20, 60, 60);
    }

    @Override
    public void draw(Canvas canvas) {
        super.draw(canvas);
        Log.d(TAG, "draw " + canvas.getMatrix());
        canvas.clipRect(mSelection, Op.DIFFERENCE);
        canvas.drawColor(0x66000000);
    }
}

测试代码(将其放在onCreate中):

ImageView iv = new ImageView(this);
Resources res = getResources();
Bitmap b = BitmapFactory.decodeResource(res, R.drawable.layer0);
Drawable d = new BD(res, b);
iv.setImageDrawable(d);
setContentView(iv);