2013-06-19 139 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的实例。使用对话框主题创建 对话框的实例。将图像视图添加到其视图内容。将绘图设置为图像视图并开始动画。现在您必须根据需要修改窗口对话框。使它成为无标题,因为对话框主题通常带有标题,并且必须使用任何透明颜色设置其背景颜色

尝试上述操作,您可以让我知道任何问题。有用。