#java #android
#java #Android
Вопрос:
Помогите мне создать пользовательский ProgressDialog. Я сделал так:
custom_progressdialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/progressdialog"
android:orientation="vertical" >
<ProgressBar
android:id="@ id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"/>
<TextView
android:id="@ id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Загрузка...
"
android:textStyle="bold"
android:textColor="@android:color/darker_gray"
android:layout_marginTop="8dp"/>
</LinearLayout>
progressdialog.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#d4ffffff" />
<corners android:radius="10dp" />
<padding android:left="15dp" android:top="15dp" android:right="15dp" android:bottom="15dp"/>
</shape>
И мой файл Java:
pd = new ProgressDialog(getActivity());
pd.show();
pd.setContentView(R.layout.custom_progressdialog);
pd.setCancelable(false);
Я понимаю это:
Почему это происходит? Какие настройки внести?
У меня есть:
Комментарии:
1. И что именно вы пытаетесь получить?
2. Обновление @KurtVandenBranden
Ответ №1:
Вот мой класс для создания пользовательского диалога прогресса
package yourpackage.abc;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.graphics.drawable.AnimationDrawable;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
public class CustomProgress extends Dialog implements OnDismissListener {
public CustomProgress(Context context) {
super(context);
}
public CustomProgress(Context context, int theme) {
super(context, theme);
}
public void onWindowFocusChanged(boolean hasFocus) {
if (hasFocus) {
ImageView imageView = (ImageView) findViewById(R.id.spinnerImageView);
AnimationDrawable spinner = (AnimationDrawable) imageView
.getBackground();
spinner.start();
}
}
public void setMessage(CharSequence message) {
if (message != null amp;amp; message.length() > 0) {
findViewById(R.id.message).setVisibility(View.VISIBLE);
TextView txt = (TextView) findViewById(R.id.message);
txt.setText(message);
txt.invalidate();
}
}
public static CustomProgress show(Context context, String message,
boolean indeterminate, boolean cancelable) {
CustomProgress dialog = new CustomProgress(context, R.style.ProgressHUD);
dialog.setTitle("");
dialog.setContentView(R.layout.anim_hud);
if (message == null || message.length() == 0) {
dialog.findViewById(R.id.message).setVisibility(View.GONE);
} else {
TextView txt = (TextView) dialog.findViewById(R.id.message);
txt.setText(message);
}
dialog.setCancelable(cancelable);
// dialog.setOnCancelListener(cancelListener);
dialog.getWindow().getAttributes().gravity = Gravity.CENTER;
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.dimAmount = 0.2f;
dialog.getWindow().setAttributes(lp);
// dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
try {
dialog.show();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return dialog;
}
@Override
public void onDismiss(DialogInterface arg0) {
System.out.println("dismiss is called");
}
}
вот anim_hud.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="20dp"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:paddingTop="20dp" >
<ImageView
android:id="@ id/spinnerImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@anim/spinner_anim" />
<TextView
android:id="@ id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="Message"
android:textColor="#FFFFFF" />
</LinearLayout>
скопируйте это в свой style.xml ПрогрессХУД
<style name="ProgressHUD" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
</style>
вставьте это spinner_anim.xml в вашу папку anim
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item
android:drawable="@drawable/spinner_0"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_1"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_2"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_3"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_4"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_5"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_6"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_7"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_8"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_9"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_10"
android:duration="60"/>
<item
android:drawable="@drawable/spinner_11"
android:duration="60"/>
</animation-list>
Ответ №2:
pd = new ProgressDialog(getActivity());
pd.show();
pd.getWindow().setBackgroundDrawableResource(R.color.transparent);
pd.setContentView(R.layout.custom_progressdialog);
pd.setCancelable(false);
Комментарии:
1. Предоставьте больше содержимого в поддержку вашего ответа, добавив только фрагмент кода, который, похоже, не является хорошим ответом.