当用户点击ListView
中的一行时,我显示的是一个DialogFragment
。我想让对话框的显示具有动画效果,这样它就可以从行的中心开始生长。当从启动器打开一个文件夹时,也可以看到类似的效果。
我的一个想法是TranslateAnimation
和ScaleAnimation
的结合。还有别的办法吗?
发布于 2013-04-05 00:04:41
看看这段代码,它对我很有效
//向上滑动动画
<?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>
//滑动动画
<?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
<style name="DialogAnimation">
<item name="android:windowEnterAnimation">@anim/slide_up</item>
<item name="android:windowExitAnimation">@anim/slide_down</item>
</style>
//内部对话框片段
@Override
public void onActivityCreated(Bundle arg0) {
super.onActivityCreated(arg0);
getDialog().getWindow()
.getAttributes().windowAnimations = R.style.DialogAnimation;
}
发布于 2015-04-10 16:51:24
出于这个原因,DialogFragment有一个公共的getTheme()方法,您可以重写它。此解决方案使用更少的代码行:
public class MyCustomDialogFragment extends DialogFragment{
...
@Override
public int getTheme() {
return R.style.MyThemeWithCustomAnimation;
}
}
发布于 2013-12-16 15:32:42
在DialogFragment中,自定义动画称为onCreateDialog。在前面的答案中,'DialogAnimation‘是自定义动画样式。
public Dialog onCreateDialog(Bundle savedInstanceState)
{
final Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
return dialog;
}
https://stackoverflow.com/questions/13402782
复制相似问题