禁用(淡入和淡出)对话框动画

Str*_*mek 9 android dialog

我是新手程序员,我有禁用对话框动画(淡入和淡出)的问题.

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

final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
Run Code Online (Sandbox Code Playgroud)

final AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(getActivity(), R.style.NoAnimation));
Run Code Online (Sandbox Code Playgroud)

对话框的背景变为黑色,正面和负面按钮变为<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>
Run Code Online (Sandbox Code Playgroud)

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

Str*_*mek 12

终于成功了!

RES /动画/ 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"/>
Run Code Online (Sandbox Code Playgroud)

RES /动画/ 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"/>
Run Code Online (Sandbox Code Playgroud)

RES /值/ styles.xml

<style name="DialogNoAnimation">
    <item name="android:windowEnterAnimation">@anim/enter</item>
    <item name="android:windowExitAnimation">@anim/exit</item>
</style>
Run Code Online (Sandbox Code Playgroud)

SRC/[dialog_box_class]的.java

@Override
public void onStart()
{
  super.onStart();
  if (getDialog() == null)
    return;
  getDialog().getWindow().setWindowAnimations(R.style.DialogNoAnimation);
}
Run Code Online (Sandbox Code Playgroud)


AIT*_*ANE 7

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

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

<style name="Dialog">
  <item name="android:windowAnimationStyle">@null</item>
  //... more items
</style>
Run Code Online (Sandbox Code Playgroud)

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

AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.Dialog);
builder.setTitle("Dialog title");
builder.show();
Run Code Online (Sandbox Code Playgroud)

请享用