现在所能看到的加载动画五花八门,也有很多优秀的库,但是有些时候并不能满足我们小公司的需求,比如页面中接口请求时的加载动画,可能只是需要很简单的一个大众的加载效果,自己去写的话需要花费很多时间。只要明白代码逻辑,直接拿来用就好。话不多说,上效果图。
可以 看到,就是一个很简单的大众的加载效果,但是也满足很多需求了。
用法:
开始动画:Dialog loadingDialog = LoadDialogUtils.createLoadingDialog(上下文, "加载中......");
关闭:LoadDialogUtils.closeDialog(loadingDialog);
就这么简单,下面是这个工具类的具体代码
public class LoadDialogUtils {
public static Dialog createLoadingDialog(Context context, String msg) {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.dialog_loading1, null);// 得到加载view
LinearLayout layout = (LinearLayout) v
.findViewById(R.id.dialog_loading_view);// 加载布局
TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 提示文字
tipTextView.setText(msg);// 设置加载信息
Dialog loadingDialog = new Dialog(context, R.style.MyDialogStyle);// 创建自定义样式dialog
loadingDialog.setCancelable(true); // 是否可以按“返回键”消失
loadingDialog.setCanceledOnTouchOutside(false); // 点击加载框以外的区域
loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));// 设置布局
/**
*将显示Dialog的方法封装在这里面
*/
Window window = loadingDialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setGravity(Gravity.CENTER);
window.setAttributes(lp);
window.setWindowAnimations(R.style.PopWindowAnimStyle);
loadingDialog.show();
return loadingDialog;
}
/**
* 关闭dialog
*
* http://blog.csdn.net/qq_21376985
*
* @param mDialogUtils
*/
public static void closeDialog(Dialog mDialogUtils) {
if (mDialogUtils != null && mDialogUtils.isShowing()) {
mDialogUtils.dismiss();
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_loading_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="150dp"
android:layout_height="110dp"
android:background="@drawable/loading_bg"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="10dp"
android:paddingLeft="21dp"
android:paddingRight="21dp"
android:paddingTop="10dp">
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_gravity="center_horizontal"
android:indeterminateBehavior="repeat"
android:indeterminateDrawable="@drawable/dialog_loading"
android:indeterminateOnly="true" />
<TextView
android:id="@+id/tipTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="加载中..."
android:textColor="#f0f0f0"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
- ?dialog_loading
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@mipmap/dialog_loading_img"
android:pivotX="50%"
android:pivotY="50%" />
? ? ? 2.? ?loading_bg
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:drawable="@drawable/loading_bg"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360"
tools:ignore="ResourceCycle" />
<!-- popup window 显示消失动画-->
<style name="PopWindowAnimStyle">
<item name="android:windowShowAnimation">@anim/dialog_loding_enter</item>
<!-- 指定显示的动画xml -->
<item name="android:windowHideAnimation">@anim/dialog_loding_exit</item>
<!-- 指定消失的动画xml -->
</style>
<!-- my loading dialog -->
<style name="MyDialogStyle">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
-
anim需要在res文件下创建anim命名的文件
dialog_loding_enter===============>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.2"
android:toAlpha="1.0"/>
</set>
dialog_loding_exit===============>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="1.0"
android:toAlpha="0"/>
</set>
最后还需要使用.9图?,直接下载后放入资源文件既可
到这里,这个加载动画的配置就都完成了,希望可以忙到各位!
|