很多程序在完全载入之前往往会先显示一个载入界面,提示用户等待,这样对提高用户体验有很大作用。本文就为大家提供一个Android程序载入界面的开发实例。
此实例中程序载入界面的显示过程是,打开程序,出现载入界面,显示进度条并在后台进行初始化工作,效果如下图(5个小圆点会循环变色):
下面介绍该实例主要代码的编写过程。
一、创建进行初始化工作的线程:
Java代码
- class InitialThread extends Thread{
- @Override
- public void run()
- {
- try {
- Thread.sleep(time);//替换为初始化代码....
- Message msg;
- msg = new Message();
- msg.what = TYPE_STOP;
- myHandler.sendMessage(msg);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- Message msg;
- msg = new Message();
- msg.what = TYPE_STOP;
- myHandler.sendMessage(msg);
- }
- }
- }
二、创建界面更新线程,用来控制小圆点的变色:
Java代码
- class IndexThread extends Thread
- {
- @Override
- public void run() {
- Message msg;
- while(!isStop) {
- for(int i= 0 ; i < count ; i++) {
- msg = new Message();
- msg.what = TYPE_SELECTED;
- msg.arg1 = imgIDs;
- myHandler.sendMessage(msg);
- msg = new Message();
- if(i==0) {
- msg.what = TYPE_NO_SELECTED;
- msg.arg1 = imgIDs[count-1];
- myHandler.sendMessage(msg);
- } else {
- msg.what = TYPE_NO_SELECTED;
- msg.arg1 = imgIDs[i-1];
- myHandler.sendMessage(msg);
- }
- SystemClock.sleep(500);
- }
- }
- }
- }
可以看到,IndexThread每隔500ms执行一次for循环,每次循环累计发送5个message到Handler,每个message包含该ImageView的Resource Id和当前状态(是否被选择,也就是白色还是绿色),下面一起看看Handler:
Java代码
- public Handler myHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch(msg.what)
- {
- case TYPE_STOP:
- Intent intent = new Intent(LoadingScreen1Activity.this, MainActivity.class);
- startActivity(intent);
- isStop = true;
- finish();
- break;
- case TYPE_SELECTED:
- ((ImageView)findViewById(msg.arg1)).setBackgroundResource(R.drawable.progress_go_small);
- break;
- case TYPE_NO_SELECTED:
- ((ImageView)findViewById(msg.arg1)).setBackgroundResource(R.drawable.progress_bg_small);
- break;
- }
- }
- };
case TYPE_SELECTED:将对应圆点置成绿色背景
case TYPE_NO_SELECTED:将对应圆点置成白色背景
case TYPE_STOP:表示初始化完成,程序跳转到主界面
到此,此程序载入界面的实例就基本完成了。大家可以根据自己的喜好修改下程序,实现想要的效果。
本文发布:Android开发网
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。