4

フラグメント遷移をアニメーション化しています。ライド アニメーションからスライドインを提供したいのですが、プログラムでアクセスすることができませんソース コードを調べているときに、いくつandroid.R.anim
かのアニメーションしか存在しません。frameworks/base/core/res/res/animslide_in_right.xml

コードからアクセスするにはどうすればよいですか? コピーして自分のres/animフォルダに貼り付けるよりも良い方法はありますか?

4

3 に答える 3

3

それは質問への答えではありません。android.R.anim.slide_out_right は別の場所で定義されており、R.anim からアクセスできます。Slide_in_right はこのパッケージからアクセスできないため、xml ファイル定義を使用する必要があります

Frameworks/base/core/res/res/anim/slide_in_right.xml のファイルを res/anim/slide_in_right.xml にコピーして、次のコードを使用してアニメーションにアクセスできました。

AnimationUtils.loadAnimation(this, R.anim.slide_in_right);

アニメーションをロードします。

ユーザーが画像を左にスライドして次に表示し、画像を右にスライドして前を表示できるようにする onTouchListener を実現する完全なコードを以下に示します。

    /**
 * @return
 */
protected OnTouchListener createOnTouch() {
    return new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            if ((event.getAction() == MotionEvent.ACTION_DOWN) || (event.getAction() == MotionEvent.ACTION_POINTER_DOWN)) {
                downX = (int) event.getX();
                Log.i("event.getX()", " downX " + downX);
                return true;
            } else if ((event.getAction() == MotionEvent.ACTION_UP) || (event.getAction() == MotionEvent.ACTION_POINTER_UP)) {
                upX = (int) event.getX();
                Log.i("event.getX()", " upX " + upX);
                Log.d("event.getX()", " upX-downX " + (upX - downX));
                Log.d("event.getX()", " downX-upX " + (downX - upX));
                if (upX - downX > 100) {
                    imageSwitcher1.setInAnimation(AnimationUtils.loadAnimation(ImageDisplayActivity.this, android.R.anim.slide_in_left));
                    imageSwitcher1.setOutAnimation(AnimationUtils.loadAnimation(ImageDisplayActivity.this, android.R.anim.slide_out_right));

                    int newPosition = selected - 1;
                    showDetails(newPosition, gallery.getChildAt(newPosition));
                    // ImageDisplayActivity.this.switchTitle(curIndex);
                } else if (downX - upX > 100) {
                    imageSwitcher1.setInAnimation(AnimationUtils.loadAnimation(ImageDisplayActivity.this, R.anim.slide_in_right));
                    imageSwitcher1.setOutAnimation(AnimationUtils.loadAnimation(ImageDisplayActivity.this, R.anim.slide_out_left));

                    int newPosition = selected + 1;
                    showDetails(newPosition, gallery.getChildAt(newPosition));

                } else {
                    return false;
                }
                return true;
            }
            return false;
        }
    };
}
于 2013-04-26T14:37:11.947 に答える
0

以下のコードを使用して、定義済みのアニメーション xml を取得できます。

Animation animation;

public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   animation = AnimationUtils.loadAnimation(this,android.R.anim.slide_out_right);
于 2012-12-08T21:33:35.533 に答える