1

Android 2.1+でobjectAnimatorを使用しようとしています。公式の ObjectAnimator が Android 3.0 から導入されたため、ライブラリNineOldAndroidsを使用する必要があります。ただし、翻訳アニメーションは Android 3.0 以降でのみ機能します。Android <3.0 では、アニメーション後にビューの位置が変わりません。これを解決するのを手伝ってください。私がやろうとしているのは、ビューを水平にスライドさせることです。

更新: ソース コードを追加しました。このソースを android >3.0 でテストしましたが、正常に動作します。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    LayoutParams layoutParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    layoutMain = new RelativeLayout(getApplicationContext());
    layoutMain.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    layoutLeftMenu = new LinearLayout(getApplicationContext());
    layoutLeftMenu.setLayoutParams(layoutParams);
    layoutLeftMenu.setId(101);
    layoutMain.addView(layoutLeftMenu);


    layoutContent = new RelativeLayout(getApplicationContext());
    layoutContent.setLayoutParams(layoutParams);
    layoutMain.addView(layoutContent);

//Add the button and click event handler here
//...
}



 //called to slide the content view
    private void showMenu(final boolean slideToLeft) {
                    float slidePercent = 0.8f;
            System.out.println("screen width1: " + layoutContent.getWidth() );
            ObjectAnimator animator;
            if (!slideToLeft) {
                animator = ObjectAnimator.ofFloat(layoutContent, "translationX", slidePercent * layoutContent.getWidth());
            }
            else {
                animator = ObjectAnimator.ofFloat(layoutContent, "translationX", 0);
            }
            animator.setDuration(300);
            animator.start();

    }
4

1 に答える 1

0

アニメーションが永続化されていないことが問題である可能性があります。アニメーションの後に次のようなものを使用して、新しい位置に留まることができます。

AnimatorProxy.wrap(view).setTranslationX(offset); 
于 2012-12-20T15:58:13.643 に答える