Клип вокруг изображения с помощью Xfermode в Android
Мне нужно создать округлую ImageView
в Android. Сейчас пользуюсь 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);
}
}
Но я бы хотел использовать аппаратное ускорение с этим View. Могу ли я использовать XferMode
класс для этого ImageView
?
1 ответ
XferMode работает с аппаратным ускорением. Однако у него есть некоторые ограничения: http://developer.android.com/guide/topics/graphics/hardware-accel.html
Однако, если вы все еще хотите использовать clipPath, вы не сможете использовать аппаратное ускорение.