我正在尝试使用自定义动画处理片段。
我已经按照在线教程,但我收到了以下错误:
java.lang.RuntimeException:未知的动画师名称:翻译
动画的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();
}
我无法理解其他线程中的解决方案。 如果有人能为我愚蠢,我真的很感激。
答案 0 :(得分:111)
可能你混合两个apis。有两种情况:
如果使用支持v4片段定位到3.0 或以下:您必须使用旧动画api,即您正在使用的动画api(它们进入anim /,并且{ {1}})
如果您使用原生片段定位超过3.0 和:您必须使用新动画apis,即ObjectAnimators(它们进入动画师/并且是R.anim.thing
)。
答案 1 :(得分:104)
它不起作用,你应该使用对象动画
动画/ 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>
动画/ 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>
Class Subcategory
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;
}
答案 2 :(得分:0)
@minivac回复说你混合了两个API。请查看Android培训指南中的Display Card Flip Animations示例,以进一步了解如何向片段事务添加自定义动画。它完全解决了你的问题。