游戏首页图片代码:(红色标记为sufaceview的一般使用模版)
public class WelcomeView extends SurfaceView implements SurfaceHolder.Callback //实现生命周期回调接口
{
static Bitmap b;
SurfaceHolder myholder
;
Paint paint; //画笔
int currentAlpha = 0; //当前的不透明值
int sleepTime = 100; //动画的时延ms
float screenWidth, screenHeight;
float currentX; //图片位置
float currentY;
public WelcomeView(Context context) {
super(context);
b = BitmapFactory.decodeResource(this.getResources(), R.drawable.welcome);//加载图片
this.getHolder().addCallback(this); //设置生命周期回调接口的实现者
paint = new Paint(); //创建画笔
paint.setAntiAlias(true); //打开抗锯齿
WindowManager wm = (WindowManager) getContext()//获取屏幕宽度
.getSystemService(Context.WINDOW_SERVICE);
screenWidth = wm.getDefaultDisplay().getWidth();
screenHeight = wm.getDefaultDisplay().getHeight();
currentX = screenWidth / 2 - b.getWidth() / 2;//图片的起始坐标
currentY = screenHeight / 2 - b.getHeight() / 2;
myholder = this.getHolder(); //要初始化下
}
public void myDraw(Canvas canvas) {
canvas.save();
//绘制黑填充矩形清背景
paint.setColor(Color.BLACK);//设置画笔颜色
paint.setAlpha(255);
canvas.drawRect(0, 0, screenWidth, screenHeight, paint);
//进行平面贴图
paint.setAlpha(currentAlpha); //设置当前不透明度
canvas.drawBitmap(b, currentX, currentY, paint);
canvas.restore();
}
public void surfaceCreated(SurfaceHolder holder) //创建时被调用
{
mythread mythread1=new mythread();
mythread1.start();
}
class mythread extends Thread {
public void run() {
for (int i = 255; i > -10; i = i - 10) {//动态更改图片的透明度值并不断重绘
currentAlpha = i;
if (currentAlpha < 0) {
currentAlpha = 0;
}
Canvas canvas = myholder.lockCanvas();//获取画布
try {
synchronized (myholder) {
myDraw(canvas);//绘制
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (canvas != null) {
myholder.unlockCanvasAndPost(canvas);
}
}
try {
Thread.sleep(sleepTime);
} catch (Exception e) {
e.printStackTrace();
}
}
//此时发送消息到主activity,调用下一个界面
//activity.handler.sendEmptyMessage(Constant.COMMAND_GOTO_MENU_VIEW);
}
}
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {//画布改变时调用
}
public void surfaceDestroyed(SurfaceHolder arg0) {//销毁时被调用
}
}