Android 等待過程中的轉圈動畫
阿新 • • 發佈:2018-11-14
private CustomProgressDialog progressDialog; //例項化自定義CustomProgressDialog progressDialog = new CustomProgressDialog(context, R.style.progressDialog); //設定不可點選外邊取消動畫 progressDialog.setCanceledOnTouchOutside(false); //動畫顯示 progressDialog.show();
樣式:progressDialog <style name="progressDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <!-- 是否浮現在activity之上 --> <item name="android:windowIsTranslucent">false</item> <!-- 半透明 --> <item name="android:windowNoTitle">true</item> <!-- 無標題 --> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">false</item> <!-- 模糊 --> <!-- <item name="android:windowContentOverlay">@null</item> --> </style>
//自定義CustomProgressDialog public class CustomProgressDialog extends ProgressDialog { private Context context; public CustomProgressDialog(Context context) { super(context); this.context = context; } public CustomProgressDialog(Context context, int theme) { super(context, theme); this.context = context; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View view = View.inflate(getContext(), R.layout.customprogressdialog, null); ImageView progress_img = (ImageView)view. findViewById(R.id.iv_bg); Animation operatingAnim = AnimationUtils.loadAnimation(getContext(), R.anim.anim_upload_progress); //LinearInterpolator lin = new LinearInterpolator(); // operatingAnim.setInterpolator(lin); progress_img.setAnimation(operatingAnim); setContentView(view); } @Override public void show() { //setCancelable(false);; super.show(); } }
//佈局:customprogressdialog
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="160dip" android:layout_height="60dip" android:layout_gravity="center" android:background="@android:color/transparent" android:gravity="center" android:orientation="horizontal" > <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center" android:gravity="center" android:orientation="vertical" > //轉圈的圖片 <ImageView android:id="@+id/iv_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:background="@drawable/common_refresh" /> <TextView android:layout_centerHorizontal="true" android:layout_below="@id/iv_bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="載入中...." android:textSize="10dip" android:layout_marginTop="15dip" android:textColor="@android:color/darker_gray" /> </RelativeLayout> </LinearLayout>
//動畫:anim_upload_progress
//在正中心,在1秒內,從0度轉到360度,不停止 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <rotate android:duration="1000" android:fromDegrees="0" android:interpolator="@android:anim/linear_interpolator" android:pivotX="50%" android:pivotY="50%" android:repeatCount="-1" android:toDegrees="360" /> </set>