Android 将onScroll与viewFlipper一起使用
我想使用与iPhone gallery效果相同的效果。i、 e当我滚动一个图像时,下一个图像开始出现,并相对于前一个图像向内移动 我想使用这个在视图中的翻转器,直到现在我可以移动第一个图像,但我看不到下一个图像Android 将onScroll与viewFlipper一起使用,android,Android,我想使用与iPhone gallery效果相同的效果。i、 e当我滚动一个图像时,下一个图像开始出现,并相对于前一个图像向内移动 我想使用这个在视图中的翻转器,直到现在我可以移动第一个图像,但我看不到下一个图像 public class IphoneAnimationActivity extends Activity implements OnGestureListener { private static final int SWIPE_THRESHOLD_VELOCITY = 10
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);
}
公共类IphoneAnimationActivity扩展活动实现
OnEstureListener{
专用静态最终整数滑动\u阈值\u速度=1000;
手势检测器手势扫描器;
视图翻转器翻转器;
观点五;
ImageView imageView1;
ImageView imageView2;
更平坦的充气;
动画滑出;
动画幻灯片左;
动画滑出;
动画幻灯片;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
flipper=(ViewFlipper)findViewById(R.id.viewFlipper1);
充气=GetLayoutFlater();
v=充气。充气(R.layout.image_视图,空);
视图x=v;
flipper.addView(x);
SlideOutTright=AnimationUtils.loadAnimation(此,
R.anim.滑出(右滑出(光卡);
slideInRight=AnimationUtils.loadAnimation(此,
R.anim.滑动(右滑入光卡);
SlideOutlet=AnimationUtils.loadAnimation(此,
R.anim.滑出(左滑出(光卡);
slideInLeft=AnimationUtils.loadAnimation(此,
R.anim.滑盖(左滑盖)(在光卡中);
gestureScanner=新的GestureDetector(此);
flipper.setOnTouchListener(新的OnTouchListener(){
公共布尔onTouch(视图v,运动事件){
返回gestureScanner.onTouchEvent(事件);
}
});
}
公共布尔onFling(运动事件e1、运动事件e2、浮点速度X、,
浮动速度y){
//从右向左滑动
如果(e1.getX()-e2.getX()>0
&&Math.abs(velocityX)>滑动阈值(速度){
swipeLeft();
}
//从左向右滑动
如果(e2.getX()-e1.getX()>0
&&Math.abs(velocityX)>滑动阈值(速度){
swipeRight();
}
返回false;
}
私人无效swipeRight(){
flipper.setInAnimation(向右滑动);
flipper.setOutAnimation(滑动触发);
视图y=充气。充气(R.layout.image\u视图,空);
flipper.addView(y);
flipper.setDisplayedChild(1);
flipper.removeViewAt(0);
//flipper.showNext();
}
私有无效swipeLeft(){
flipper.setInAnimation(滑动左);
flipper.setOutAnimation(SlideOutlet);
视图y=充气。充气(R.layout.image\u视图,空);
flipper.addView(y);
flipper.setDisplayedChild(1);
flipper.removeViewAt(0);
}
@凌驾
公共布尔onDown(运动事件e){
返回false;
}
@凌驾
公开无效在线新闻(运动事件e){
}
@凌驾
公共布尔onScroll(MotionEvent e1、MotionEvent e2、浮点距离X、,
浮动距离){
如果((e1.getX()-e2.getX())>0)
{
flipper.scrollBy(10,0);
返回true;
}
else如果((e1.getX()-e2.getX())<0){
flipper.scrollBy(-10,0);
返回true;
}
其他的
{
}
返回false;
}
@凌驾
在ShowPress上公开作废(运动事件e){
}
@凌驾
公共布尔onSingleTapUp(运动事件e){
返回false;
}
公共布尔onTouchEvent(运动事件){
返回gestureScanner.onTouchEvent(事件);
}
}也许您应该使用widget,或者使用android兼容包?它们具有您想要的功能。从android support lib v13开始,ViewPager+PageTransformer就可以使用,并且可能实现以下功能:
我知道我可以使用flipper,但我想使用flipper,因为我当前的应用程序正在使用flipper,此时使用gallery更改它不是一个好主意。请给我提些建议。。