安卓界面——最开始界面的加载
发布日期:2021-06-29 11:11:58
浏览次数:3
分类:技术文章
本文共 4763 字,大约阅读时间需要 15 分钟。
点开软件进入该界面自动加载……..
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;}@Overridepublic void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub}@Overridepublic void surfaceCreated(SurfaceHolder arg0) { // TODO Auto-generated method stub this.thread.setFlag(true);//设置线程标志位 this.thread.start();//启动线程}@Overridepublic 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消息 } } } }}}
转载地址:https://blog.csdn.net/zw1996/article/details/78056679 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月28日 14时35分44秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
10年老兵!从大学毕业生到嵌入式系统工程师的修炼之道……
2019-04-29
如何才能学好单片机?
2019-04-29
一根网线有这么多“花样”,你知道吗?
2019-04-29
雷军1994年写的诗一样的代码,我把它运行起来了!
2019-04-29
2020年大学生电子设计竞赛,B题,单相在线式不间断电源,详细技术方案!
2019-04-29
大佬终于把鸿蒙OS讲明白了,收藏了!
2019-04-29
C语言指针,这可能是史上最干最全的讲解啦(附代码)!!!
2019-04-29
国内大陆有哪些芯片公司处于世界前10?一起看看!
2019-04-29
单精度、双精度、多精度和混合精度计算的区别是什么?
2019-04-29
中国35位“大国工匠”榜单出炉!西工大、西电合计占半壁江山!清华仅1人!...
2019-04-29
知乎热议:嵌入式开发中C++好用吗?
2019-04-29
2020,Python 已死?
2019-04-29
漫画:程序员相亲?哈哈哈哈哈哈
2019-04-29
30种EMC标准电路分享,再不收藏就晚了!
2019-04-29
这100道Linux常见面试题,看看你会多少?
2019-04-29
十年硬件老司机,结合实际案例,带你探索单片机低功耗设计!
2019-04-29
“2020年嵌入式软件秋招经验和对嵌入式软件未来的一点思考”
2019-04-29
嵌入式的坑在哪方面?
2019-04-29
三种常见嵌入式设备通信协议
2019-04-29
硬核,这个充电宝居然烧煤气!
2019-04-29