WebView 加载判断 和 加载动画的简单实现

WebView 在加载网页时候,在网络不好的情况下,如果不做处理会出现一段时间的等待空白,用户体验差。所以有必要加上一个简单的加载进度提示。本编简单的运用了ProgressDialog 这个控件来实现。

下面是简单的代码片段

下面贴上部分代码

public class FAQActivity extends BaseActivity {

private final String TAG = FAQActivity.class.getName();

@BindView(R.id.activity_fap_back)

ImageView activityFapBack;

@BindView(R.id.activity_faq_webview)

WebView webView;

private String FAQ_BASE_URL = "";

/***

*

* @param savedInstanceState

*/

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_faq);

ButterKnife.bind(this);

init();

}

private void init() {

webView.loadUrl("你的请求地址");

WebSettings mWebSettings = webView.getSettings();

mWebSettings.setSupportZoom(true);

mWebSettings.setLoadWithOverviewMode(true);

mWebSettings.setUseWideViewPort(true);

mWebSettings.setDefaultTextEncodingName("GBK");//设置解码格式

mWebSettings.setLoadsImagesAutomatically(true);

mWebSettings.setJavaScriptEnabled(true);//支持js 特效

//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开

webView.setWebViewClient(new WebViewClient() {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

// TODO Auto-generated method stub

//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器

view.loadUrl(url);

return true;

}

@Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {

super.onPageStarted(view, url, favicon);

showProgress("页面加载中");//开始加载动画

}

@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

removeProgress();//当加载结束时移除动画

}

});

}

/**

* 点击事件

*/

@OnClick(R.id.activity_fap_back)

public void onClick() {

Log.d(TAG, "onClick: ");

jumpToActivity(FAQActivity.this,MenuActivity.class);

}

/**

* 返回键的监听事件

*

* @param keyCode

* @param event

* @return

*/

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

jumpToActivity(FAQActivity.this,MenuActivity.class);

}

return false;

}

}

需要注意的地方:

ProgressDIalog 控件为了不写重复代码,我进行了简单的封装。下面是我简单封装的BaseActivity代码

public class BaseActivity extends AppCompatActivity {

private final String TAG = BaseActivity.class.getName();

private Toast toast = null;

private ProgressDialog progressDialog;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

/**

* @param context 上下文对象

* @param start 其实activity

* @param target 目标activity

*/

public void jumpToActivity(Context context, Class start, Class target) {

Intent intent = new Intent(context, target);

//------用户返回上一级activity

if (target == CarFindingActivity.class) {

intent.putExtra("activity", start);

}

context.startActivity(intent);

finish();

}

public void jumpToActivity(Context context, Class target) {

Intent intent = new Intent(context, target);

//------用户返回上一级activity

context.startActivity(intent);

finish();

}

/**

* @param context

* @param text

*/

public void showToastLong(Context context, String text) {

if (toast == null) {

toast = Toast.makeText(context, text, Toast.LENGTH_LONG);

} else {

toast.setText(text);

}

toast.show();

}

public void showToastLong(String text) {

if (toast == null) {

toast = Toast.makeText(BaseActivity.this, text, Toast.LENGTH_LONG);

} else {

toast.setText(text);

}

toast.show();

}

/**

* @param context

* @param text

*/

public void showToastShort(Context context, String text) {

if (toast == null) {

toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);

} else {

toast.setText(text);

}

toast.show();

}

public void showToastShort(String text) {

if (toast == null) {

toast = Toast.makeText(BaseActivity.this, text, Toast.LENGTH_SHORT);

} else {

toast.setText(text);

}

toast.show();

}

//-----显示ProgressDialog

public void showProgress(String message) {

if (progressDialog == null) {

progressDialog = new ProgressDialog(BaseActivity.this, ProgressDialog.STYLE_SPINNER);

progressDialog.setCancelable(false);//设置点击不消失

}

if (progressDialog.isShowing()) {

progressDialog.setMessage(message);

} else {

progressDialog.setMessage(message);

progressDialog.show();

}

}

//------取消ProgressDialog

public void removeProgress(){

if (progressDialog==null){

return;

}

if (progressDialog.isShowing()){

progressDialog.dismiss();

}

}

/**

*

*/

@Override

protected void onStart() {

super.onStart();

Log.d(TAG, "onStart: ");

}

@Override

protected void onResume() {

super.onResume();

Log.d(TAG, "onResume: ");

}

@Override

protected void onPause() {

super.onPause();

Log.d(TAG, "onPause: ");

}

@Override

protected void onStop() {

removeProgress();//让progressdialog 消失

super.onStop();

Log.d(TAG, "onStop: ");

}

@Override

protected void onRestart() {

super.onRestart();

Log.d(TAG, "onRestart: ");

}

@Override

protected void onDestroy() {

super.onDestroy();

Log.d(TAG, "onDestroy: ");

}

}

