android游戏开发学习笔记三(学习书籍 Android游戏编程之从零开始)
生活随笔
收集整理的這篇文章主要介紹了
android游戏开发学习笔记三(学习书籍 Android游戏编程之从零开始)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/**
?* 畫筆
?*?
?* @author 岳振華
?*?
?*/
@SuppressWarnings("unused")
public class PaintSrufaceView extends SurfaceView implements Callback, Runnable {
private SurfaceHolder sfh;
private Thread thread;
private int surfaceW, surfaceH;
private Canvas canvas;
private boolean flag;//surfaceView是否銷毀的標志位
public PaintSrufaceView(Context context) {
super(context);
/********** 畫圖所必需 *********************/
sfh = this.getHolder();// 獲得surfaceHolder對象
sfh.addCallback(this);
thread = new Thread(this);
this.setKeepScreenOn(true);// 保持屏幕常亮
this.setFocusable(true);
/********************************************/
}
/**
* 開始動畫
*/
@Override
public void startAnimation(Animation animation) {
super.startAnimation(animation);
}
/**************************** callback的幾個方法 ********************/
/**
* 當Surface第一次創建后會立即調用該函數 一般情況下都是在另外的線程來繪制界面,所以不要在這個函數中繪制Surface
*/
@Override
public void surfaceCreated(SurfaceHolder holder) {
surfaceW = this.getWidth();
surfaceH = this.getHeight();
thread = new Thread(this);
flag=true;
thread.start();// 開啟線程
}
/**
* 當Surface的狀態(大小和格式)發生變化的時候會調用 該函數 在surfaceCreated調用后該函數至少會被調用一次
*/
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
flag=false;
}
/**************************** callback的幾個方法 ********************/
/**
* 繪圖方法
*/
private void draw() {
try {
// 獲得canvas實例
canvas = sfh.lockCanvas();
if (canvas != null) {
// 利用填充畫布,刷屏
canvas.drawColor(Color.BLACK);
/****************畫圓*****************/
//消除 鋸齒前
Paint paint1 =new Paint();
paint1.setColor(Color.YELLOW);
canvas.drawCircle(50, 50, 20, paint1);
//消除 鋸齒后
paint1.setAntiAlias(true);?
canvas.drawCircle(100, 50, 20, paint1);
/***************************************/
/************寫文本********************/
Paint paint3=new Paint();
paint3.setColor(Color.RED);
canvas.drawText("無透明", 100, 200, paint3);
//半透明
Paint paint2=new Paint();
paint2.setColor(Color.RED);
paint2.setAlpha(0x77);
canvas.drawText("半透明", 100, 220, paint2);
/**************************************/
/*************錨點**********************/
//-----設置繪制文本的錨點
canvas.drawText("錨點", 20, 90, new Paint());
Paint paint4 = new Paint();
paint4.setColor(Color.GREEN);
//設置以文本的中心點繪制
paint4.setTextAlign(Paint.Align.CENTER);
canvas.drawText("錨點", 20, 105, paint4);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != canvas) {
sfh.unlockCanvasAndPost(canvas);// 提交畫布
}
}
}
@SuppressWarnings("static-access")
@Override
public void run() {
while(flag)
{
// 繪圖
draw();
try {
thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
?* 畫筆
?*?
?* @author 岳振華
?*?
?*/
@SuppressWarnings("unused")
public class PaintSrufaceView extends SurfaceView implements Callback, Runnable {
private SurfaceHolder sfh;
private Thread thread;
private int surfaceW, surfaceH;
private Canvas canvas;
private boolean flag;//surfaceView是否銷毀的標志位
public PaintSrufaceView(Context context) {
super(context);
/********** 畫圖所必需 *********************/
sfh = this.getHolder();// 獲得surfaceHolder對象
sfh.addCallback(this);
thread = new Thread(this);
this.setKeepScreenOn(true);// 保持屏幕常亮
this.setFocusable(true);
/********************************************/
}
/**
* 開始動畫
*/
@Override
public void startAnimation(Animation animation) {
super.startAnimation(animation);
}
/**************************** callback的幾個方法 ********************/
/**
* 當Surface第一次創建后會立即調用該函數 一般情況下都是在另外的線程來繪制界面,所以不要在這個函數中繪制Surface
*/
@Override
public void surfaceCreated(SurfaceHolder holder) {
surfaceW = this.getWidth();
surfaceH = this.getHeight();
thread = new Thread(this);
flag=true;
thread.start();// 開啟線程
}
/**
* 當Surface的狀態(大小和格式)發生變化的時候會調用 該函數 在surfaceCreated調用后該函數至少會被調用一次
*/
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
flag=false;
}
/**************************** callback的幾個方法 ********************/
/**
* 繪圖方法
*/
private void draw() {
try {
// 獲得canvas實例
canvas = sfh.lockCanvas();
if (canvas != null) {
// 利用填充畫布,刷屏
canvas.drawColor(Color.BLACK);
/****************畫圓*****************/
//消除 鋸齒前
Paint paint1 =new Paint();
paint1.setColor(Color.YELLOW);
canvas.drawCircle(50, 50, 20, paint1);
//消除 鋸齒后
paint1.setAntiAlias(true);?
canvas.drawCircle(100, 50, 20, paint1);
/***************************************/
/************寫文本********************/
Paint paint3=new Paint();
paint3.setColor(Color.RED);
canvas.drawText("無透明", 100, 200, paint3);
//半透明
Paint paint2=new Paint();
paint2.setColor(Color.RED);
paint2.setAlpha(0x77);
canvas.drawText("半透明", 100, 220, paint2);
/**************************************/
/*************錨點**********************/
//-----設置繪制文本的錨點
canvas.drawText("錨點", 20, 90, new Paint());
Paint paint4 = new Paint();
paint4.setColor(Color.GREEN);
//設置以文本的中心點繪制
paint4.setTextAlign(Paint.Align.CENTER);
canvas.drawText("錨點", 20, 105, paint4);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != canvas) {
sfh.unlockCanvasAndPost(canvas);// 提交畫布
}
}
}
@SuppressWarnings("static-access")
@Override
public void run() {
while(flag)
{
// 繪圖
draw();
try {
thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
轉載于:https://www.cnblogs.com/retacn-yue/archive/2012/09/05/2761347.html
總結
以上是生活随笔為你收集整理的android游戏开发学习笔记三(学习书籍 Android游戏编程之从零开始)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 薪水最高的专业 高考选专业时一定要看
- 下一篇: 融资融券标的股是什么意思