常州钟楼区邹区建设局网站,门户网站建设 存在的问题,南昌做个网站多少钱,备案 手机网站最近要修改用户空间头部信息显示#xff0c;参考了好多APP的用户空间#xff0c;都有一个弧形的背景#xff0c;看着挺漂亮的。实现这种效果#xff0c;有两种实现方式#xff1a;1、作图#xff1b;2、通过代码进行绘制。今天就讲讲如何通过canvas进行绘制。一、用到的知…最近要修改用户空间头部信息显示参考了好多APP的用户空间都有一个弧形的背景看着挺漂亮的。实现这种效果有两种实现方式1、作图2、通过代码进行绘制。今天就讲讲如何通过canvas进行绘制。一、用到的知识点1、Android或或者Java中绘图需要用到Canvas和Paint类一个是画布一个是画笔2、canvas.drawRect和canvas.drawArc的使用3、LinearGradient线性渐变和Paint.setShader的使用二、具体代码public class ArcBackgroundView extends View {private Paint mPaint;private int mStartColor, mEndColor;public ArcBackgroundView(Context context) {this(context, null);}public ArcBackgroundView(Context context, Nullable AttributeSet attrs) {this(context, attrs, 0);}public ArcBackgroundView(Context context, Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);mPaint new Paint(Paint.ANTI_ALIAS_FLAG);mPaint.setStyle(Paint.Style.FILL);mStartColor ContextCompat.getColor(context, R.color.top_gradient_start);mEndColor ContextCompat.getColor(context, R.color.top_gradient_end);}Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);int width getWidth();int height getHeight();LinearGradient linearGradient new LinearGradient(0,0, width, height, mStartColor, mEndColor, Shader.TileMode.CLAMP);mPaint.setShader(linearGradient);canvas.drawRect(new Rect(0, 0 , width, height-20), mPaint);RectF oval new RectF(0, height-40, width, height);canvas.drawArc(oval,0,180,false,mPaint);//画圆弧这个时候绘制没有经过圆心}