1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android viewflipper 手势 Android中使用ViewFlipper进行手势切换实例

android viewflipper 手势 Android中使用ViewFlipper进行手势切换实例

时间:2021-07-07 18:11:14

相关推荐

android viewflipper 手势 Android中使用ViewFlipper进行手势切换实例

本文实例讲述了Android中使用ViewFlipper进行手势切换的方法,分享给大家供大家参考。具体实现步骤如下:

首先在layout的xml文件中定义一个ViewFlipper:

android:id="@+id/viewFlipper"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#FF0000"

/>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#00FF00"

/>

声明一个新的GestureDetector,重写它的onFling()函数,在这个函数里面判断手势,这里为横向的拖动:

public class MyGestureDetector extends SimpleOnGestureListener

{

private static final int SWIPE_MIN_DISTANCE = 120;

private static final int SWIPE_MAX_OFF_PATH = 250;

private static final int SWIPE_THRESHOLD_VELOCITY = 200;

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2,

float velocityX, float velocityY)

{

try

{

if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)

{

return false;

}

if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE &&

Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY)

{

viewFlipper.setInAnimation(slideLeftIn);

viewFlipper.setOutAnimation(slideLeftOut);

viewFlipper.showNext();

}

else

if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE &&

Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY)

{

viewFlipper.setInAnimation(slideRightIn);

viewFlipper.setOutAnimation(slideRightOut);

viewFlipper.showPrevious();

}

}

catch (Exception e)

{

}

return false;

}

}

注意在Activity中重写onTouchEvent()函数:

private ViewFlipper viewFlipper;

private Animation slideLeftIn;

private Animation slideLeftOut;

private Animation slideRightIn;

private Animation slideRightOut;

private GestureDetector gestureDetector;

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper);

slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);

slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);

slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);

slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);

gestureDetector = new GestureDetector(new MyGestureDetector());

new View.OnTouchListener()

{

public boolean onTouch(View v, MotionEvent event)

{

if (gestureDetector.onTouchEvent(event))

{

return true;

}

return false;

}

};

}

@Override

public boolean onTouchEvent(MotionEvent event)

{

if (gestureDetector.onTouchEvent(event))

{

return true;

}

else

{

return false;

}

}

最后,在res文件夹下新建一个anim文件夹,用来存放view之间切换的动画文件:

1.slide_left_in.xml

android:fromXDelta="100%p"

android:toXDelta="0"

android:duration="500"

/>

android:fromAlpha="0.0"

android:toAlpha="1.0"

android:duration="500"

/>

2.slide_left_out.xml

android:fromXDelta="0"

android:toXDelta="-100%p"

android:duration="500"

/>

android:fromAlpha="1.0"

android:toAlpha="0.0"

android:duration="500"

/>

3.slide_right_in.xml

android:fromXDelta="-100%p"

android:toXDelta="0"

android:duration="500"

/>

android:fromAlpha="0.0"

android:toAlpha="1.0"

android:duration="500"

/>

4.slide_right_out.xml

android:fromXDelta="0"

android:toXDelta="100%p"

android:duration="500"

/>

android:fromAlpha="1.0"

android:toAlpha="0.0"

android:duration="500"

/>

希望本文所述对大家的Android程序设计有所帮助

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。