加载页面遮挡耗时操作任务页面--第三方开源--AndroidProgressLayout

在Android的开发中,往往有这种需求,比如一个耗时的操作,联网获取网络图片、内容,数据库耗时读写等等,在此耗时操作过程中,开发者也许不希望用户再进行其他操作(其他操作可能会引起逻辑混乱),而此时需要给用户一个额外的加载页面遮挡住主逻辑代码的运行,待主页面的耗时操作完成后,自动消失这样加载过度页面,恢复出正常应该显示的页面。

举个实际的例子,如代码使用Android WebView打开一个网页链接试图加载某个网站,但网络质量不佳,需要耗时很久,那么在这个过程中,较好的用户体验做法是:给用户一个加载进度页面,遮挡住WebView。当加载的内容成功后在完全切换回正常的逻辑页面。
Android AndroidProgressLayout实现了这样的功能,Android AndroidProgressLayout在github上的项目主页是:https://github.com/antonkrasov/AndroidProgressLayout

测试代码如下:

activity_main.xml:

 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/progressLayout"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent" >
 6
 7     <TextView
 8         android:id="@+id/textView"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:textSize="40sp"
12         android:layout_centerInParent="true" />
13
14 </com.github.androidprogresslayout.ProgressLayout>

MainActivity.java:

 1 package com.zzw.testandroidprogresslayout;
 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.view.animation.Animation;
10 import android.widget.TextView;
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.progressLayout);
20         final TextView textView = (TextView) findViewById(R.id.textView);
21
22         Handler handler = new Handler() {
23             @Override
24             public void handleMessage(Message msg) {
25                 textView.setText("测试完成");
26
27                 // 切换回正常显示页面
28                 progressLayout.showContent();
29             }
30         };
31         // 开始加载... 假设从这里开始一个耗时的操作将开始启动,在此启动过程中,开发者希望用户稍事休息,等待。。。
32         progressLayout.showProgress();
33
34         // 假设有一个耗时的加载业务逻辑,需要5秒完成。
35         handler.sendEmptyMessageDelayed(0, 5000);
36     }
37 }
时间: 2024-10-06 17:35:57

加载页面遮挡耗时操作任务页面--第三方开源--AndroidProgressLayout的相关文章

angular延时函数和数据加载完才显示主要的页面、上传文件到后端、富文本框编辑框(ckeditor)

延时函数 setTimeout(()=>{ console.log("延时打印") },10000); // 延时10秒打印 //简单等数据加载完才显示主要的页面 1.先下载ngx-loading模块 npm install --save ngx-loading 2.在app.module.ts中引入NgxLoadingModule模块 import {NgxLoadingModule} from 'ngx-loading'; imports: [ BrowserModule,

ExtJS 等待两个/多个store加载完再执行操作

Extjs加载Store是异步加载的,这有很多好处.但是当我们要在两个或多个不同的store加载完再执行一些操作时,异步加载就成了一个问题.在Stack Overflow 等网站搜集并试用了几个处理方法,总结如下. 1.自己定义一个组件 (From:http://stackoverflow.com/questions/9379484/extjs-waiting-for-multiple-stores-to-load) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1

判断页面所有图片加载完成后执行操作

$(function(){ var _srcList = [], i = 0; //获取所有图片路径,存为数组 $('.bg').each(function(){ _srcList.push($(this).attr('src')); }) function imgLoadComplate(imgSrc){ var _img = new Image(); _img.src = imgSrc; _img.onload = function(){ //判断是否加载到最后一个图片 if (i < _s

C# Winform 加载窗体/对象时的等待页面设计

在设计应用程序过程中,有时候加载对象需时较长,我们可以显示一个Loading等待页面,对用户来说就比较友好了. 这个还是涉及到多线程,下面是步骤. 一.创建好Loading窗体: 一个Panel用于显示转圈动画(仿Win10的Loading),一个Loading文本标签.动画的代码来自网络. public partial class Fm20Loading : Form { public Fm20Loading() { InitializeComponent(); //LblMessage.Te

Android开发必知--WebView加载html5实现炫酷引导页面

大多数人都知道,一个APP的引导页面还是挺重要的,不过要想通过原生的Android代码做出一个非常炫酷的引导页相对还是比较复杂的,正巧html5在制作炫酷动画网页方面比较给力,我们不妨先利用html5做出手机引导页面,然后将其嵌入APP中. 首先我们分析一下,都需要做哪些工作? 1.制作html5引导页面. 2.把做好的页面放入Android工程中assets文件夹下. 3.利用WebView加载asset文件夹下的html文件. 4.在引导页最后一页的按钮上捕捉点击事件,结束引导页,进入程序.

从加载CNZZ不成功导致全页面Js失效看iframe的弊端

一.iframe 阻塞 onload window的onload事件要等页面中所有内容加载完成,包括所有iframe加载完成以后才会运行,所以会给用户带来很大的"误解",万一当iframe加载过慢,会让用户感觉网站速度很慢. 解决方案:用javascript动态的给iframe赋值. 二.链接池 对每个 web 服务器来说,浏览器只打开极少的几个连接数.老的浏览器,包括 IE 6/7 和 Firefox 2,每个主机只有2个连接.在新的浏览器中,连接数增加鸟.Safari 3+ 和 O

zepto.js + iscroll.js上拉加载 下拉加载的 移动端 新闻列表页面

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="viewport" content="width=device-width,initial-scale=1.0

在iframe内页面完全加载完后,关闭父页面生成的div遮罩层

遮罩层div为iframe父页面生成,需在iframe内页面完全加载完后,关闭遮罩层 alertMsgClose() :函数为关闭遮罩层函数 此段代码在iframe页面内: <script> $(function () { window.parent.alertMsgClose();// iframe 外层页面关闭遮罩层 }); </script> 原文地址:https://www.cnblogs.com/tmdsleep/p/10984450.html

win10系统加载ahci驱动的操作方案(Win10之家)

win10系统使用的过程中很多用户会想要加载ahci驱动,但是大部分用户根本不知道怎么操作加载ahci驱动,这样的话很多用户会遇到一些问题,那如果使用的过程中想要加载ahci驱动的话我们应该怎么操作呢?在这一次的教程里小编会把加载ahci驱动的操作方法分享给大家,有需要在win10系统中加载ahci驱动的用户直接跟着下面的教程操作就能轻松掌握加载ahci驱动的操作方法,相信大家都能成功掌握加载ahci驱动的操作方法. 推荐: win10 32位纯净版下载 具体方法如下: 1.进入系统后,点击开始