Android开发:ViewFlipper 左右滑动效果
Android开发:ViewFlipper 左右滑动效果
怎么实现Android主页面的左右拖动效果。其实实现起来很简单,就是使用ViewFlipper来将您要来回拖动的View装在一起,然后与GestureDetector手势识别类来联动,确定要显示哪个View,加上一点点动画效果即可。
- public class TestFlip extends Activity implements OnGestureListener {
- private ViewFlipper flipper;
- private GestureDetector detector;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- detector = new GestureDetector(this);
- flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01);
- flipper.addView(addView(R.layout.layout1));
- flipper.addView(addView(R.layout.layout2));
- flipper.addView(addView(R.layout.layout3));
- flipper.addView(addView(R.layout.layout4));
- }
- private View addView(int layout) {
- LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View view = inflater.inflate(layout, null);
- return view;
- }
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- return this.detector.onTouchEvent(event);
- }
- @Override
- public boolean onDown(MotionEvent e) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
- float velocityY) {
- if (e1.getX() - e2.getX() > 120) {
- this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
- this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
- this.flipper.showNext();
- return true;
- } else if (e1.getX() - e2.getX() < -120) {
- this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));
- this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));
- this.flipper.showPrevious();
- return true;
- }
- return false;
- }
- @Override
- public void onLongPress(MotionEvent e) {
- // TODO Auto-generated method stub
- }
- @Override
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
- float distanceY) {
- // TODO Auto-generated method stub
- return false;
- }
- @Override
- public void onShowPress(MotionEvent e) {
- // TODO Auto-generated method stub
- }
- @Override
- public boolean onSingleTapUp(MotionEvent e) {
- // TODO Auto-generated method stub
- return false;
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <ViewFlipper android:id="@+id/ViewFlipper01"
- android:layout_width="fill_parent" android:layout_height="fill_parent">
- </ViewFlipper>
- </LinearLayout>
评论暂时关闭