安卓界面——最开始界面的加载
发布日期:2021-06-29 11:11:58
浏览次数:4
分类:技术文章
本文共 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月30日 11时27分33秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
cv2和二进制互转
2019-04-29
二分查找及原理
2019-04-29
torch Missing key(s) in state_dict
2019-04-29
PA,MIOU,FWIOU
2019-04-29
数组-769. 最多能完成排序的块
2019-04-29
超过256的像素值的保存
2019-04-29
middle-判断二分图-深度优先和广度优先
2019-04-29
二进制补码和原码的记录
2019-04-29
无重叠区间+用最少数量的箭引爆气球
2019-04-29
买卖股票的最佳时机
2019-04-29
非递减数列
2019-04-29
AUC粗浅理解笔记记录
2019-04-29
分治法:241. 为运算表达式设计优先级
2019-04-29
广度优先遍历:二进制矩阵中的最短路径
2019-04-29
广度优先遍历:set集合的速度远远比list快:完全平方数
2019-04-29
广度+深度:岛屿的最大面积/岛屿数量
2019-04-29
torch 模型运行时间与forward没对应的可能原因
2019-04-29
130. 被围绕的区域
2019-04-29
欧式距离、余弦相似度和余弦距离
2019-04-29
transform 等效转换(参考源码)
2019-04-29