Android AndroidProgressLayout:加载页面遮挡耗时操作任务页面

来源:互联网 发布:mac安装虚拟机教程 编辑:程序博客网 时间:2024/06/04 20:00

Android AndroidProgressLayout:加载页面遮挡耗时操作任务页面

在Android的开发中,往往有这种需求,比如一个耗时的操作,联网获取网络图片、内容,数据库耗时读写等等,在此耗时操作过程中,开发者也许不希望用户再进行其他操作(其他操作可能会引起逻辑混乱),而此时需要给用户一个额外的加载页面遮挡住主逻辑代码的运行,待主页面的耗时操作完成后,自动消失这样加载过度页面,恢复出正常应该显示的页面。
举个实际的例子,如代码使用Android WebView打开一个网页链接试图加载某个网站,但网络质量不佳,需要耗时很久,那么在这个过程中,较好的用户体验做法是:给用户一个加载进度页面,遮挡住WebView。当加载的内容成功后在完全切换回正常的逻辑页面。
Android AndroidProgressLayout实现了这样的功能,Android AndroidProgressLayout在github上的项目主页是:https://github.com/antonkrasov/AndroidProgressLayout 
AndroidProgressLayout要实现的功能如图:


现在给出一个例子加以说明。

使用AndroidProgressLayout,需要先写一个布局:

[html] view plain copy
  1. <com.github.androidprogresslayout.ProgressLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:progressLayout="http://schemas.android.com/apk/res-auto"  
  3.     android:id="@+id/progress_layout"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     progressLayout:progressBackground="#4fc3f7" >  
  7.   
  8.     <TextView  
  9.         android:id="@+id/text"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="match_parent"  
  12.         android:gravity="center" />  
  13.   
  14. </com.github.androidprogresslayout.ProgressLayout>  


Java代码:

[java] view plain copy
  1. package zhangphil.demo;  
  2.   
  3. import com.github.androidprogresslayout.ProgressLayout;  
  4.   
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.os.Handler;  
  8. import android.os.Message;  
  9. import android.widget.TextView;  
  10.   
  11.   
  12. public class MainActivity extends Activity {  
  13.   
  14.     @Override  
  15.     protected void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.activity_main);  
  18.   
  19.         final ProgressLayout progressLayout = (ProgressLayout) findViewById(R.id.progress_layout);  
  20.           
  21.         final TextView text = (TextView) findViewById(R.id.text);  
  22.   
  23.         Handler handler = new Handler() {  
  24.             @Override  
  25.             public void handleMessage(Message msg) {  
  26.                 text.setText("加载完毕!");  
  27.   
  28.                 // 切换回正常显示页面  
  29.                 progressLayout.showContent();  
  30.             }  
  31.         };  
  32.           
  33.         // 开始加载... 假设从这里开始一个耗时的操作将开始启动,在此启动过程中,开发者希望用户稍事休息,等待。。。  
  34.         progressLayout.showProgress();  
  35.   
  36.         // 假设有一个耗时的加载业务逻辑,需要5秒完成。  
  37.         handler.sendEmptyMessageDelayed(05000);  
  38.     }  
  39. }  
0 0
原创粉丝点击