Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 繪圖(一) Paint

Android 繪圖(一) Paint

編輯:關於Android編程

了解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;// strokeWidth
	private 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
	}

	@Override
	protected 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類的常用方法以及簡單使用,僅供參考!本人水平有限,如有錯誤,歡迎指出!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved