2012-12-25 5 views
6

저는 LinearLayout, I am dynamically adding TextView, ImageView to that LinearLayout입니다. 이제이 TextViews와 ImageViews에 OnClickListener를 추가했습니다.레이아웃을위한 슬라이드 인 및 슬라이드 아웃 애니메이션

나는 10 개의 항목이있는 arraylist를 가지고 있는데 for 루프를 사용하여 각각의 값과 표시를 얻고있다. 다음과 이전 버튼이있는 퀴즈 앱이기 때문에 항목을 하나씩 표시하고있다. arraylist에서.

Link 1

Link 2

을하고도 나는이에 도움을 주시기 바랍니다 작업이

slideIn = new TranslateAnimation(
       TranslateAnimation.RELATIVE_TO_PARENT, 1.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f); 

     slideIn.setDuration(500); 
     slideOut = new TranslateAnimation(
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, -1.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f); 

     slideOut.setDuration(500); 

하지만 시도했다 : Now I need slide In and slide Out animation to apply to this Linear Layout.

나는 이것을 보았다.

편집 :

문제 : 선형 레이아웃이 적용하지만, 무슨 일 난 다음 버튼을 클릭하면 현재의 문제는 왼쪽으로 슬라이드하고 빈 화면이 다음이에서 밀어 옆에 표시하는 것입니다있다 질문을하고 싶지만 현재 질문이 나오면 바로 다음 질문을 따라야합니다.

+0

이 애니메이션을보기에 어떻게 적용 했습니까? –

+0

예 buddy 나는 이것을 선형 레이아웃에 적용했지만 어떤 일이 일어나는지는 다음 현재 질문을 클릭하면 왼쪽 슬라이드와 빈 화면이 슬라이드되어 다음 질문이 표시되지만 현재 질문 슬라이드가 표시되자 마자 다음 질문이 뒤따라야합니다. – Goofy

+0

viewflipper를 사용하고 애니메이션 및 애니메이션을 사용하면 어떨까요? –

답변

3

하는 경우 레이아웃이 동일한 내용을 가지고 있으면 뷰 플리퍼 안에 두 개의 레이아웃을 만듭니다. 데이터가있는 첫 번째보기를로드하고 표시합니다. 사용자가 다음 또는 이전을 클릭하면 데이터가 포함 된 다음보기를로드하고 두 번째보기가 이제 표시되고 애니메이션과 함께 표시되도록 플래그를 유지합니다.

이제 플래그 값에 따라 적절한 뷰를로드하고 shownext()를 호출하십시오.

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

    mainFlipper = (ViewFlipper) findViewById(R.id.flipper); 
    firstLayout = (LinearLayout) findViewById(R.id.layout1); 
    secondLayout = (LinearLayout) findViewById(R.id.layout2); 


    findViewById(R.id.btnPrevious).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      showPrevious(); 
     } 
    }); 

    findViewById(R.id.btnNext).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      showNext(); 
     } 
    }); 

} 

private void showNext() { 
    mainFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_left)); 
    mainFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_right)); 
    flip(); 
} 

private void showPrevious() { 
    mainFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_right)); 
    mainFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_left)); 
    flip(); 
} 

private void flip() { 
    if(isFirstVisible) { 
     isFirstVisible = false; 
     secondLayout.removeAllViews(); 
     secondLayout.addView(getTextView("Second")); 
    } else { 
     isFirstVisible = true; 
     firstLayout.removeAllViews(); 
     firstLayout.addView(getTextView("First")); 
    } 
    mainFlipper.showNext(); 
} 

private TextView getTextView(String txt) { 
    TextView txtView = new TextView(this); 
    txtView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
    txtView.setText(txt); 
    return txtView; 
} 
+0

감사합니다. 그것을 시도하고 다시 당신에게 돌아갈 것입니다. – Goofy

+0

헤이 내가 말했던 방식으로 시도했지만 지금은 내가 동적으로 추가하는보기를 제거 할 수 없어요, removeallviews()를 사용하면 애니메이션이 작동하지 않습니다. – Goofy

+1

코드로 내 게시물을 편집했습니다. 그것을 시험해보십시오 –

4

를 사용하여 고해상도/ANIM에서이 XML/

leftright.xml
이 권리 애니메이션 왼쪽입니다 :

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 
    <translate android:fromXDelta="-100%" android:toXDelta="0%" 
     android:fromYDelta="0%" android:toYDelta="0%" 
    android:duration="700"/> 
    </set> 

사용이 당신의 자바 코드에서

Handler handler = new Handler(); 
Runnable runnable = new Runnable(){ 
{ 
    public void run() 
{ 
    item[i].setInAnimation(AnimationUtils.loadAnimation(this,R.anim.leftright.xml)); 
    i=i+1; 
    handler.postDelayed(this,5000); 
} 
};handler.postDelayed(runnable,5000); 
+0

어떻게 애니메이션을 레이아웃에 적용 할 수 있습니까? arraylist에서 값을 가져와야하고 다음에 다음을 클릭하면 – Goofy

+0

이 표시되어야하므로 애니메이션을 단일 항목에 적용 할 수 없습니다. setContentView (R.layout.View2)'그런 다음 클래스 내부에서 수행하십시오. Intent iSecondLayout = new Intent (Activity.this, Activity.class); Activity.this.startActivity (iSecondLayout); Activity.this.overridePendingTransition (R.anim.lefttoright, R.anim.righttoleft); – mjosh

+0

나는 하나의 활동 만 가지고 있습니다. – Goofy

관련 문제