1。效果图,本功能用了ViewFlipper和GestureDetector(手势检测器)两个关键技术点:
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) {
}
}