2012-12-08 2 views
3

나는 프래그먼트 트랜지션에 애니메이션을 적용하고 있습니다. 라이브 애니메이션에서 슬라이드를 제공하고 싶지만 프로그래밍 방식으로 액세스 할 수 없습니다. android.R.anim
소스 코드를 탐색하면서이 폴더에 이 있으며 slide_in_right.xml을 비롯한 수십 개의 애니메이션이있는 것을 발견했습니다.안드로이드 안드로이드에 액세스하는 방법 slide_in_right.xml 애니메이션

코드에서 어떻게 액세스 할 수 있습니까? 내 res/anim 폴더에 복사/붙여 넣기보다 나은 방법이 있습니까? 당신은 아래의 코드를 사용하여 미리 정의 된 애니메이션 XML을 얻을 수

+1

아래에 표시됩니다 .R.something' 그냥 XML을 복사하고 로컬로 사용하십시오. – zapl

+0

android.R.anim.slide_in_right를 사용하여 참조 할 수 있어야합니다. 어떤 sdk 버전을 타겟팅하고 있습니까? –

+0

나는 17을 목표로하고 있으며, 최소 sdk 버전 14를 사용하고있다. – TeamBanana

답변

0

, 다른 곳에서 정의 된 question.android.R.anim.slide_out_right에 대한 답이 아니다 및 R.anim에서 액세스 할 수

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); 
+1

당신은 slide_in_right가 아니라 slide_out_right라고 말합니다. – Petr

3

. 이 패키지에서 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); 

애니메이션을로드하려면. 당신이 안드로이드`를 통해 액세스 할 수없는 경우

사용자가 이미지 다음 veiw 왼쪽으로 밀어 이전에 볼 수있는 이미지를 오른쪽으로 밀어 수있는 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; 
     } 
    }; 
} 
관련 문제