2012-05-13 4 views
4

입니다. ViewFlipper 및 해당 번역 애니메이션을 구현하려고했습니다. 내가 참조 할 수있는 많은 페이지가 있지만, 아무리 노력해도, 나는 볼 수 없다. 애니메이션은 이제까지 일어난다. 아래는 내 프로젝트입니다. 현재 번역 애니메이션이 보이지 않지만 vf.setOutAnimation ... 부분을 주석 처리하면 inAnimation 애니메이션이 갑자기 작동하기 시작합니다. ...왜?Android - inAnimation은 ViewFlipper에서 작동하지만 outAnimation은

package com.example.testview; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.view.animation.AnimationUtils; 
import android.widget.TextView; 
import android.widget.ViewFlipper; 

public class TestViewActivity extends Activity implements OnTouchListener { 

    private ViewFlipper vf; 
    private float firstTouchX; 
    private float leaveTouchX; 

@Override public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    vf = (ViewFlipper) findViewById(R.id.viewFlipper1); 
    vf.setOnTouchListener(this); 
} 

    public boolean onTouch(View v, MotionEvent event) { 

     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
        firstTouchX = event.getX(); 
        break; 

      case MotionEvent.ACTION_UP: 
        leaveTouchX = event.getX(); 

       if (this.firstTouchX - 50f > leaveTouchX) { 

        vf.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.right_in)); 
        vf.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out)); 
        vf.showNext(); 
       } 
       if (this.firstTouchX + 50f < leaveTouchX) { 

        vf.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_in)); 
        vf.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.right_out)); 
        vf.showPrevious(); 
       } 
       break; 
     } 
     return true; 
    } 
} 

입술/ANIM/left_in.xml :

<?xml version="1.0" encoding="utf-8"?> 
<translate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="350" 
    android:fromXDelta="-100%p" 
    android:toXDelta="0%p" 
    android:fromYDelta="0%p" 
    android:toYDelta="0%p"> 
</translate> 

입술/ANIM/left_out.xml :

<?xml version="1.0" encoding="utf-8"?> 
<translate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="350" 
    android:fromXDelta="0%p" 
    android:toXDelta="-100%p" 
    android:fromYDelta="0%p" 
    android:toYDelta="0%p"> 
</translate> 

입술/ANIM/right_in.xml :

<?xml version="1.0" encoding="utf-8"?> 
<translate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="350" 
    android:fromXDelta="100%p" 
    android:toXDelta="0%p" 
    android:fromYDelta="0%p" 
    android:toYDelta="0%p"> 
</translate> 

res/anim/right_out.xml :

<?xml version="1.0" encoding="utf-8"?> 
<translate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="350" 
    android:fromXDelta="0%p" 
    android:toXDelta="100%p" 
    android:fromYDelta="0%p" 
    android:toYDelta="0%p"> 
</translate> 

고해상도/레이아웃/main.xml에

<?xml version="1.0" encoding="utf-8"?> 
    <ViewFlipper 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/viewFlipper1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 

     <include 
      android:id="@+id/first" 
      layout="@layout/first" /> 

     <include 
      android:id="@+id/second" 
      layout="@layout/second" /> 

     <include 
      android:id="@+id/third" 
      layout="@layout/third" /> 

    </ViewFlipper> 

first.xml/second.xml/third.xml (단지 자신의 사진 ID가 다른)

<?xml version="1.0" encoding="utf-8"?> 
<ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/img"> 
</ImageView> 

BIG 편집 : 나는 단지 내 게시물을 기반으로하는 더 작은 프로젝트를 만들었고 작동하는 것 같습니다. 아마도 토론을 시작하는 데 불필요하다고 생각하는 일부 코드를 생략하는 과정을 통해 문제가 발생했습니다. 시도를했다. nswer. 더 많은 설문 조사를 할 것이고, mods가이 질문을 삭제하지 않는 한, 나중의 참고 문헌에 사용될 수있는 붕괴를 게시 할 수 있기를 바랍니다.

BIG EDIT2 : 오늘 나는 다시 시도했는데, 아마도 Android ARM 2.2 에뮬레이터를 사용했기 때문에 작동하지 않았을 것입니다. 일단 ARM/Inter 2.3.3으로 전환하면 작동합니다.

+0

http://stackoverflow.com/questions/8786435/achartengine-graph-using-two-y-axis –

답변

0

같은 생명이 없음에 outAnimation를 교체

  if (this.firstTouchX - 50f > leaveTouchX) { 

       vf.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out)); 
       vf.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.right_in)); 
       vf.showNext(); 
      } 
      if (this.firstTouchX + 50f < leaveTouchX) { 

       vf.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.right_out)); 
       vf.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_in)); 
       vf.showPrevious(); 
      } 
      break; 

을이 시도 그리고 그것은 일 수 있습니다 시도!

+0

안녕하세요, 감사합니다. 내 문제를 정리하고 정확한 원인을 알아 내야합니다. 잠시 기다려주십시오. – Quv

+0

좋습니다! 좋습니다. – vajapravin

+1

이봐, 정말 에뮬레이터의 잘못이라고 여겨서 미안해. 내 PC는 그리 강하지 않았기 때문에 애니메이션을 표시 할 수 없었습니다 ... (Macbook Air 2012 모델 (Core i7)에서도 동일한 경우가 종종 발생하지만). 어쨌든 감사합니다! – Quv

관련 문제