Android為TV端助力 Canvas 和 Paint用法


自定義view里面的onDraw方法,在這里我們可以繪制各種圖形,onDraw里面有兩個API我們需要了解清楚他們的用法:Canvas 和 Paint.

Canvas翻譯成中文就是畫布的意思,Canvas負責進行繪制各種各樣的圖形,它有如下的一些繪制圖形方法:

  • drawArc 繪制弧

  • drawBitmap 繪制位圖

  • drawCircle 繪制圓形

  • drawLine 繪制線

  • drawOval 繪制橢圓

  • drawPath 繪制路徑

  • drawPoint 繪制一個點

  • drawPoints 繪制多個點

  • drawRect 繪制矩形

  • drawRoundRect 繪制圓角矩形

  • drawText 繪制字符串

  • drawTextOnPath 沿着路徑繪制字符串

更多的繪制方法參考:https://developer.android.com/reference/android/graphics/Canvas.html.

Paint翻譯成中文有油漆塗料的意思,Paint主要負責設置繪圖的風格,包括畫筆的顏色,粗細,填充風格等,它有如下的一些設置方法:

  • setARGB/setColor 設置顏色

  • setAlpha 設置透明度

  • setAntiAlias 設置是否抗鋸齒

  • setShader 設置畫筆的填充效果

  • setShadowLayer 設置陰影

  • setStyle 設置畫筆風格

  • setStrokeWidth 設置空心邊框的寬度

  • setTextSize 設置繪制文本時文字的大小

  • setStrokeCap(Paint.Cap.ROUND) 設置為圓角

更多的設置方法參考:https://developer.android.com/reference/android/graphics/Paint.html

繪制圓形:drawCircle(float cx, float cy, float radius, Paint paint)

cx: 圓心的x坐標 
cy: 圓心的y坐標 
radius: 圓的半徑 
paint: 繪制風格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint=new Paint();
   //去鋸齒    paint.setAntiAlias(true);
   //設置顏色    paint.setColor(getResources().getColor(android.R.color.holo_blue_light));
   //繪制普通圓    canvas.drawCircle(200,200,100,paint);
   //設置空心Style    paint.setStyle(Paint.Style.STROKE);
   //設置空心邊框的寬度    paint.setStrokeWidth(20);
   //繪制空心圓    canvas.drawCircle(200,500,90,paint); }

繪制矩形:drawRect(float left, float top, float right, float bottom, Paint paint) / drawRect(RectF rect, Paint paint)

left: 矩形left的x坐標 
top: 矩形top的y坐標 
right: 矩形right的x坐標 
bottom: 矩形bottom的y坐標 
paint: 繪制風格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint = new Paint();
   //去鋸齒    paint.setAntiAlias(true);
   //設置顏色    paint.setColor(getResources().getColor(android.R.color.holo_blue_light));
   //繪制正方形    canvas.drawRect(100, 100, 300, 300, paint);
   //上面代碼等同於    //RectF rel=new RectF(100,100,300,300);    //canvas.drawRect(rel, paint);    //設置空心Style    paint.setStyle(Paint.Style.STROKE);
   //設置空心邊框的寬度    paint.setStrokeWidth(20);
   //繪制空心矩形    canvas.drawRect(100, 400, 600, 800, paint); }

 

繪制圓角矩形:drawRoundRect(float left, float top, float right, float bottom, float rx, float ry, Paint paint) / drawRoundRect(RectF rect, float rx, float ry, Paint paint)

left: 圖形left的x坐標 
top: 圖形top的y坐標 
right: 圖形right的x坐標 
bottom: 圖形bottom的y坐標 
rx: x方向的圓角半徑 
ry: y方向的圓角半徑 
paint > 繪制風格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint = new Paint();
   //去鋸齒    paint.setAntiAlias(true);
   //設置顏色    paint.setColor(getResources().getColor(android.R.color.holo_blue_light));
   //繪制圓角矩形    canvas.drawRoundRect(100, 100, 300, 300, 30, 30, paint);
   //上面代碼等同於    //RectF rel=new RectF(100,100,300,300);    //canvas.drawRoundRect(rel,30,30,paint);
   //設置空心Style    paint.setStyle(Paint.Style.STROKE);
   //設置空心邊框的寬度    paint.setStrokeWidth(20);
   //繪制空心圓角矩形    canvas.drawRoundRect(100, 400, 600, 800, 30, 30, paint); }

繪制橢圓:drawOval(float left, float top, float right, float bottom, Paint paint) 

left: 圖形left的x坐標 
top: 圖形top的y坐標 
right: 圖形right的x坐標 
bottom: 圖形bottom的y坐標 
paint: 繪制風格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint = new Paint();
   //去鋸齒    paint.setAntiAlias(true);
   //設置顏色    paint.setColor(getResources().getColor(android.R.color.holo_orange_dark));
   //繪制橢圓    canvas.drawOval(100, 100, 500, 300, paint);
   //設置空心Style    paint.setStyle(Paint.Style.STROKE);
   //設置空心邊框的寬度    paint.setStrokeWidth(20);
   //繪制空心橢圓    canvas.drawOval(100, 400, 600, 800, paint); }

繪制弧:drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)

oval: 指定圓弧的外輪廓矩形區域 
startAngle: 圓弧起始角度,單位為度 
sweepAngle: 圓弧掃過的角度,順時針方向,單位為度 
useCenter: 如果為True時,在繪制圓弧時將圓心包括在內,通常用來繪制扇形 
paint: 繪制風格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint = new Paint();
   //去鋸齒    paint.setAntiAlias(true);
   //設置顏色    paint.setColor(getResources().getColor(android.R.color.holo_orange_dark));
   RectF rel = new RectF(100, 100, 300, 300); 
// 設置為圓角

  paint .setStrokeCap(Paint.Cap.ROUND);
     //實心圓弧
     canvas.drawArc(rel, 0, 270, false, paint);
   //實心圓弧 將圓心包含在內    RectF rel2 = new RectF(100, 400, 300, 600);    canvas.drawArc(rel2, 0, 270, true, paint);
   //設置空心Style    paint.setStyle(Paint.Style.STROKE);    paint.setStrokeWidth(20);
   RectF rel3 = new RectF(100, 700, 300, 900);    canvas.drawArc(rel3, 0, 270, false, paint);
   RectF rel4 = new RectF(100, 1000, 300, 1200);    canvas.drawArc(rel4, 0, 270, true, paint); }

繪制文字:drawText(String text, float x, float y, Paint paint)

text: 文本 
x: 文本origin的x坐標 
y: 文本baseline的y坐標 
paint: 繪制風格

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   Paint paint = new Paint();
   //去鋸齒    paint.setAntiAlias(true);
   //設置顏色    paint.setColor(getResources().getColor(android.R.color.holo_orange_dark));    paint.setTextSize(100);
   //繪制文本    canvas.drawText("jEh", 80, 150, paint); }
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM