安卓界面——最开始界面的加载

这里写图片描述
点开软件进入该界面自动加载……..

public class PanlewarActivity extends ActionBarActivity {
    int screenwidth;
    int screenheight;
    ProcessView processview;

    Handler myhander = new Handler() {

        public void handleMessage(Message msg) {

        }
    };
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);

        requestWindowFeature(Window.FEATURE_NO_TITLE);//取消标题
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);//全屏
        DisplayMetrics dm = new DisplayMetrics();//获取屏幕大小
        getWindowManager().getDefaultDisplay().getMetrics(dm);

        screenwidth = dm.widthPixels;
        screenheight = dm.heightPixels;

        processview = new ProcessView(this, 1, screenwidth, screenheight);
        this.setContentView(processview);
    }


}
public class ProcessView extends SurfaceView implements SurfaceHolder.Callback{

    Bitmap processbackground;

    private TutorialThread thread;//刷帧的线程
    Bitmap process;
    int proces=0;
    int startx,starty;
    private Paint paint;
    private boolean flag=true;
    private PanlewarActivity activity;
    int scren_width=400;
    int scren_heigt=800;
    private int type;
public ProcessView(PanlewarActivity activity, int type,int screenwidth,int screenheight) {
       super(activity);
       this.activity = activity;//得到activity的引用
       getHolder().addCallback(this);
       this.thread = new TutorialThread(getHolder(), this);//初始化重绘线程
       this.type = type;
       paint = new Paint();//创建画笔
   /* */
       this.scren_width=screenwidth;
       this.scren_heigt=screenheight;

        paint.setTextSize(12);//设置字体大小
        process = BitmapFactory.decodeResource(getResources(), R.drawable.process);
        processbackground = BitmapFactory.decodeResource(getResources(), R.drawable.background_prg);
        this.startx=scren_width/2-process.getWidth()/2;
        this.starty=scren_heigt/2-process.getHeight()/2-process.getHeight()/4;

    }
public void onDraw(Canvas canvas){

    Rect rect1 = new Rect(0,0,processbackground.getWidth(),processbackground.getHeight());
    Rect rect2 = new Rect(0,0,scren_width,scren_heigt);
    canvas.drawBitmap(processbackground,rect1,rect2, null);
    canvas.drawBitmap(process,startx,starty, paint);
    canvas.drawRect(startx+proces*(process.getWidth()/100),starty,startx+process.getWidth(),
            starty+process.getHeight(),paint);
    canvas.drawText("加载中……"+ proces + "%"
            ,startx+(process.getWidth()/2)-20,
            starty+(process.getHeight()+20),paint);
}


private WindowManager getWindowManager() {
    // TODO Auto-generated method stub
    return null;
}
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
    // TODO Auto-generated method stub

}

@Override
public void surfaceCreated(SurfaceHolder arg0) {
    // TODO Auto-generated method stub
     this.thread.setFlag(true);//设置线程标志位
     this.thread.start();//启动线程
}

@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
    // TODO Auto-generated method stub
     boolean retry = true;//循环标志位
     thread.setFlag(false);//设置循环标志位
     while (retry) {
         try {
             thread.join();//等待线程结束
             retry = false;
         } 
         catch (InterruptedException e) {}//不断地循环,直到刷帧线程结束
     }
}
class TutorialThread extends Thread{//刷帧线程
    private int span = 600;//睡眠的毫秒数 
    private SurfaceHolder surfaceHolder;
    private ProcessView processView;//processView引用
    private boolean flag = false;//循环标志位
    public TutorialThread(SurfaceHolder surfaceHolder, ProcessView processView) {//构造器
        this.surfaceHolder = surfaceHolder;
        this.processView = processView;//得到加载界面
    }
    public void setFlag(boolean flag){//设置标志位
        this.flag = flag;
    }
    public void run(){//重写的run方法
        Canvas c;//画布
        while (this.flag){//循环
            c = null;
            try {
                // 锁定整个画布,在内存要求比较高的情况下,建议参数不要为null
                c = this.surfaceHolder.lockCanvas(null);
                synchronized (this.surfaceHolder) {
                    processView.onDraw(c);//调用绘制方法
                }
            } finally {
                if(c!= null) {
                    //更新屏幕显示内容
                    this.surfaceHolder.unlockCanvasAndPost(c);
                }
            }
            try{
                Thread.sleep(span);//睡眠指定毫秒数
            }
            catch(Exception e){//捕获异常信息
                e.printStackTrace();//打印异常信息
            }
            proces+=20;
            if(proces==100){
                if(processView.type == 1){//切到WelcomeView
                    //processView.activity.myhander.sendEmptyMessage(4);//向主activity发送Handler消息

                }
            }
        }
    }
}

}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值