2016-10-13 5 views
0

カスタムProgressDialogを作成するのを手伝ってください。私はそうした:カスタムProgressDialog 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); 

私はこの取得:

enter image description here

ですが、なぜでしょうか?どのような調整が必要ですか?

私が取得している:

enter image description here

+0

そして、まさにあなたが取得しようとしているにこのspinner_anim.xmlを貼り付け? –

+0

@KurtVandenBranden更新 – developer

答えて

0

をここでは、カスタムを作成するための私のクラスは、ここでは、ダイアログ

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 && 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 ProgressHUD

<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> 

あなたのアニメーションフォルダ

<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> 
0
pd = new ProgressDialog(getActivity()); 
pd.show(); 
pd.getWindow().setBackgroundDrawableResource(R.color.transparent); 
pd.setContentView(R.layout.custom_progressdialog); 
pd.setCancelable(false); 
+4

あなたの答えをサポートするために、より多くのコンテンツを提供し、単にコードスニペットを追加すると良い答えであるように思われません。 – agpt

関連する問題