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添加到片段事务中。 它解决了你的问题。