web-dev-qa-db-ja.com

Android FragmentTransactionカスタムアニメーション(不明なアニメーター名:翻訳)

私は自分のフラグメントで動作するカスタムアニメーションを取得しようとしています。

私はオンラインチュートリアルに従いましたが、次のエラーが表示されました。

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();
}

他のスレッドのソリューションを理解するのに苦労しています。誰かが私のためにそれを馬鹿にすることができたら、私は本当に感謝しています。

67
SalicBlu3

機能しません。オブジェクトアニメーターを使用する必要があります

animator/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>

animator/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;

        }
106
Ammar ali

おそらく、2つのAPIを混合しています。次の2つの場合があります。

  • 3.0未満をターゲットにする場合またはサポートv4フラグメントの使用:古いアニメーションAPI、つまり使用しているAPIを使用する必要があります(anim /に移動し、R.anim.thing

  • 3.0以上をターゲットにしている場合およびネイティブフラグメントの使用:新しいアニメーションAPI、つまりObjectAnimatorsを使用する必要があります(それらはanimator /に入り、R.animator.thing)。

112
minivac

@minivacが答えたように、2つのAPIを混合しています。 Display Card Flip Animations from from Androidトレーニングガイドをご覧ください。フラグメントトランザクションにカスタムアニメーションを追加する方法についてさらに理解を深めることができます。問題。

0
txedo