然后继承BaseActivtiy 直接调用里面

showProgress(String message)

显示ProgressDialog

removeProgress()

移除ProgressDialog

以上就这么多,如有错误或者不严谨的地方恳请指正,谢谢

android 设置空动画,Android WebView 空白等待时加载动画相关推荐

  1. 加载html动画logo,仅CSS实现的加载动画 – Loader.css

    仅CSS实现的加载动画 – Loader.css 4月 13, 2015 评论 (6) Sponsor 当网页的页面大小较大,用户加载可能需要较长的时间,在这些情况下,我们一般会用到(加载)loadi ...

  2. Android - Loading 中间显示logo,外部ing转圈加载动画

    需求: 需求很简单,就是中间显示一个logo,外部是一个转圈的动画,这样看着就是一个loading. 这里通过dialog来实现,比较好集中代码. 图片: 全图          loading1   ...

  3. android抖音loading动画,高仿抖音视频加载动画

    动画效果: loadingView.gif 由于GIF图压缩的问题看起来不好看,在真机和模拟器上看是没有问题的 这个动画实现起来还是很容易的,原理其实就是利用CGAffineTransformScal ...

  4. 安卓设置菊花动画_这种 “小菊花”式加载动画,会让人觉得等了很久

    IT之家讯 9月3日消息,最近一项研究表明,当人们在看电视或者刷网页时,遇到网络不佳而出现的加载动画,有可能影响到人们等待过程的感受.例如我们常见的环形菊花状的加载动动画,当我们在等待视频或页面加载的 ...

  5. 加载动画php,CSS3学习之页面加载动画(二)

    本篇文章给大家分享6种css3的页面加载动画.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 在之前的文章[CSS3学习之页面加载动画(一)]中已经分享了四个CSS3的加载动画,今天 ...

  6. loading动画_超级简单的CSS加载动画(冰淇淋loading加载动画)

    点击右上方红色按钮关注"web秀",让你真正秀起来 前言 昨天再次收到"月球居民爱丽丝"的投稿(非常感谢"月球居民爱丽丝"),希望做一个冰淇 ...

  7. Android 帧动画,加载动画,AnimationDrawable,仿京东加载动画

    1.创建drawable文件ring_animation.xml <?xml version="1.0" encoding="utf-8"?> &l ...

  8. Android 仿网易一元夺宝客户端下拉加载动画实现(一)

    上上周写的一个demo,仿照网易一元夺宝的下拉刷新效果. 原效果是(第一部分)一个小太阳拉下来,然后松开回弹上去, (第二部分)再掉下来一个硬币进行中轴旋转. 本文实现的效果的是第一部分的,效果演示图 ...

  9. android设置背景图片不填充整个_使用Glide加载图片并填充满ImageView

    作为谷歌推荐的图片加载库,Glide使用起来非常的简单. 1.在项目中添加依赖: dependencies { compile 'com.github.bumptech.glide:glide:3.7 ...

最新文章

  1. Vue之概述、基本使用、data数据和if条件渲染
  2. 人脸识别国标拟规定:不得强制刷脸、预测偏好 不对14周岁以下人脸识别
  3. 在Heroku上部署(托管)Rails项目
  4. android音乐播放器文章,Android复习09【内容提供者、音乐播放器】
  5. python画图显示不了中文_Python使用matplotlib绘图无法显示中文问题的解决方法
  6. socket结构和几个IP地址转换函数
  7. orm2 中文文档 3. 定义模型
  8. [转]VC6.0编译fltk-1.1.10
  9. HTML与CSS案例——人物简介
  10. 一个屌丝程序猿的人生(八十七)
  11. 这里是一个简单的CRM客户关系管理系统的开发教程,你值得拥有哟!
  12. 两个excel宏病毒
  13. android 强制锁屏app,自制力app强制锁屏
  14. C语言:fflush()的用法以及缓冲区的概念
  15. 新墨斯智能鞋让你成为健康达人
  16. js实现页面指定区域局部刷新
  17. EXCEL单元格内多个姓名如何统计个数
  18. 福昕阅读器文档无法高亮的问题
  19. 程序员同事表演加班一个月后,我离职了
  20. 工作碰到的问题解决积累

热门文章

  1. opencv将Mat读入的图像的像素值打印在控制台上
  2. c++安全编写对象池中文版
  3. C语言讲义——链表的实现
  4. 非科班程序员逆袭:一个被称阿里“码神”,另一个颠覆软件生态
  5. IAAS云计算产品畅想-云主机的产品定位
  6. 计算机图形学常见算法原理,计算机图形学常用算法及代码大全
  7. SpringSecurity详细介绍RememberMe功能
  8. 2022年,关于副业赚钱和自主创业的一些建议
  9. Alfred Workflow 豆瓣插件开发
  10. 读《任正非在2012实验室的讲话》总结