Android网络请求--动态加载的效果(已封装、可直接使用)
来源:互联网 发布:php查找字符串位置 编辑:程序博客网 时间:2024/06/07 01:36
Android网络请求–动态加载的效果
在Android进行网络请求的时候,因为必须在子线程进行的缘故,不得不加入一个动态加载的界面,以显得整个网络请求显得不那么突兀,这里介绍一个在Github
上看到的动态加载的使用,侵权联系删除
原文:http://blog.csdn.net/qq_34861102/article/details/76907311
示例博文:http://blog.csdn.net/qq_34861102/article/details/76906330
效果图
这个里面,当开始进行网络请求的时候就开始出现,当实现跳转界面或者其他操作的时候可以自定义消失
代码实现过程
//定义 CatLoadingView mView; //显示 mView = new CatLoadingView(); mView.show(getSupportFragmentManager(), ""); //消失 mView.dismiss();
这是这个动态加载效果从一开始定义到显示到消失的代码
CatLoadingView
实现代码:package com.common;import android.app.Dialog;import android.content.DialogInterface;import android.graphics.Color;import android.os.Bundle;import android.support.v4.app.DialogFragment;import android.text.TextUtils;import android.view.Gravity;import android.view.View;import android.view.animation.Animation;import android.view.animation.LinearInterpolator;import android.view.animation.RotateAnimation;import com.example.outlier.prictace_1.R;public class CatLoadingView extends DialogFragment { public CatLoadingView() { } Animation operatingAnim, eye_left_Anim, eye_right_Anim; Dialog mDialog; View mouse, eye_left, eye_right; EyelidView eyelid_left, eyelid_right; GraduallyTextView mGraduallyTextView; String text; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { if (mDialog == null) { mDialog = new Dialog(getActivity(), R.style.cart_dialog); mDialog.setContentView(R.layout.catloading_main); mDialog.setCanceledOnTouchOutside(true); mDialog.getWindow().setGravity(Gravity.CENTER); operatingAnim = new RotateAnimation(360f, 0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); operatingAnim.setRepeatCount(Animation.INFINITE); operatingAnim.setDuration(2000); eye_left_Anim = new RotateAnimation(360f, 0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); eye_left_Anim.setRepeatCount(Animation.INFINITE); eye_left_Anim.setDuration(2000); eye_right_Anim = new RotateAnimation(360f, 0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); eye_right_Anim.setRepeatCount(Animation.INFINITE); eye_right_Anim.setDuration(2000); LinearInterpolator lin = new LinearInterpolator(); operatingAnim.setInterpolator(lin); eye_left_Anim.setInterpolator(lin); eye_right_Anim.setInterpolator(lin); View view = mDialog.getWindow().getDecorView(); mouse = view.findViewById(R.id.mouse); eye_left = view.findViewById(R.id.eye_left); eye_right = view.findViewById(R.id.eye_right); eyelid_left = (EyelidView) view.findViewById(R.id.eyelid_left); eyelid_left.setColor(Color.parseColor("#d0ced1")); eyelid_left.setFromFull(true); eyelid_right = (EyelidView) view.findViewById(R.id.eyelid_right); eyelid_right.setColor(Color.parseColor("#d0ced1")); eyelid_right.setFromFull(true); if (!TextUtils.isEmpty(text)) { mGraduallyTextView.setText(text); } operatingAnim.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { eyelid_left.resetAnimator(); eyelid_right.resetAnimator(); } }); } return mDialog; } @Override public void onResume() { super.onResume(); mouse.setAnimation(operatingAnim); eye_left.setAnimation(eye_left_Anim); eye_right.setAnimation(eye_right_Anim); eyelid_left.startLoading(); eyelid_right.startLoading(); } @Override public void onPause() { super.onPause(); operatingAnim.reset(); eye_left_Anim.reset(); eye_right_Anim.reset(); mouse.clearAnimation(); eye_left.clearAnimation(); eye_right.clearAnimation(); eyelid_left.stopLoading(); eyelid_right.stopLoading(); } public void setText(String str) { text = str; } @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); mDialog = null; System.gc(); }}
对应的
catloading_main.xml
文件在layout
中:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="170dp" android:layout_height="200dp" android:background="@color/color_tab_1" android:orientation="vertical" > <ImageView android:layout_centerInParent="true" android:src="@drawable/mouse" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/mouse"/> <RelativeLayout android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:layout_centerInParent="true" android:src="@drawable/cat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/cat"/> <ImageView android:layout_marginLeft="2dp" android:layout_marginTop="9dp" android:src="@drawable/eyes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/eye_left"/> <com.common.EyelidView android:layout_marginLeft="2dp" android:layout_marginTop="9dp" android:src="@drawable/eyes" android:layout_width="6dp" android:layout_height="3.75dp" android:id="@+id/eyelid_left"/> <ImageView android:layout_marginLeft="22dp" android:layout_marginTop="9dp" android:src="@drawable/eyes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/eye_right"/> <com.common.EyelidView android:layout_marginLeft="22dp" android:layout_marginTop="9dp" android:src="@drawable/eyes" android:layout_width="6dp" android:layout_height="3.75dp" android:id="@+id/eyelid_right"/> </RelativeLayout></RelativeLayout>
对应的
style
在value\style.xml
中:<style name="cart_dialog" parent="@android:style/Theme.Holo.Light.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:backgroundDimAmount">0.6</item> </style>
代码可以参照这个:(积分不够可以留邮箱):
在已经有的代码之上添加文中的CatLoadingView
类的实现和对应的xml
文件
http://download.csdn.net/detail/qq_34861102/9924780
其中的资源文件可以直接去我的项目地址drawable
中下载
直接到达地址:https://github.com/Outliwer/Android-App/tree/master/app/src/main/res
*示例博文(包含它的用法):
*http://blog.csdn.net/qq_34861102/article/details/76906330
阅读全文
0 0
- Android网络请求--动态加载的效果(已封装、可直接使用)
- android利用Chronometer实现倒计时(已封装,可直接使用)
- android 类似微信的摇晃触发事件(确认可行,已封装,可直接调用)
- xrecyclerView带下拉刷新,上拉加载已封装好可直接依赖使用
- Swift---网络判断封装(可直接使用)
- android 网络请求封装,可改
- android网络请求组件(一)OkHttp3的封装使用
- LoadingLayout封装网络请求的各种效果
- 使用最原始的http-post方式上传图片 ,上传工具类已封装 可直接使用
- 关于android-async-http的使用,封装网络请求
- Android学习笔记:Andorid网络请求框架Volley的使用(中)--网络图片加载
- android封装网络请求
- OkHttpUtils已封装好的工具类+依赖,直接使用
- android开发游记:封装http请求,快速实现网络加载
- 常见的Android 网络请求的封装;
- Android中okhttp网络请求的封装
- 使用NSURLConnection的网络请求与封装
- Volley网络请求的简单封装使用
- 帮助方法 Array
- memset 、ZeroMemory和 “={0}” 三者区别
- LeetCode 224. Basic Calculator
- leetcode--Missing Number
- 关于环境变量以及CMD
- Android网络请求--动态加载的效果(已封装、可直接使用)
- Java生成SM2证书基于BouncyCastle(cer)
- 配置动态路由:基于RIP v2
- zigbee NWK层API解析
- 递归求字符串中出现最多的字母
- DOS中操作mysql中文显示乱码问题
- leetcode--Missing Ranges
- Vue.js中data,props和computed数据
- js事件的注册