【问题标题】:How to add animation to DialogFragment?如何将动画添加到 DialogFragment?
【发布时间】:2013-02-10 09:55:09
【问题描述】:

如何将动画添加到 DialogFragment。我的动画是:

出动画:

<scale
    android:duration="200"
    android:fillAfter="false"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:interpolator="@android:anim/linear_interpolator"
    android:pivotX="50%"
    android:pivotY="-90%"
    android:startOffset="200"
    android:toXScale="0.5"
    android:toYScale="0.5" />

<translate
    android:duration="300"
    android:fromXDelta="0"
    android:fromYDelta="0"
    android:toXDelta="-200"
    android:toYDelta="-200" />

在动画中:

<scale
    android:duration="200"
    android:fillAfter="false"
    android:fromXScale="0.5"
    android:fromYScale="0.5"
    android:interpolator="@android:anim/linear_interpolator"
    android:pivotX="50%"
    android:pivotY="-90%"
    android:toXScale="1.0"
    android:toYScale="1.0" />

<translate
    android:duration="300"
    android:fromXDelta="-200"
    android:fromYDelta="-200"
    android:toXDelta="0"
    android:toYDelta="0" />

和我的代码:

FragmentTransaction ft = getFragmentManager().beginTransaction();
                ft.setCustomAnimations(R.anim.jump_in, R.anim.jump_out, R.anim.jump_in, R.anim.jump_out);
                ft.add(layer_frag, "layer frag");
                ft.show(layer_frag).commit();//layer_frag is a class whitch extends DialogFragment

我必须错过一些东西,因为它看起来就像以前一样。

【问题讨论】:

  • 您的答案在这里:stackoverflow.com/a/13537234/969325。简而言之,您必须破解它,因为没有构建方式。
  • 可能不是,因为我这样做了,它对我也不起作用:(它稍微改变了布局,但动画没有出现
  • 那么我想你只剩下制作自己的片段了,它显示为一个对话框。
  • // 根据 num 选择样式。 int style = DialogFragment.STYLE_NO_TITLE; setStyle(style, R.style.MyCustomTheme);
  • 这样我已经设置了样式和自定义主题,但是动画被遗漏了:(

标签: android animation


【解决方案1】:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) 
{
    final Dialog dialog = super.onCreateDialog(savedInstanceState);
    dialog.getWindow().getAttributes().windowAnimations = R.style.detailDialogAnimation;
    return dialog;
}

答案来自stackoverflow.com/a/13537234/969325,但您必须在onCreateDialog 函数中设置样式。

【讨论】:

  • 你知道这些动画完成后是否有可能获得回调的方法吗?我想做一个两部分的动画,一个对话框滑入,然后淡入视图。如何将侦听器附加到 windowAnimations?
  • setAnimationListener(new AnimationListener() { public void onAnimationStart(Animation animation) { // TODO 自动生成方法 stub } public void onAnimationRepeat(Animation animation) { // TODO 自动生成方法 stub } public void onAnimationEnd(动画动画) { ladder.startAnimation(toRight); } });
  • 您不必在onCreateDialog 中设置样式,因为您可以在调用onCreateDialog 后随时使用getDialog 获取对话框。例如,我在onViewCreated 中调用它。
猜你喜欢
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
相关资源
最近更新 更多