要繪圖,首先得調整畫筆,待畫筆調整好以後,再將圖像繪製到畫布上,這樣才能夠顯示在手機屏幕上。Android 中的畫筆是 Paint類,Paint 中包含了不少方法對其屬性進行設置,主要方法以下:
setAntiAlias: 設置畫筆的鋸齒效果。
setColor: 設置畫筆顏色
setARGB: 設置畫筆的a,r,p,g值。
setAlpha: 設置Alpha值
setTextSize: 設置字體尺寸。
setStyle: 設置畫筆風格,空心或者實心。
setStrokeWidth: 設置空心的邊框寬度。
getColor: 獲得畫筆的顏色
getAlpha: 獲得畫筆的Alpha值。
下面是一個簡單的示例 來講明這些方法的使用。先來看看運行效果吧。
android
package eoe.Demo; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; public class GameView extends View implements Runnable { public final static String TAG = "Example_05_03_GameView"; // 聲明Paint對象 private Paint mPaint = null; public GameView(Context context) { super(context); // 構建對象 mPaint = new Paint(); // 開啓線程 new Thread(this).start(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 設置Paint爲無鋸齒 mPaint.setAntiAlias(true); // 設置Paint的顏色 mPaint.setColor(Color.RED); mPaint.setColor(Color.BLUE); mPaint.setColor(Color.YELLOW); mPaint.setColor(Color.GREEN); // 一樣是設置顏色 mPaint.setColor(Color.rgb(255, 0, 0)); // 提取顏色 Color.red(0xcccccc); Color.green(0xcccccc); // 設置paint的顏色和Alpha值(a,r,g,b) mPaint.setAlpha(220); // 這裏能夠設置爲另一個paint對象 // mPaint.set(new Paint()); // 設置字體的尺寸 mPaint.setTextSize(14); // 設置paint的風格爲「空心」 // 固然也能夠設置爲"實心"(Paint.Style.FILL) mPaint.setStyle(Paint.Style.STROKE); // 設置「空心」的外框的寬度 mPaint.setStrokeWidth(5); // 獲得Paint的一些屬性 顏色、Alpha值、外框的寬度、字體尺寸 Log.i("TAG", "paint Color------>" + mPaint.getColor()); Log.i(TAG, "paint Alpha------->" + mPaint.getAlpha()); Log.i("TAG", "paint StrokeWidth--------->" + mPaint.getStrokeWidth()); Log.i("TAG", "paint TextSize----------->" + mPaint.getTextSize()); // 繪製一空心個矩形 canvas.drawRect((320 - 80), 20, (320 - 80) / 2 + 80, 20 + 40, mPaint); // 設置風格爲實心 mPaint.setStyle(Paint.Style.FILL); mPaint.setColor(Color.GREEN); // 繪製綠色實心矩形 canvas.drawRect(0, 20, 40, 20 + 40, mPaint); } // 觸筆事件 public boolean onTouchEvent(MotionEvent event) { return true; } // 按鍵按下事件 public boolean onKeyDown(int keyCode, KeyEvent event) { return true; } // 按鍵彈起事件 public boolean onKeyUp(int keyCode, KeyEvent event) { return true; } public boolean onKeyMultiple(int KeyCode, int repeatCount, KeyEvent event) { return true; } @Override public void run() { while (!Thread.currentThread().isInterrupted()) { try { Thread.sleep(100); } catch (Exception e) { Thread.currentThread().interrupt(); } // 更新界面 postInvalidate(); } } } package eoe.Demo; import android.app.Activity; import android.os.Bundle; public class Activity01 extends Activity { /** Called when the activity is first created. */ private GameView mGameView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mGameView = new GameView(this); setContentView(mGameView); } }
/** canvas
* Paint類介紹 app
* ide
* Paint即畫筆,在繪圖過程當中起到了極其重要的做用,畫筆主要保存了顏色, post
* 樣式等繪製信息,指定了如何繪製文本和圖形,畫筆對象有不少設置方法, 字體
* 大致上能夠分爲兩類,一類與圖形繪製相關,一類與文本繪製相關。 優化
* 動畫
* 1.圖形繪製 this
* setARGB(int a,int r,int g,int b); spa
* 設置繪製的顏色,a表明透明度,r,g,b表明顏色值。
*
* setAlpha(int a);
* 設置繪製圖形的透明度。
*
* setColor(int color);
* 設置繪製的顏色,使用顏色值來表示,該顏色值包括透明度和RGB顏色。
*
* setAntiAlias(boolean aa);
* 設置是否使用抗鋸齒功能,會消耗較大資源,繪製圖形速度會變慢。
*
* setDither(boolean dither);
* 設定是否使用圖像抖動處理,會使繪製出來的圖片顏色更加平滑和飽滿,圖像更加清晰
*
* setFilterBitmap(boolean filter);
* 若是該項設置爲true,則圖像在動畫進行中會濾掉對Bitmap圖像的優化操做,加快顯示
* 速度,本設置項依賴於dither和xfermode的設置
*
* setMaskFilter(MaskFilter maskfilter);
* 設置MaskFilter,能夠用不一樣的MaskFilter實現濾鏡的效果,如濾化,立體等 *
* setColorFilter(ColorFilter colorfilter);
* 設置顏色過濾器,能夠在繪製顏色時實現不用顏色的變換效果
*
* setPathEffect(PathEffect effect);
* 設置繪製路徑的效果,如點畫線等
*
* setShader(Shader shader);
* 設置圖像效果,使用Shader能夠繪製出各類漸變效果
*
* setShadowLayer(float radius ,float dx,float dy,int color);
* 在圖形下面設置陰影層,產生陰影效果,radius爲陰影的角度,dx和dy爲陰影在x軸和y軸上的距離,color爲陰影的顏色
*
* setStyle(Paint.Style style);
* 設置畫筆的樣式,爲FILL,FILL_OR_STROKE,或STROKE
*
* setStrokeCap(Paint.Cap cap);
* 當畫筆樣式爲STROKE或FILL_OR_STROKE時,設置筆刷的圖形樣式,如圓形樣式
* Cap.ROUND,或方形樣式Cap.SQUARE
*
* setSrokeJoin(Paint.Join join);
* 設置繪製時各圖形的結合方式,如平滑效果等
*
* setStrokeWidth(float width);
* 當畫筆樣式爲STROKE或FILL_OR_STROKE時,設置筆刷的粗細度
*
* setXfermode(Xfermode xfermode);
* 設置圖形重疊時的處理方式,如合併,取交集或並集,常常用來製做橡皮的擦除效果
*
* 2.文本繪製
* setFakeBoldText(boolean fakeBoldText);
* 模擬實現粗體文字,設置在小字體上效果會很是差
*
* setSubpixelText(boolean subpixelText);
* 設置該項爲true,將有助於文本在LCD屏幕上的顯示效果
*
* setTextAlign(Paint.Align align);
* 設置繪製文字的對齊方向
*
* setTextScaleX(float scaleX);
* 設置繪製文字x軸的縮放比例,能夠實現文字的拉伸的效果
*
* setTextSize(float textSize);
* 設置繪製文字的字號大小
*
* setTextSkewX(float skewX);
* 設置斜體文字,skewX爲傾斜弧度
*
* setTypeface(Typeface typeface);
* 設置Typeface對象,即字體風格,包括粗體,斜體以及襯線體,非襯線體等
*
* setUnderlineText(boolean underlineText);
* 設置帶有下劃線的文字效果
*
* setStrikeThruText(boolean strikeThruText);
* 設置帶有刪除線的效果
*
*/
本文轉自:abc20899.iteye.com/blog/1032802