在任何 class 中动态显示 Android 自定义 ProgressBar 或 ProgressDialog

Show Android custom ProgressBar or ProgressDialog dynamically in any class

我正在尝试制作自定义 ProgressBar class,我想在其中显示带图像旋转的 ProgressBar。

我尝试的是...

my_progress_indeterminate.xml

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/spool"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fromDegrees="0"
    android:toDegrees="1080">
</rotate>

MyProgress.java

public class MyProgress extends ProgressDialog {
  //private AnimationDrawable animation;
  ProgressBar la;
  public ProgressDialog ctor(Context context) {
    MyProgress dialog = new MyProgress(context);
    dialog.setIndeterminate(true);
    dialog.setIndeterminateDrawable(this.getContext().getResources().getDrawable(R.drawable.my_progress_indeterminate));
    dialog.setCancelable(false);
    return dialog;
  }

  public MyProgress(Context context) {
    super(context);
  }

  public MyProgress(Context context, int theme) {
    super(context, theme);
  }

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.view_loader);

     la = (ProgressBar) findViewById(R.id.animation);


  }

  @Override
  public void show() {
    super.show();
//show the progressbar which is rotating image

  }

  @Override
  public void dismiss() {
    super.dismiss();
   //hide the progress which is rotating image
  }
}

在我想显示进度的另一个 class 中,我是这样做的:

MyProgress rotateImage;
protateImage = new MyProgress(getActivity());

 protateImage.show(); //for showing 

protateImage.hide(); //for hiding 

ViewLoader.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:background="@null"
    >


    <ProgressBar
        android:id="@+id/animation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="5dip"
        android:indeterminateDrawable="@drawable/my_progress_indeterminate" />

</LinearLayout>

它运行良好,但我无法看到我的图像在旋转, 仅显示带有对话框背景的 android 自定义进度条旋转样式。

我想要的是通过创建我的 class 实例并显示进度条(旋转图像)或隐藏它来仅显示我的图像在项目中的任何位置旋转...

我怎样才能让它正确?任何帮助...

关注this answer.

除此之外,您唯一需要做的就是使用 setIndeterminateDrawable():

添加自定义加载可绘制对象
ProgressDialog pd = new ProgressDialog(getActivity(), R.style.MyTheme);
pd.setCancelable(false);
pd.setIndeterminateDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.my_progress_indeterminate));
pd.setProgressStyle(android.R.style.Widget_ProgressBar_Small);
pd.show();`

无需自定义 ProgressDialog 子类。