Android使用ViewFlipper和GestrueDetector共同实现滑屏效果实例
发布时间 - 2026-01-10 23:15:39 点击率:次本文实例讲述了Android使用ViewFlipper和GestrueDetector共同实现滑屏效果。分享给大家供大家参考,具体如下:

关于GestureDetector的相关知识,前面已经介绍过了,不懂的大家可以去了解一下。
1.main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:orientation="vertical" >
<ViewFlipper
android:id="@+id/viewFlipper1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:persistentDrawingCache="animation"
android:flipInterval="1000"
android:inAnimation="@anim/push_left_in"
android:outAnimation="@anim/push_left_out"
>
<include android:id="@+id/lay1" layout="@layout/layout1"/>
<include android:id="@+id/lay2" layout="@layout/layout2"/>
</ViewFlipper>
</LinearLayout>
注:layout1和layout2 布局很简单,就是有一个textview和一个button,就不在这里写出了。其中包含了两个特效xml文件,放在res/anim下
1.push_left_in
<?xml version="1.0" encoding="utf-8"?> <set xmlns:Android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="500"/> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" /> </set>
2 push_left_out
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="500"/>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="500" />
</set>
主类:
package com.wj.gesture;
import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnDoubleTapListener;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewFlipper;
public class GestureDetectorTest extends Activity implements OnClickListener, OnTouchListener,OnGestureListener,OnDoubleTapListener{
GestureDetector gestureDetector;
private Button next = null,up = null;
private ViewFlipper flipper = null;
private static final int FLING_MIN_DISTANCE = 100;
private static final int FLING_MIN_VELOCITY = 200;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initview();
setListener();
}
private void initview(){
gestureDetector = new GestureDetector(this);
next = (Button)this.findViewById(R.id.button1);
up = (Button)this.findViewById(R.id.button2);
next.setOnClickListener(this);
up.setOnClickListener(this);
flipper = (ViewFlipper)this.findViewById(R.id.viewFlipper1);
flipper.setLongClickable(true);
}
private void setListener(){
flipper.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
//Toast.makeText(this, "ontouch", 1000).show();
return gestureDetector.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent e) {
// 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;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e1.getX()-e2.getX()>FLING_MIN_DISTANCE&&Math.abs(velocityX)>FLING_MIN_VELOCITY) {
flipper.setInAnimation(inFromRightAnimation());
flipper.setOutAnimation(outToLeftAnimation());
flipper.showNext();
}else if (e2.getX()-e1.getX()>FLING_MIN_DISTANCE&&Math.abs(velocityX) > FLING_MIN_VELOCITY) {
flipper.setInAnimation(inFromLeftAnimation());
flipper.setOutAnimation(outToRightAnimation());
flipper.showPrevious();
}
return false;
}
protected Animation inFromRightAnimation() {
Animation inFromRight = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, +1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f);
inFromRight.setDuration(500);
inFromRight.setInterpolator(new AccelerateInterpolator());
return inFromRight;
}
protected Animation outToLeftAnimation() {
Animation outtoLeft = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, -1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f);
outtoLeft.setDuration(500);
outtoLeft.setInterpolator(new AccelerateInterpolator());
return outtoLeft;
}
protected Animation inFromLeftAnimation() {
Animation inFromLeft = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, -1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f);
inFromLeft.setDuration(500);
inFromLeft.setInterpolator(new AccelerateInterpolator());
return inFromLeft;
}
protected Animation outToRightAnimation() {
Animation outtoRight = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, +1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f,
Animation.RELATIVE_TO_PARENT, 0.0f);
outtoRight.setDuration(500);
outtoRight.setInterpolator(new AccelerateInterpolator());
return outtoRight;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onClick(View v) {
if (v==next) {
flipper.showNext();
}else{
flipper.showPrevious();
}
}
}
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Android
# ViewFlipper
# GestrueDetector
# 滑屏效果
# Android组件banner实现左右滑屏效果
# Android Moveview滑屏移动视图类完整实例
# Android利用ViewPager实现滑动广告板实例源码
# Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果
# Android ViewPager相册横向移动的实现方法
# Android 使用viewpager实现无限循环(定时+手动)
# Android App中使用ViewPager+Fragment实现滑动切换效果
# Android App中ViewPager与Fragment结合的一些问题解决
# Android App中ViewPager所带来的滑动冲突问题解决方法
# Android ViewPager无限循环实现底部小圆点动态滑动
# Android基础之使用Fragment控制切换多个页面
# Android基础之Fragment与Activity交互详解
# Android基于ViewPager+Fragment实现左右滑屏效果的方法
# 进阶
# 在这里
# 放在
# 相关内容
# 过了
# 就不
# 不懂
# 感兴趣
# 给大家
# 很简单
# 更多关于
# 所述
# 程序设计
# 相关知识
# 有一个
# 操作技巧
# 包含了
# 讲述了
# 写出了
# outtoRight
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在Ubuntu系统下快速搭建WordPress个人网站?
七夕网站制作视频,七夕大促活动怎么报名?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
如何快速搭建高效可靠的建站解决方案?
在线制作视频的网站有哪些,电脑如何制作视频短片?
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
Laravel如何实现文件上传和存储?(本地与S3配置)
高端建站如何打造兼具美学与转化的品牌官网?
香港网站服务器数量如何影响SEO优化效果?
Python自动化办公教程_ExcelWordPDF批量处理案例
Laravel怎么上传文件_Laravel图片上传及存储配置
佛山网站制作系统,佛山企业变更地址网上办理步骤?
iOS发送验证码倒计时应用
Android实现代码画虚线边框背景效果
详解Android图表 MPAndroidChart折线图
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
大连网站制作公司哪家好一点,大连买房网站哪个好?
如何用免费手机建站系统零基础打造专业网站?
西安专业网站制作公司有哪些,陕西省建行官方网站?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
Laravel怎么实现验证码(Captcha)功能
Laravel如何使用Eloquent进行子查询
制作公司内部网站有哪些,内网如何建网站?
北京专业网站制作设计师招聘,北京白云观官方网站?
如何在万网主机上快速搭建网站?
微信小程序 require机制详解及实例代码
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
详解vue.js组件化开发实践
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
如何在宝塔面板中创建新站点?
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
个人摄影网站制作流程,摄影爱好者都去什么网站?
如何在云主机上快速搭建网站?
C#如何调用原生C++ COM对象详解
Firefox Developer Edition开发者版本入口
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
如何在IIS管理器中快速创建并配置网站?
高防服务器:AI智能防御DDoS攻击与数据安全保障
香港服务器选型指南:免备案配置与高效建站方案解析
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
做企业网站制作流程,企业网站制作基本流程有哪些?
Laravel如何为API生成Swagger或OpenAPI文档
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南

