Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 突出显示imageView的部分_Android_Imageview - Fatal编程技术网

Android 突出显示imageView的部分

Android 突出显示imageView的部分,android,imageview,Android,Imageview,嗨,我想这是一个非常简单的解决方案,但我自己也无法解决。 假设我们有4个点(起点X、起点Y、终点X、终点Y),我们必须向用户显示此选择 目前,我认为最好的解决方案是有3个ImageView: 原件(无变更) 遮罩(任何半透明颜色) 部分(原始图像的剪切部分) 并显示如下:3>2>1 这个解决方案很好,但我无法完成。粘贴在裁剪图像部分并根据原始图像将其插入其所属的“位置” 问题是-这个问题还有其他解决方案吗?如果没有,那么-如何使用这4个点裁剪图像的一部分,然后将该图像放在它所属的位置? Udat

嗨,我想这是一个非常简单的解决方案,但我自己也无法解决。 假设我们有4个点(起点X、起点Y、终点X、终点Y),我们必须向用户显示此选择

目前,我认为最好的解决方案是有3个ImageView:

  • 原件(无变更)
  • 遮罩(任何半透明颜色)
  • 部分(原始图像的剪切部分)
  • 并显示如下:3>2>1

    这个解决方案很好,但我无法完成。粘贴在裁剪图像部分并根据原始图像将其插入其所属的“位置”

    问题是-这个问题还有其他解决方案吗?如果没有,那么-如何使用这4个点裁剪图像的一部分,然后将该图像放在它所属的位置?

    Udate 1 创建具有透明背景(.png)和与原始图像相同大小的新位图。然后在特殊位置添加切割部分,并将其用作图像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);