Android FragmentTransaction自定义animation(未知animation名称:翻译)

我试图得到一个自定义的animation来处理我的片段。

我已经按照在线教程,但我已经得到了以下错误:

java.lang.RuntimeException:未知的animation名称:translate

下面是animation的XML:

<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%" android:toXDelta="0" android:duration="300" /> </set> 

Java文件如下所示:

 public void goCategory(View v) { FragmentTransaction ft = fm.beginTransaction(); ft.setCustomAnimations(R.animator.anim_in_left, R.animator.anim_out_left); ft.show(fragment); ft.commit(); } 

我无法理解其他线程中的解决scheme。 如果有人能为我贬低它,我真的很感激它。

谢谢

它不会工作,你应该使用对象animation师

animation/ slide_in_left.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:propertyName="x" android:valueFrom="1000" android:valueTo="0" android:valueType="floatType" /> </set> 

animation/ slide_out_right.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:propertyName="x" android:valueFrom="0" android:valueTo="-1000" android:valueType="floatType" /> </set> 

类别子类别

  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub // return super.onCreateView(inflater, container, savedInstanceState); View view = (ViewGroup) inflater.inflate(R.layout.product_frame, null); getFragmentManager().beginTransaction() .replace(R.id.sub_header, new Sub_Header()).commit(); getFragmentManager() .beginTransaction() .setCustomAnimations(R.animator.slide_in_left, R.animator.slide_out_right, 0, 0) .replace(R.id.product_frame, new Sub_Catagory_Grid()).commit(); view.getWidth(); return view; } 

可能你正在混合两个apis。 有两种情况:

  • 如果瞄准低于3.0 使用支持v4片段:您必须使用旧的animationAPI,也就是您正在使用的animation(他们进入anim /,是R.anim.thing

  • 如果你定位在3.0以上, 使用本地片段:你必须使用新的animationapis,也就是ObjectAnimators(他们进入animator /和R.animator.thing )。

正如@minivac回答说,你正在混合两个API。 请查看 Android培训指南中的“ 显示卡片翻转animation”示例,以进一步了解如何将自定义animation添加到片段事务中。 它解决了你的问题。