package com.example.androidtest;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
private WelcomeView wv = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
wv = new WelcomeView(this);
setContentView(wv);
}
}
package com.example.androidtest;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/**
* 欢迎界面
* @author Administrator
* 实现图片渐变透明的轮播效果
*/
public class WelcomeView extends SurfaceView implements SurfaceHolder.Callback{
private MainActivity mactivity;
private Paint paint;//画笔
private Bitmap[] logos = new Bitmap[2];//图片数组
private Bitmap curLogo = null;//当前播放的图片
private int currentAlpha=0; //当前的不透明值
private int screenWidth=480; //屏幕宽度
private int screenHeight=320; //屏幕高度
int currentX; //图片位置
int currentY;
public WelcomeView(MainActivity context) {
super(context);
mactivity = context;
this.getHolder().addCallback(this); //设置生命周期回调接口的实现者
//第一步,创建和设置画笔
paint = new Paint();//创建画笔
paint.setAntiAlias(true);//抗锯齿
//第二步,设置要绘画的图片
logos[0] = BitmapFactory.decodeResource(mactivity.getResources(), R.drawable.baina);//工厂模式制作图片
logos[1] = BitmapFactory.decodeResource(mactivity.getResources(), R.drawable.bnkjs);
}
public void onDraw(Canvas canvas){
//绘制黑填充矩形清背景
paint.setColor(Color.BLACK);//设置画笔颜色
paint.setAlpha(255);//设置不透明度为255
paint.setAlpha(currentAlpha);
canvas.drawRect(0, 0, screenWidth, screenHeight, paint);
canvas.drawBitmap(curLogo, currentX, currentY, paint);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
screenWidth=width;//根据屏幕大小设置
screenHeight = height;
}
@Override
public void surfaceCreated(SurfaceHolder holder) { //创建时被调用
new Thread(){
public void run() {
SurfaceHolder myholder=WelcomeView.this.getHolder();//获取回调接口
for (Bitmap bm:logos) {
curLogo = bm;
currentX=screenWidth/2-bm.getWidth()/2;//图片位置
currentY=screenHeight/2-bm.getHeight()/2;
for (int i = 255; i>-10;i=i-10) {
Canvas canvas = myholder.lockCanvas();//获取画布
if(i<0) i=0;//如果当前不透明度小于零,将不透明度置为零
currentAlpha = i;
synchronized (myholder) {
onDraw(canvas);//进行绘制绘制
}
if(canvas!= null){//如果当前画布不为空
myholder.unlockCanvasAndPost(canvas);//解锁画布
}
}
}
};
}.start();
}
public void surfaceDestroyed(SurfaceHolder holder) {
}
}