首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用从点生长的动画显示DialogFragment

使用从点生长的动画显示DialogFragment
EN

Stack Overflow用户
提问于 2012-11-16 01:17:21
回答 8查看 110.2K关注 0票数 102

当用户点击ListView中的一行时,我显示的是一个DialogFragment。我想让对话框的显示具有动画效果,这样它就可以从行的中心开始生长。当从启动器打开一个文件夹时,也可以看到类似的效果。

我的一个想法是TranslateAnimationScaleAnimation的结合。还有别的办法吗?

EN

回答 8

Stack Overflow用户

发布于 2013-04-05 00:04:41

看看这段代码,它对我很有效

//向上滑动动画

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromYDelta="100%"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toXDelta="0" />

</set>

//滑动动画

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromYDelta="0%p"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toYDelta="100%p" />

</set>

// Style

代码语言:javascript
复制
<style name="DialogAnimation">
    <item name="android:windowEnterAnimation">@anim/slide_up</item>
    <item name="android:windowExitAnimation">@anim/slide_down</item>
</style>

//内部对话框片段

代码语言:javascript
复制
@Override
public void onActivityCreated(Bundle arg0) {
    super.onActivityCreated(arg0);
    getDialog().getWindow()
    .getAttributes().windowAnimations = R.style.DialogAnimation;
}
票数 136
EN

Stack Overflow用户

发布于 2015-04-10 16:51:24

出于这个原因,DialogFragment有一个公共的getTheme()方法,您可以重写它。此解决方案使用更少的代码行:

代码语言:javascript
复制
public class MyCustomDialogFragment extends DialogFragment{
    ...
    @Override
    public int getTheme() {
        return R.style.MyThemeWithCustomAnimation;
    }
}
票数 30
EN

Stack Overflow用户

发布于 2013-12-16 15:32:42

在DialogFragment中,自定义动画称为onCreateDialog。在前面的答案中,'DialogAnimation‘是自定义动画样式。

代码语言:javascript
复制
public Dialog onCreateDialog(Bundle savedInstanceState) 
{
    final Dialog dialog = super.onCreateDialog(savedInstanceState);
    dialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
    return dialog;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13402782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档