实现图片渐变透明的轮播效果(欢迎界面)

来源:互联网 发布:达内软件培训学校 编辑:程序博客网 时间:2024/06/05 18:06
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; @Overrideprotected 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);//设置不透明度为255paint.setAlpha(currentAlpha);canvas.drawRect(0, 0, screenWidth, screenHeight, paint);canvas.drawBitmap(curLogo, currentX, currentY, paint);}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {screenWidth=width;//根据屏幕大小设置screenHeight = height;}@Overridepublic 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) {}}

 

0 0
原创粉丝点击