在android中使用xfermode从图像中截取圆形



我需要在Android中创建一个圆角ImageView。现在我使用了Canvas.clipPath(),但它不支持硬件加速。当然,我使用View.LAYER_TYPE_SOFTWARE来处理这个视图。

public class RoundedCornerImageView extends MaptrixImageView
{   
    private final Path clipPath = new Path();
    public RoundedCornerImageView(Context context)
    {
        this(context, null);
    }
    @SuppressLint("NewApi")
    public RoundedCornerImageView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        if (Build.VERSION.SDK_INT >= 11) {
               setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        }
    }
    @Override
    protected void onDraw(Canvas canvas) 
    {   
        float radius = ((float) getWidth()) / 2;
        clipPath.reset();
        clipPath.addCircle(radius, radius, radius, Path.Direction.CW);
        canvas.clipPath(clipPath);
        super.onDraw(canvas);
    }
}

但我想在这个视图中使用硬件加速。我可以将XferMode类用于此ImageView吗?

XferMode适用于硬件加速。不过,它也有一些局限性:http://developer.android.com/guide/topics/graphics/hardware-accel.html#unsupported

但是,如果你仍然想使用clipPath,你将无法使用硬件加速。

相关内容

  • 没有找到相关文章

最新更新