1、最近在使用加载框的时候部分手机(小米)progressbar里面的旋转图不旋转,查出原因是
indeterminateDrawable的写法有问题,这里记录一下:
LoadImageView代码如下:
package com.xhs.bluthapp; import android.app.Dialog; import android.content.Context; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.TextView; public class LoadImageView { private Dialog loadingDialog; private TextView tipTextView; public LoadImageView(Context context) { LayoutInflater inflater = LayoutInflater.from(context); View v = inflater.inflate(R.layout.layout_load_image, null); LinearLayout layout = v.findViewById(R.id.dialog_loading_view); tipTextView = v.findViewById(R.id.tipTextView); loadingDialog = new Dialog(context); loadingDialog.setCancelable(true); loadingDialog.setCanceledOnTouchOutside(true); loadingDialog.setContentView(layout, new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); Window window = loadingDialog.getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = WindowManager.LayoutParams.WRAP_CONTENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; window.setBackgroundDrawableResource(android.R.color.transparent); window.setGravity(Gravity.CENTER); window.setAttributes(lp); } /** * 展示弹出框 * * @param msg 弹出框显示信息 */ public void show(String msg) { tipTextView.setText(msg); if (!isShowing()) { loadingDialog.show(); } } /** * 消失弹出框 */ public void dismiss() { if (null != loadingDialog && loadingDialog.isShowing()) { loadingDialog.dismiss(); } } /** * 判断弹出框是否展示 * * @return 是否展示 */ public boolean isShowing() { if (null == loadingDialog) { return false; } else { return loadingDialog.isShowing(); } } }
layout_load_image 布局文件如下:
<?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:gravity="center" android:orientation="vertical" android:background="@mipmap/loading_bg" 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:indeterminate="true" 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"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <rotate android:drawable="@drawable/dialog_loading_img" android:fromDegrees="0.0" android:pivotX="50.0%" android:pivotY="50.0%" android:toDegrees="360.0" /> <span style="white-space:pre"> </span> <!-- 其中360.0值越大,转的圈圈越快 --> </item> </layer-list>
dialog_loading_img 是放在progressbar上面旋转的图片
loading_bg 是dialog里面的背景图片