フラグメント遷移をアニメーション化しています。ライド アニメーションからスライドインを提供したいのですが、プログラムでアクセスすることができませんソース コードを調べているときに、いくつandroid.R.anim
かのアニメーションしか存在しません。frameworks/base/core/res/res/anim
slide_in_right.xml
コードからアクセスするにはどうすればよいですか? コピーして自分のres/anim
フォルダに貼り付けるよりも良い方法はありますか?
それは質問への答えではありません。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;
}
};
}
以下のコードを使用して、定義済みのアニメーション 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);