Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android游戲 >> Android游戲開發 >> Android游戲開發教程之五:Path路徑類和Typeface字體類詳解

Android游戲開發教程之五:Path路徑類和Typeface字體類詳解

編輯:Android游戲開發

       在上節Canvas與Paint的應用實例中提到了Path路徑和Typeface字體兩個類,本節來詳解Path路徑類和Typeface字體類的使用。

       Path路徑類

       Path路徑對於Android 2D繪圖或者說Android游戲開發來說是很重要的。理解Path路徑可以想想在Photoshop中使用鋼筆工具繪制路徑的過程。Path路徑類在位於android.graphics.Path中,Path的構造方法比較簡單,如下:

       Path cwj=new Path();  //構造方法

       下面我們畫一個封閉的原型路徑,我們使用Path類的addCircle方法。

       cwj.addCircle(10,10,50,Direction.CW); //參數一為x軸水平位置,參數二為y軸垂直位置,第三個參數為圓形的半徑,最後是繪制的方向,CW為順時針方向,而CCW是逆時針方向。

       結合上次提到的Canvas類中的繪制方法drawPath和drawTextOnPath,我們繼續可以在onDraw中加入。

       canvas.drawPath(cwj,paintPath); //提示大家這裡paintPath為路徑的畫刷顏色,可以見下文完整的源代碼。

       canvas.drawTextOnPath("Android123 - CWJ",cwj,0,15,paintText); //將文字繪制到路徑中去,有關drawTextOnPath的參數如下:

       方法原型public void drawTextOnPath (String text, Path path, float hOffset, float vOffset, Paint paint) 

       參數說明:

       text:為需要在路徑上繪制的文字內容。

       path:將文字繪制到哪個路徑。 

       hOffset:距離路徑開始的距離。

       vOffset:離路徑的上下高度,這裡Android開發網提示大家,該參數類型為float浮點型,除了精度為8位小數外,可以為正或負,當為正時文字在路徑的圈裡面,為負時在路徑的圈外面。

       paint:最後仍然是一個Paint對象用於制定Text本文的顏色、字體、大小等屬性。

       下面是我們的onDraw方法中如何繪制路徑的演示代碼為:

Java代碼
  1.  @Override  
  2.  protected void onDraw(Canvas canvas) {   
  3.   
  4.   Paint paintPath=new Paint();   
  5.   
  6.   Paint paintText=new Paint();   
  7.   
  8.   paintPath.setColor(Color.Red); //路徑的畫刷為紅色   
  9.   
  10.   paintText.setColor(Color.Blue); //路徑上的文字為藍色   
  11.   
  12.   Path pathCWJ=new Path();   
  13.   
  14.   pathCWJ.addCircle(10,10,50,Direction.CW); // 半徑為50px,繪制的方向CW為順時針   
  15.   
  16.   canvas.drawPath(pathCWJ,paintPath);   
  17.   
  18.  canvas.drawTextOnPath("Android123 - CWJ",pathCWJ,0,15,paintText); //在路徑上繪制文字   
  19. }  

       有關路徑類常用的方法如下:

       void  addArc(RectF oval, float startAngle, float sweepAngle)  //為路徑添加一個多邊形
 
       void  addCircle(float x, float y, float radius, Path.Direction dir)  //給path添加圓圈
 
       void  addOval(RectF oval, Path.Direction dir)  //添加橢圓形

       void  addRect(RectF rect, Path.Direction dir)  //添加一個區域
  
       void  addRoundRect(RectF rect, float[] radii, Path.Direction dir)  //添加一個圓角區域
 
       boolean  isEmpty()  //判斷路徑是否為空
  
       void  transform(Matrix matrix)  //應用矩陣變換
 
       void  transform(Matrix matrix, Path dst)  //應用矩陣變換並將結果放到新的路徑中,即第二個參數。

       有關路徑的高級效果大家可以使用PathEffect類,有關路徑的更多實例將在今後的游戲開發實戰中講解道。

       Typeface字體類

       平時我們在TextView中需要設置顯示的字體可以通過TextView中的setTypeface方法來指定一個Typeface對象,因為Android的字體類比較簡單,我們列出所有成員方法:

       static Typeface  create(Typeface family, int style)  //靜態方法,參數一為字體類型這裡是Typeface的靜態定義,如宋體,參數二風格,如粗體,斜體
 
       static Typeface  create(String familyName, int style)  //靜態方法,參數一為字體名的字符串,參數二為風格同上,這裡我們推薦使用上面的方法。
 
       static Typeface  createFromAsset(AssetManager mgr, String path)  //靜態方法,參數一為AssetManager對象,主要用於從APK的assets文件夾中取出字體,參數二為相對於Android工程下的assets文件夾中的外掛字體文件的路徑。
 
       static Typeface  createFromFile(File path)  //靜態方法,從文件系統構造一個字體,這裡參數可以是sdcard中的某個字體文件
 
       static Typeface  createFromFile(String path)  //靜態方法,從指定路徑中構造字體
 
       static Typeface  defaultFromStyle(int style) //靜態方法,返回默認的字體風格
 
       int  getStyle()  //獲取當前字體風格

       final boolean  isBold()  //判斷當前是否為粗體

       final boolean  isItalic()  //判斷當前風格是否為斜體

       本類的常量靜態定義,首先為字體類型名稱:

       Typeface DEFAULT 
       Typeface DEFAULT_BOLD
       Typeface MONOSPACE
       Typeface SANS_SERIF
       Typeface SERIF

       字體風格名稱:

       int BOLD  
       int BOLD_ITALIC  
       int ITALIC
       int NORMAL

       我們將在下節具體講解onDraw以及什麼時候會觸發繪制方法,來實現我們自定義或子類化控件。

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