2013-06-19 45 views
4

我創建了一個自定義ProgressDialog如下: 首先,我有9個順序Imges定心自定義進度對話框

<?xml version="1.0" encoding="utf-8"?> 

<item android:drawable="@drawable/icon_progress_dialog_drawable_1" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_2" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_3" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_4" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_5" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_6" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_7" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_8" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_9" android:duration="150" /> 

然後,我有一個自定義的動畫列表風格

<style name="CustomDialog" parent="@android:style/Theme.Dialog" > 
    <item name="android:windowFrame">@null</item> 
    <item name="android:windowBackground">@null</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowTitleStyle">@null</item>  
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
    <item name="android:backgroundDimEnabled">false</item> 
    <item name="android:gravity">center</item> 
    <item name="android:minHeight">70dip</item> 
    <item name="android:maxHeight">80dip</item>  

現在在代碼中,我把它叫做如下

dialog = new ProgressDialog(KaguaHome.this); 
     dialog.setProgressStyle(R.style.CustomDialog); 
     dialog.setIndeterminate(true); 
     dialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.progress_dialog_icon_drawable_animation)); 
     dialog.show(); 

結果是 enter image description here

但是我想實現只用圖像的進度對話框(無白色背景),它應該以中心爲中心,我應該修改什麼?

+0

我會做它作爲活動,如果你有興趣,我可以使示例代碼 – deadfish

+0

我不希望它通過編程方式完成...需要它通過樣式和動畫相反 –

+0

是的,但恕我直言,如果你想在你的對話框上只有一個對象更重要的是,你也想把它放在中心..我認爲對話風格的活動將是最好的解決方案 – deadfish

回答

5

試試這個,並說出它是如何工作的。我試過這個,對我來說它是在中心。

<style name="NewDialog" parent="@android:style/Theme.Dialog"> 
     <item name="android:windowFrame">@null</item> 
     <item name="android:windowBackground">@android:color/transparent</item> 
     <item name="android:windowIsFloating">true</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowTitleStyle">@null</item> 
     <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
     <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
     <item name="android:backgroundDimEnabled">true</item> 
     <item name="android:background">@android:color/transparent</item> 
     <item ame="android:indeterminateDrawable">@anim/progress_dialog_icon_drawable_animation</item> 
    </style> 

並聲明此作爲

customDialog =新對話框(getActivity(),R.style.NewDialog);

看看是否有效。

+2

我試過你的解決方案,我在中間獲得進度對話框,但它不是自定義的,它的默認(居中和帶有黑色背景) –

+0

' true'使其爲false – deadfish

1
Dialog dialog = new Dialog(FlashActivity.this, android.R.style.Theme_Dialog); 
    dialog.setCancelable(false); 
    ImageView imageView = new ImageView(this); 
    imageView.setScaleType(ScaleType.FIT_XY);  
    imageView.setBackgroundResource(R.drawable.progress_dialog_icon_drawable_animation); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    dialog.setContentView(imageView);  
    dialog.setCanceledOnTouchOutside(false); 
    dialog.getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.color_drawable_1)); 

    dialog.show(); 
    AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground(); 
    animationDrawable.start(); 

下面是color_drawable_1

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item android:drawable="@color/transparent"></item> 

    </selector> 

下面是colors.xml透明的(你可以把任何透明色在這裏)

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 

     <color name="transparent">#00ffffff</color> 

    </resources> 

下面是你progress_dialog_icon_drawable_animation

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> 

<item android:drawable="@drawable/icon_progress_dialog_drawable_1" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_2" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_3" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_4" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_5" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_6" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_7" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_8" android:duration="150" /> 
<item android:drawable="@drawable/icon_progress_dialog_drawable_9" android:duration="150" /> 

</animation-list> 

由於您正在創建自定義對話框,因此不要將對話框創建爲progressdialog的實例。使用對話框主題創建 對話框的實例。將圖像視圖添加到其視圖內容。將繪圖設置爲圖像視圖並開始動畫。現在您必須根據需要修改窗口對話框。使它成爲無標題,因爲對話框主題通常帶有標題,並且必須使用任何透明顏色設置其背景顏色

嘗試上述操作,您可以讓我知道任何問題。有用。