android 带弧形背景,[Android日常]绘制弧形渐变背景
最近要修改用戶空間頭部信息顯示,參考了好多APP的用戶空間,都有一個(gè)弧形的背景,看著挺漂亮的。實(shí)現(xiàn)這種效果,有兩種實(shí)現(xiàn)方式:1、作圖;2、通過(guò)代碼進(jìn)行繪制。今天就講講如何通過(guò)canvas進(jìn)行繪制。
一、用到的知識(shí)點(diǎn)
1、Android或或者Java中繪圖需要用到Canvas和Paint類,一個(gè)是畫布,一個(gè)是畫筆;
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);
}
@Override
protected 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);//畫圓弧,這個(gè)時(shí)候,繪制沒(méi)有經(jīng)過(guò)圓心
}
總結(jié)
以上是生活随笔為你收集整理的android 带弧形背景,[Android日常]绘制弧形渐变背景的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sbo是什么币
- 下一篇: android 栏目编辑,android