Android实现页面翻转和自动翻转功能

  

1。效果图,本功能用了ViewFlipper和GestureDetector(手势检测器)两个关键技术点:

  

 Android实现页面翻转和自动翻转功能

  

2。先写好布局文件,这里用到了ViewFlipper类,用于切换视图,毕竟ViewFlipper见得少,先介绍一下。

  

在xml布局中的方法介绍:

  

android:自动运行:设置自动加载下一个View 
  android: flipInterval:设置观点之间切换的时间间隔
  android:没有生命:设置切换角度的进入动画
  android: outAnimation:设置切换视图的退出动画

  

当然同样的在代码中也可以设置:

  

isFlipping:判断视图切换是否正在进行
  setFilpInterval:设置观点之间切换的时间间隔
  startFlipping:开始视图的切换,而且会循环进行
  stopFlipping:停止观的切换
  setOutAnimation:设置切换视图的退出动画
  setInAnimation:设置切换角度的进入动画
  showNext:显示ViewFlipper里的下一个视图
  showPrevious:显示ViewFlipper里的上一个视图

        & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt; LinearLayout xmlns: android=" http://schemas.android.com/apk/res/android "   xmlns:应用=" http://schemas.android.com/apk/res-auto "   xmlns:工具=" http://schemas.android.com/tools "   android: layout_width=" match_parent "   android: layout_height=" match_parent "   android:取向=按怪薄?   工具:上下文=?slide.Main2Activity”比;   LinearLayout & lt;   android: layout_width=" match_parent "   android: layout_height=皐rap_content”比;   & lt;按钮   android: layout_width=" 0 dp”   android: layout_height=" wrap_content "   android: layout_weight=" 1 "   android: onClick="开始"   android:文本="开始自动翻”页/比;   & lt;按钮   android: layout_width=" 0 dp”   android: layout_height=" wrap_content "   android: layout_weight=" 1 "   android: onClick="停止"   android:文本="停止自动翻”页/比;   & lt;/LinearLayout>   & lt; ViewFlipper   android: id=癅 + id/activity_main2_vf”   android: layout_width=" match_parent "   android: layout_height=" match_parent "   android: flipInterval=" 1500 "祝辞& lt;/ViewFlipper>//flipInterval实现自动翻转时添加,值为每页翻转的时间   & lt;/LinearLayout>      

3。接下来是代码部分,首页介绍一下GestureDetector:

  

GestureDetector。OnGestureListener里包含的事件处理方法如下:
  & # 10146;布尔>   包com.example.mygesture.slide;   进口android.support.v7.app.AppCompatActivity;   进口android.os.Bundle;   进口android.view.GestureDetector;   进口android.view.LayoutInflater;   进口android.view.MotionEvent;   进口android.view.View;   进口android.view.animation.Animation;   进口android.view.animation.AnimationUtils;   进口android.widget.ImageView;   进口android.widget.ViewFlipper;   进口com.example.mygesture.R;   公共类Main2Activity AppCompatActivity实现GestureDetector延伸。OnGestureListener{//实现手势检测器接口   GestureDetector GestureDetector;//定义手势检测器   ViewFlipper ViewFlipper;//动画[]动画=新动画[4];//注释的部分为添加动画效果   int距离=50;   @Override   保护无效onCreate(包savedInstanceState) {   super.onCreate (savedInstanceState);   setContentView (R.layout.activity_main2);   init ();   }   私人空间init () {   gestureDetector=new gestureDetector(这);//实例化gestureDetector   viewFlipper=findViewById (R.id.activity_main2_vf);   viewFlipper.addView (addImageView (R.drawable.q1));//添加图片   viewFlipper.addView (addImageView (R.drawable.q2));   viewFlipper.addView (addImageView (R.drawable.q3));   viewFlipper.addView (addImageView (R.drawable.q4));//动画[0]=AnimationUtils.loadAnimation(这个,R.anim.left_in);//动画[1]=AnimationUtils.loadAnimation(这个,R.anim.left_out);//动画[2]=AnimationUtils.loadAnimation(这个,R.anim.right_in);//动画[3]=AnimationUtils.loadAnimation(这个,R.anim.right_out);   }   预展addImageView (int渣油){   ImageView ImageView=new ImageView(这个);   imageView.setImageResource(渣油);   imageView.setScaleType (ImageView.ScaleType.CENTER);   返回imageView;   }   @Override   公共布尔onFling (MotionEvent MotionEvent e1, e2、velocityX浮动,浮动velocityY) {   viewFlipper.stopFlipping ();//当滑动时停止自动翻转   如果(e1.getX () -e2.getX()在距离){//当从右向左滑动时//viewFlipper.setInAnimation(动画[0]);//viewFlipper.setOutAnimation(动画[1]);   viewFlipper.showPrevious ();//返回上一张视图   返回true;   }如果(e2.getX () -e1.getX()在距离){//当从左向右滑动时//viewFlipper.setInAnimation(动画[2]);//viewFlipper.setOutAnimation(动画[3]);   viewFlipper.showNext ();//切换下一张视图   返回true;   }   返回错误;   }   @Override   公共布尔onTouchEvent (MotionEvent事件){   返回gestureDetector.onTouchEvent(事件);//绑定触摸事件   }   公共空间开始(查看视图){   viewFlipper.startFlipping ();//开始自动翻转,与flipInterval配套使用,缺一不可   }   公共空间停止(查看视图){   viewFlipper.stopFlipping ();//停止自动翻转   }   @Override   公共逻辑等(MotionEvent e) {   返回错误;   }   @Override   公共空间onShowPress (MotionEvent e) {   }   @Override   公共布尔onSingleTapUp (MotionEvent e) {   返回错误;   }   @Override   公共布尔onScroll (MotionEvent MotionEvent e1, e2、distanceX浮动,浮动distanceY) {   返回错误;   }   @Override   公共空间onLongPress (MotionEvent e) {   }   }

Android实现页面翻转和自动翻转功能