Android clipPath无效

时间:2016-12-01 08:54:45

标签: android android-canvas clip

我正在尝试在我的imageview中修剪路径。但什么都没发生。

我的ImageView

 public static class CliptImageView extends ImageView {
    Path path = new Path();

    public CliptImageView(Context context) {
        super(context);
    }

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

    public CliptImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        path.reset();
        float y = getMeasuredHeight() / 2.0f;
        float x = getMeasuredWidth() / 2.0f;
        path.addCircle(x,y, 20,Path.Direction.CW);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.save();

        canvas.clipPath(path, Region.Op.DIFFERENCE);

        super.onDraw(canvas);
        canvas.restore();
    }
}

我将imageview以编程方式添加到像这样的linearLayout

      private View getMiddleArea() {
        CliptImageView imageView = new CliptImageView(getContext());


        LinearLayout.LayoutParams params =
                new LinearLayout.LayoutParams(
                        0, ViewGroup.LayoutParams.MATCH_PARENT, 2);

        imageView.setLayoutParams(params);
        imageView.setBackgroundColor(ContextCompat.getColor(getContext(),R.color.white));



//        imageView.setBackgroundResource(R.drawable.bottom_bar_semicircle);
//        imageView.getBackground().setLevel(5000);
        return imageView;
    }

什么都没发生。视图保持白色。所以我显然做错了什么。但我不知道是什么。最近两天我有很多试验和错误。但似乎没有任何效果。

所以任何有助于我走上正确道路的帮助都会受到赞赏

修改更新

这就是我想要实现的目标。一个透明的圆圈,可以剪切视图并使一切变得透明

enter image description here

0 个答案:

没有答案