Android graphics

在Android中通過graphics類來顯示2D圖形。graphics中包括了Canvas(畫布)、Paint(畫筆)、Color(顏色)、Bitmap(圖像)等常用的類。
1.Color(顏色)類
Android系統中顏色的常用表示方法有以下3種:

  (1)int color = Color.BLUE;

  (2)int color = Color.argb(150,200,0,100);

  (3)在xml文件中定義顏色;

  在實際應用當中,我們常用的顏色有以下一些,其顏色常量及其表示的顏色如下所示:

  Color.BLACK 黑色
  Color.GREEN 綠色
  Color.BLUE 藍色
  Color.LTGRAY 淺灰色
  Color.CYAN 青綠色
  Color.MAGENTA 紅紫色
  Color.DKGRAY 灰黑色
  Color.RED 紅色
  Color.YELLOW 黃色
  Color.TRANSPARENT 透明
  Color.GRAY 灰色
  Color.WHITE 白色
  2.Paint(畫筆)類
  setAntiAlias(); //設置畫筆的鋸齒效果

  setColor(); //設置畫筆的顏色

  setARGB(); //設置畫筆的A、R、G、B值

  setAlpha(); //設置畫筆的Alpha值

  setTextSize(); //設置字體的尺寸

  setStyle(); //設置畫筆的風格(空心或實心)

  setStrokeWidth(); //設置空心邊框的寬度

  getColor(); //獲取畫筆的顏色
   3.Canvas(畫布)類
   畫筆屬性設置好之後,還需要將圖像繪製到畫布上。Canvas類可以用來實現各種圖形的繪製工作,如繪製直線、矩形、圓等等。Canvas繪製常用圖形的方法如下:

  繪製直線:canvas.drawLine(float startX, float startY, float stopX, float stopY, Paint paint);

  繪製矩形:canvas.drawRect(float left, float top, float right, float bottom, Paint paint);

  繪製圓形:canvas.drawCircle(float cx, float cy, float radius, Paint paint);

  繪製字符:canvas.drawText(String text, float x, float y, Paint paint);

  繪製圖形:canvas.drawBirmap(Bitmap bitmap, float left, float top, Paint paint);
  4.自定義View的基本實現方法
  首先,我們需要自定義一個類,比如MyView,繼承於View類。然後,複寫View類的onDraw()函數。最後,在onDraw()函數中使用Paint和Canvas對象繪製我們需要的圖形。
 5.動手實踐
 在這裏,我使用上面提到的一些方法,繪製了一幅簡單的北京奧運宣傳畫,包括奧運五環,“北京歡迎您”的宣傳標語以及福娃。做成後的效果圖如圖1所示。
 其中,使用了自定義的MyView類,在MyView類中,重寫了onDraw()函數,並定義幾種不同的畫筆,分別用來繪製各種顏色的奧運五環以及繪製字符串“北京歡迎您”等。具體的MyView.java源代碼如下。

Android_OlympicLogo的MyView.java源代碼
package com.example.android_olympiclogo;

import android.view.View;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;

public class MyView extends View {

    public MyView(Context context) {
        super(context);
    }

    public void onDraw(Canvas canvas) {

        Paint paint_blue = new Paint();                        //繪製藍色的環
        paint_blue.setColor(Color.BLUE);
        paint_blue.setStyle(Style.STROKE);
        paint_blue.setStrokeWidth(10);        
        canvas.drawCircle(110,150,60,paint_blue);

        Paint paint_yellow = new Paint();                //繪製黃色的環
        paint_yellow.setColor(Color.YELLOW);
        paint_yellow.setStyle(Style.STROKE);
        paint_yellow.setStrokeWidth(10);
        canvas.drawCircle((float)175.5, 210, 60, paint_yellow);

        Paint paint_black = new Paint();                   //繪製黑色的環
        paint_black.setColor(Color.BLACK);
        paint_black.setStyle(Style.STROKE);
        paint_black.setStrokeWidth(10);
        canvas.drawCircle(245, 150, 60, paint_black);

        Paint paint_green = new Paint();                  //繪製綠色的環
        paint_green.setColor(Color.GREEN);
        paint_green.setStyle(Style.STROKE);
        paint_green.setStrokeWidth(10);
        canvas.drawCircle(311, 210, 60, paint_green);

        Paint paint_red = new Paint();                       //繪製紅色的環
        paint_red.setColor(Color.RED);
        paint_red.setStyle(Style.STROKE);
        paint_red.setStrokeWidth(10);
        canvas.drawCircle(380, 150, 60, paint_red);

        Paint paint_string = new Paint();                   //繪製字符串
        paint_string.setColor(Color.BLUE);
        paint_string.setTextSize(20);
        canvas.drawText("Welcome to Beijing", 245, 310, paint_string);

        Paint paint_line = new Paint();                       //繪製直線
        paint_line.setColor(Color.BLUE);
        canvas.drawLine(240, 310, 425, 310, paint_line);

        Paint paint_text = new Paint();                      //繪製字符串
        paint_text.setColor(Color.BLUE);
        paint_text.setTextSize(20);
        canvas.drawText("北京歡迎您", 275, 330, paint_text);

        //繪製福娃圖片
        canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.fuwa), 35, 340, paint_line);
    }
}

 此外,還需要將自定義的MyView視圖顯示到手機屏幕上,所以需要在MainAcitivity.java中加載MyView視圖,可以使用setContentView()方法,具體的MainAcitivity.java源代碼如下。
 

Android_OlympicLogo的MainActivity.java源代碼
package com.example.android_olympiclogo;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
        setContentView(new MyView(this));                              //加載MyView
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

當然了,還需要將福娃的圖片放在res下的drawable-hdpi目錄下。這樣纔可以使用BitmapFactory.decodeResource(getResources(),R.drawable.fuwa)方法加載該圖片。

發佈了4 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章