Files
XiaoxintongSystemOS/app/src/main/java/com/uiui/aios/view/JzvdStdRound.java
fanhuitong e5b3385346 version:2.7
fix:
update:视频圆角
2022-09-01 09:31:37 +08:00

93 lines
2.9 KiB
Java

package com.uiui.aios.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
import com.uiui.aios.R;
import cn.jzvd.JzvdStd;
public class JzvdStdRound extends JzvdStd {
private int radius;
private int leftTopRadius;
private int rightTopRadius;
private int rightBottomRadius;
private int leftBottomRadius;
public JzvdStdRound(Context context) {
super(context);
}
public JzvdStdRound(Context context, AttributeSet attrs) {
super(context, attrs);
initAttrs(context, attrs);
}
@Override
public int getLayoutId() {
return R.layout.layout_jzstd_notitle;
}
void initAttrs(Context context, AttributeSet attrs) {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.JzvdStdRound);
radius = a.getDimensionPixelSize(R.styleable.JzvdStdRound_radius, 0);
leftTopRadius = a.getDimensionPixelSize(R.styleable.JzvdStdRound_left_top_radius, 0);
rightTopRadius = a.getDimensionPixelSize(R.styleable.JzvdStdRound_right_top_radius, 0);
rightBottomRadius = a.getDimensionPixelSize(R.styleable.JzvdStdRound_right_bottom_radius, 0);
leftBottomRadius = a.getDimensionPixelSize(R.styleable.JzvdStdRound_left_bottom_radius, 0);
}
public void setRadius(int radius){
this.radius = radius;
invalidate();
}
public void setLeftTopRadius(int leftTopRadius) {
this.leftTopRadius = leftTopRadius;
invalidate();
}
public void setRightTopRadius(int rightTopRadius) {
this.rightTopRadius = rightTopRadius;
invalidate();
}
public void setRightBottomRadius(int rightBottomRadius) {
this.rightBottomRadius = rightBottomRadius;
invalidate();
}
public void setLeftBottomRadius(int leftBottomRadius) {
this.leftBottomRadius = leftBottomRadius;
invalidate();
}
@Override
protected void dispatchDraw(Canvas canvas) {
Path path = new Path();
if (radius > 0) {
path.addRoundRect(new RectF(0, 0, getMeasuredWidth(), getMeasuredHeight()),
radius, radius, Path.Direction.CW);
} else {
path.addRoundRect(new RectF(0, 0, getMeasuredWidth(), getMeasuredHeight()),
new float[]{leftTopRadius, leftTopRadius, rightTopRadius, rightTopRadius,
rightBottomRadius, rightBottomRadius, leftBottomRadius, leftBottomRadius},
Path.Direction.CW);
canvas.setDrawFilter(new PaintFlagsDrawFilter(0,
Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG));
}
canvas.clipPath(path);
super.dispatchDraw(canvas);
}
}