Android 网络加载通用Loading
为了用户体验用好,App在网络请求时通常都会显示个进度显示圈圈,提示用户耐心等待,最脍炙人口的莫过于登录啦。
接下来我们就通过Dialog来实现,然后在BaseActivity,BaseFragment中提供方法供调用
先看看自定义的dialog
package com.example.kbr.utils; import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.AppCompatImageView;
import android.view.animation.Animation;
import android.widget.ImageView; /**
* Created by keranbin on 2017/12/19.
*/ public class LoadingDialog extends Dialog {
private ObjectAnimator objectAnimator = null;
private AppCompatImageView circle;
private long duration = 2000; public LoadingDialog(@NonNull Context context) {
super(context);
} public LoadingDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
} protected LoadingDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
} @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_loading);
} @Override
public void show() {
super.show();
startAnim();
setOnDismissListener(dialog -> {
endAnim();
});
} /**
* 启动动画
*/
private void startAnim() {
setCanceledOnTouchOutside(false);
circle = findViewById(R.id.loading);
objectAnimator = ObjectAnimator.ofFloat(circle, "rotation", 0.0f, 360.0f);
//设置动画时间
objectAnimator.setDuration(duration);
//设置动画重复次数,这里-1代表无限
objectAnimator.setRepeatCount(Animation.INFINITE);
//设置动画循环模式。
objectAnimator.setRepeatMode(ValueAnimator.RESTART);
objectAnimator.start();
} /**
* 结束动画
*/
private void endAnim() {
objectAnimator.end();
objectAnimator = null;
circle = null;
} }
布局也非常简单
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:alpha="0.4"
android:background="#000000"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="20dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="20dp"> <android.support.v7.widget.AppCompatImageView
android:id="@+id/loading"
android:layout_width="48dp"
android:layout_height="48dp"
app:srcCompat="@drawable/loading" />
</RelativeLayout>
BaseActivity,BaseFragment中提供方法
private LoadingDialog dialog; public void showLoading(){
if (dialog == null) {
dialog = new LoadingDialog(this);
}
dialog.show();
} public void clearLoading(){
if (dialog != null) {
dialog.dismiss();
}
}
在需要用到的地方调用即可
showLoading(); //执行网络耗时任务(这里时模拟)
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(10000);
clearLoading();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
Android 网络加载通用Loading的更多相关文章
- android 网络加载图片,对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存
经常会用到 网络文件 比如查看大图片数据 资源优化的问题,当然用开源的项目 Android-Universal-Image-Loader 或者 ignition 都是个很好的选择. 在这里把原来 ...
- Android进度加载的Loading效果
网上看到的一个开源项目的loading效果,效果很赞,记录一下: 开源项目地址如下:https://github.com/RomainPiel/Titanic
- android快捷开发之Retrofit网络加载框架的简单使用
大家都知道,安卓最大的特点就是开源化,这自然会产生很多十分好用的第三方API,而基本每一个APP都会与网络操作和缓存处理机制打交道,当然,你可以自己通过HttpUrlConnection再通过返回数据 ...
- 【转】Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址
Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址 关注finddreams,一起分享,一起进步: http://blog.csdn.net/finddr ...
- Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
本篇将是我们这个Glide系列的最后一篇文章. 其实在写这个系列第一篇文章的时候,Glide就推出4.0.0的RC版了.那个时候因为我一直研究的都是Glide 3.7.0版本,再加上RC版本还不太稳定 ...
- Android图片加载库的理解
前言 这是“基础自测”系列的第三篇文章,以Android开发需要熟悉的20个技术点为切入点,本篇重点讲讲Android中的ImageLoader这个库的一些理解,在Android上最让人头疼是 ...
- Android图片加载与缓存开源框架:Android Glide
<Android图片加载与缓存开源框架:Android Glide> Android Glide是一个开源的图片加载和缓存处理的第三方框架.和Android的Picasso库类似,个人感觉 ...
- fackbook的Fresco (FaceBook推出的Android图片加载库-Fresco)
[Android开发经验]FaceBook推出的Android图片加载库-Fresco 欢迎关注ndroid-tech-frontier开源项目,定期翻译国外Android优质的技术.开源库.软件 ...
- Android 图片加载库Glide 实战(二),占位符,缓存,转换自签名高级实战
http://blog.csdn.net/sk719887916/article/details/40073747 请尊重原创 : skay <Android 图片加载库Glide 实战(一), ...
随机推荐
- JavaScript的概念,引入,基本数据类型
08.05自我总结 JavaScript 一.概念 JavaScript(下文我们会用简称JS来代替)是脚本编程语言,JS语言开发的文件是以.js为后缀,通过在html文件中引入该js文件来控制htm ...
- pecl安装和卸载示例
比如安装MongoDB扩展 命令行下输入: [#] /usr/local/php/bin/pecl install mongodb ......嗒吧嗒吧一大堆输出后 Build process com ...
- Hbase数据结构和shell操作
Hbase的数据结构 基本要素:命名空间.表.行.列.单元格,region,时间戳. 1.命名空间:NameSpaces的作用 Table:表,所有的表都是命名空间的成员,即表必属于某个命名空间,如果 ...
- 一文学会JVM配置参数与工具使用
经过前面的各种分析,我们知道了关于JVM很多的知识,比如版本信息,类加载,堆,方法区,垃圾回收等,但是总觉得心里不踏实,原因是没看到实际的一些东西. 所以这在本文,咱们就好好来聊一聊关于怎么将这些内容 ...
- vue之虚拟DOM、diff算法
一.真实DOM和其解析流程? 浏览器渲染引擎工作流程都差不多,大致分为5步,创建DOM树——创建StyleRules——创建Render树——布局Layout——绘制Painting 第一步,用HTM ...
- ES6 -箭头函数 ,对象的函数解构
ES6 -箭头函数: //es6 中的箭头函数和扩展 //es5的写法 // function add(a,b){ // return a + b; // } // add(1,2); //3 fun ...
- echarts玩转图表之矩形树图
前言 这是第一次用makedown编辑器写文章,感觉像一件利器,排版美观而且效率飙升.进入正题 Echart官网文档地址 针对于矩形树图api配置项链接 1. 完全从数据定义图形 $.get( &qu ...
- CSAPP 3 程序的机器级表示
1 本章总述 1) 通过让编译器产生机器级程序的汇编表示, 学习了编译器及其优化能力, 以及机器.数据类型和指令集; 2) 学习了程序如何将数据存储在不同的内存区域中 -- 程序开发人员需要知道一个变 ...
- Oracle 10g&11g安装卸载Oracle Label Security
Oracle Label Securit简介 Oracle Label Security是内置于数据库引擎中的过程与约束条件集,该数据引擎实施对在单个表或整个模式上的"行"级访 ...
- Linux—修改ssh远程登录信息
修改ssh远程登录端口 1.修改ssh服务的配置文件:/etc/ssh/sshd_config ,将 Port 22 改为 Port 3120 保存退出. [root@localhost ~]# vi ...