最近学习了android 2D 应用的开发,拿来和大家分享一下,学习2D 开发前我们先了解一下Su易做图ceView的使用以及贴图技术的使用,最后呢,是一个简单的2的游戏的实现。
1.Su易做图ceView的一些用法
提供了一个专门的绘图渲染的图形嵌入在一个视图层次;Su易做图ceView负责将图形正确的显示在屏幕上,访问底层图形是通过Su易做图ceHolder提供接口,可通过调用getHolder(),图形创建Su易做图ceView的窗口是可见的;实现方法是su易做图ceCreated(Su易做图ceHolder)和su易做图ceDestroyed(Su易做图ceHolder)销毁图形
简单的例子如下
[java]
package com.nyist.wj;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Paint.Style;
import android.os.Bundle;
import android.view.Su易做图ceHolder;
import android.view.Su易做图ceView;
public class Su易做图ceViewActivity extends Activity {
MySu易做图ceView mySu易做图ceView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mySu易做图ceView = new MySu易做图ceView(this);
setContentView(mySu易做图ceView);
}
public class MySu易做图ceView extends Su易做图ceView implements
Su易做图ceHolder.Callback {
Su易做图ceViewActivity su易做图ceViewActivity; // Activity的引用
Paint paint; // 画笔的引用
public MySu易做图ceView(Context context) // 构造器
{
super(context);
this.su易做图ceViewActivity = (Su易做图ceViewActivity) context; // 拿到Activity引用
this.getHolder().addCallback(this); // 设置生命周期回调接口的实现者
paint = new Paint(); // 创建画笔
paint.setAntiAlias(true); // 打开抗锯齿
}
@Override
protected void onDraw(Canvas canvas) // onDraw方法
{
paint.setColor(Color.WHITE); // 设置画笔颜色为白色
canvas.drawRect(0, 0, getWidth(), getHeight(), paint); // 绘制白色矩形背景
paint.reset(); // 清除画笔设置
paint.setARGB(50, 0, 255, 0); // 设置画笔颜色和透明度
paint.setStrokeWidth(5); // 设置画笔宽度
RectF rf = new RectF(50, 100, 160, 180); // 创建一个矩形
canvas.drawRect(rf, paint); // 绘制矩形
paint.setARGB(50, 0, 0, 255); // 设置画笔颜色和透明度
paint.setStyle(Style.STROKE); // 设置风格为边框
paint.setStrokeWidth(5); // 设置画笔宽度
Rect r = new Rect(200, 100, 300, 180); // 创建一个矩形
canvas.drawRect(r, paint); // 画一个矩形边框
paint.setColor(Color.RED); // 设置画笔颜色
paint.setAntiAlias(true); // 打开抗锯齿
canvas.drawCircle(100, 250, 30, paint);// 画一个圆
paint.setColor(Color.YELLOW); // 设置画笔颜色
rf = new RectF(200, 250, 300, 300); // 创建一个矩形
canvas.drawOval(rf, paint); // 画一个椭圆,充满矩形
paint.reset(); // 清除画笔设置
paint.setColor(Color.RED); // 设置画笔颜色
paint.setTextSize(40); // 设置文字大小
paint.setStyle(Style.FILL_AND_STROKE);
canvas.drawText("loading...", 50, 350, paint); // 画一个字符串
}
@Override
public void su易做图ceCreated(Su易做图ceHolder holder) // 创建时被调用
{
Canvas canvas = holder.lockCanvas(); // 获取画布
try {
synchronized (holder) {
onDraw(canvas);
} // 绘制
} catch (Exception e) {
e.printStackTrace();
} finally {
if (canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
}
@Override
public void su易做图ceDestroyed(Su易做图ceHolder holder) {
} // 继承方法,空实现
@Override
// 继承方法,空实现
public void su易做图ceChanged(Su易做图ceHolder holder, int format, int width,
int height) {
}
}
}
实现的效果是:
2.贴图技术的使用
贴图技术主要包括图片的移动、旋转、透明度、等变化
下面是关于贴图技术的使用方法 首先是自定义的一个布局
[html]
<com.nyist.wj.Mysu易做图ceView
android:id="@+id/mysu易做图ceview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
然后就是实现自定义布局引用的类
[java]
package com.nyist.wj;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class Mysu易做图ceView extends View {
Bitmap bitmap;
Paint paint;
public Mysu易做图ceView(Context context,AttributeSet attributeSet) {
super(context,attributeSet);
// TODO Auto-generated constructor stub
this.initBitmap();
}
public void initBitmap() {
// TODO Auto-
补充:移动开发 , Android ,