標籤:
瞭解Android繪圖或者自訂View的同學,都知道Canvas 類、Paint類等。今天就來看看Paint的有關描述。
首先看看官網的定義:
The Paint class holds the style and color information about how to draw geometries, text and bitmaps.
翻譯:Paint類擁有如何繪製幾何圖形、文本、位元影像的顏色和樣式等資訊。
Android系統提供了設定畫筆屬性的Api,接下來,就來看一些常用Api的使用說明。
一. Paint類常用Api介紹。
1 public float ascent () 返回基準以上的距離基於當前文本的字型和文字大小。
2 public float descent ()返回基準以下的距離基於當前文本的字型和文字大小。
擷取文字大小時,結合ascent()和descent()使用!
3 public float measureText (String text)返迴文字的寬度
4 public void setARGB (int a, int r, int g, int b)參數 a 畫筆顏色的透明度,取值範圍(0..255). r 畫筆紅色色值,取值範圍(0..255). g 畫筆綠色色值,取值範圍(0..255). b 畫筆藍色色值,取值範圍(0..255). 設定畫筆的ARGB值
5 public void setAntiAlias (boolean aa)參數 aa 真,設定鋸齒平滑,假,清除標識設定是否消除鋸齒
6 public void setColor (int color)參數 color 顏色值(包含透明度)設定畫筆的顏色. 設定畫筆的顏色
7 public ColorFilter setColorFilter (ColorFilter filter)參數 filter 可能為空白。這個綠色器將代替畫筆.設定或清除畫筆的綠色器,返回參數值
8 public void setStrokeWidth (float width)參數 width 設定畫筆的筆畫寬度,無論畫筆樣式是的 Stroke 或者StrokeAndFill. 設定筆畫的寬度。如果為0,則是hairline模式。Hairlines經常繪製一個像素依靠於畫布的matrix。
9 public PathEffect setPathEffect (PathEffect effect)參數effect 可能為空白值。patheffect將替代畫筆.設定繪製路徑的路徑效果。設定或者清除路徑效果。傳遞空值,將清除任何以前的路徑效果。為方便起見,也返回傳遞的參數。
10 public void setStyle (Paint.Style style)參數 style 畫筆的樣式 設定畫筆的樣式,使用它來控制幾何圖形的解釋(除了drawBitmap,總是假定Fill)。畫筆樣式分三種:(1).Paint.Style.STROKE:描邊(2).Paint.Style.FILL_AND_STROKE:描邊並填充(3).Paint.Style.FILL:填充
11 public void setTextAlign (Paint.Align align)參數 align 繪製文本時的畫筆的對齊設定畫筆的文本對齊。它控制文本相對於原點的位置。
12 public void setTextSize (float textSize)參數 textSize 畫筆的文字大小設定畫筆的文字大小。值必須大於0。
以上就是畫筆常用的一些方法,下面,我們看看具體使用。
二. 方法使用。
1.建立Android項目。
2.自訂一個View。
package cn.xinxing.customview.view;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;import android.util.AttributeSet;import android.util.TypedValue;import android.view.View;public class View1 extends View {private Paint mPaint = new Paint();private int DEFAULT_STROKE_WIDTH = 10;// strokeWidthprivate int DEFAULT_RADIUS = 30;// 半徑private int DEFAULT_TEXT_SIZE=20;//private int mStrokeWidth = dp2px(DEFAULT_STROKE_WIDTH);private int mRadius = dp2px(DEFAULT_RADIUS);private int mTextSize=sp2px(DEFAULT_TEXT_SIZE);public View1(Context context) {this(context, null);// TODO Auto-generated constructor stub}public View1(Context context, AttributeSet attrs) {this(context, attrs, 0);// TODO Auto-generated constructor stub}public View1(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// TODO Auto-generated constructor stub}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stub// 繪製一條線段mPaint.setColor(Color.RED);// 設定畫筆顏色為白色mPaint.setAntiAlias(true);// 坑鋸齒mPaint.setStrokeWidth(mStrokeWidth);// 設定畫筆的寬度canvas.drawLine(0, 0, 400, 0, mPaint);// 繪製一條線段// 繪製空心圓mPaint.setColor(Color.BLUE);// 設定畫筆顏色為藍色mPaint.setAntiAlias(true);// 坑鋸齒mPaint.setStyle(Style.STROKE);// 樣式是描邊canvas.drawCircle(100, 60, mRadius, mPaint);// 繪製圓// 繪製填充圓mPaint.setColor(Color.GREEN);// 設定畫筆顏色為綠色mPaint.setStyle(Style.FILL);// 樣式是填充canvas.drawCircle(100, 180, mRadius, mPaint);// 繪製圓// 繪製圓mPaint.setColor(Color.GRAY);// 設定畫筆顏色為綠色mPaint.setStyle(Style.FILL_AND_STROKE);// 樣式是描邊和填充canvas.drawCircle(100, 300, mRadius, mPaint);// 繪製圓// 設定圓的描邊和填充為不一樣的顏色mPaint.setColor(Color.RED);// 設定畫筆顏色為綠色mPaint.setStyle(Style.STROKE);// 樣式是描邊canvas.drawCircle(100, 400, mRadius, mPaint);// 繪製圓mPaint.setColor(Color.YELLOW);// 設定畫筆顏色為綠色mPaint.setStyle(Style.FILL);// 樣式是填充canvas.drawCircle(100, 400, mRadius, mPaint);// 繪製圓// 繪製文字mPaint.setColor(Color.BLACK);// 設定畫筆顏色為綠色mPaint.setTextSize(mTextSize);//設定畫筆文字的大小canvas.drawText("80%", 100, 500, mPaint);//繪製文字}/** * @param dpVal * @return */private int dp2px(int dpVal) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,dpVal, getResources().getDisplayMetrics());}/** * @param spVal * @return */private int sp2px(int spVal) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,spVal, getResources().getDisplayMetrics());}}代碼比較簡單,就不多說 了!來張運行後的,
三. 總結。
本篇只是簡單的列舉了Paint類的常用方法以及簡單使用,僅供參考!本人水平有限,如有錯誤,歡迎指出!
Android 繪圖(一) Paint