10

我是新手程序员,我在禁用对话框动画(淡入和淡出)时遇到问题。

我尝试使用空样式来设置它并通过更改来设置它

final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

进入

final AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(getActivity(), R.style.NoAnimation));

对话框背景变黑,正负按钮改成<2.1 - 4.0) android风格,但淡入淡出动画效果依旧...

我的风格:

<style name="DialogNoAnimation">
    <item name="android:windowEnterAnimation">@anim/enter</item>
    <item name="android:windowExitAnimation">@anim/exit</item>
</style>

<style name="NoAnimation" parent="@android:style/Theme.Dialog">
    <item name="android:windowAnimationStyle">@style/DialogNoAnimation</item>
</style>

任何想法如何消除这个动画?

4

2 回答 2

12

终于成功了!

res/anim/enter.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
 android:duration="@android:integer/config_shortAnimTime"/>

res/anim/exit.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_shortAnimTime"/>

res/values/styles.xml

<style name="DialogNoAnimation">
    <item name="android:windowEnterAnimation">@anim/enter</item>
    <item name="android:windowExitAnimation">@anim/exit</item>
</style>

src/[dialog_box_class].java

@Override
public void onStart()
{
  super.onStart();
  if (getDialog() == null)
    return;
  getDialog().getWindow().setWindowAnimations(R.style.DialogNoAnimation);
}
于 2013-08-09T22:01:37.127 回答
7

这是一个简单的解决方案:

在您的 styles.xml 上定义自定义样式:

<style name="Dialog">
  <item name="android:windowAnimationStyle">@null</item>
  //... more items
</style>

使用您的自定义样式创建一个新的构建器:

AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.Dialog);
builder.setTitle("Dialog title");
builder.show();

请享用

于 2017-05-08T10:53:37.607 回答