2011-11-25 44 views
0

我想使用与iPhone画廊效果相同的效果。即当我滚动图像时,下一个图像开始出现并相对于先前图像向内移动。使用onScroll和viewFlipper

我想使用此视图鳍状肢,直到现在我可以移动第一个图像,但我看不到下一个图像。

public class IphoneAnimationActivity extends Activity implements 
    OnGestureListener { 

private static final int SWIPE_THRESHOLD_VELOCITY = 1000; 
GestureDetector gestureScanner; 
ViewFlipper flipper; 
View v; 
ImageView imageView1; 
ImageView imageView2; 

LayoutInflater inflate; 

Animation slideOutRight; 
Animation slideInLeft; 
Animation slideOutLeft; 
Animation slideInRight; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    flipper = (ViewFlipper) findViewById(R.id.viewFlipper1); 

    inflate = getLayoutInflater(); 

    v = inflate.inflate(R.layout.image_view, null); 

    View x = v; 
    flipper.addView(x); 

    slideOutRight = AnimationUtils.loadAnimation(this, 
      R.anim.slide_right_out_photocards); 
    slideInRight = AnimationUtils.loadAnimation(this, 
      R.anim.slide_right_in_photocards); 

    slideOutLeft = AnimationUtils.loadAnimation(this, 
      R.anim.slide_left_out_photocards); 
    slideInLeft = AnimationUtils.loadAnimation(this, 
      R.anim.slide_left_in_photocards); 

    gestureScanner = new GestureDetector(this); 

    flipper.setOnTouchListener(new OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      return gestureScanner.onTouchEvent(event); 
     } 
    }); 

} 

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
     float velocityY) { 

    // right to left swipe 
    if (e1.getX() - e2.getX() > 0 
      && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
     swipeLeft(); 
    } 
    // left to right swipe 
    else if (e2.getX() - e1.getX() > 0 
      && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
     swipeRight(); 
    } 
    return false; 
} 

private void swipeRight() { 

    flipper.setInAnimation(slideInRight); 
    flipper.setOutAnimation(slideOutRight); 

    View y = inflate.inflate(R.layout.image_view, null); 
    flipper.addView(y); 
    flipper.setDisplayedChild(1); 
    flipper.removeViewAt(0); 
    // flipper.showNext(); 

} 

private void swipeLeft() { 

    flipper.setInAnimation(slideInLeft); 
    flipper.setOutAnimation(slideOutLeft); 

    View y = inflate.inflate(R.layout.image_view, null); 
    flipper.addView(y); 
    flipper.setDisplayedChild(1); 
    flipper.removeViewAt(0); 
} 

@Override 
public boolean onDown(MotionEvent e) { 
    return false; 
} 

@Override 
public void onLongPress(MotionEvent e) { 

} 

@Override 
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, 
     float distanceY) { 

    if((e1.getX() - e2.getX()) > 0) 
    { 
     flipper.scrollBy(10, 0);    
     return true; 
    } 
    else if ((e1.getX() - e2.getX()) < 0) { 
     flipper.scrollBy(-10, 0);   
     return true; 
    } 
    else    
    { 

    } 
    return false; 
} 

@Override 
public void onShowPress(MotionEvent e) { 

} 

@Override 
public boolean onSingleTapUp(MotionEvent e) { 

    return false; 
} 

public boolean onTouchEvent(MotionEvent event) { 
    return gestureScanner.onTouchEvent(event); 
} 

}

回答

0

也许你应该使用Gallery小部件,或ViewPager从Android的兼容性包呢?它们具有你想要的功能。

+0

我知道我可以使用它们,但我想用鳍状肢作为我当前的应用程序使用此并改变它带画廊在这一点上不是一个好主意。请给我一些建议 – Hardik4560