在任何 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 子类。
我正在尝试制作自定义 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 子类。