全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android使用ViewFlipper和GestrueDetector共同实现滑屏效果实例

本文实例讲述了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 


相关文章: 如何通过wdcp面板快速创建网站?  建站之星图片链接生成指南:自助建站与智能设计教程  建站主机数据库如何配置才能提升网站性能?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  油猴 教程,油猴搜脚本为什么会网页无法显示?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何访问已购建站主机并解决登录问题?  建站上市公司网站建设方案与SEO优化服务定制指南  专业网站建设制作报价,网页设计制作要考什么证?  建站之星如何实现五合一智能建站与营销推广?  建站之星安装失败:服务器环境不兼容?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  大连 网站制作,大连天途有线官网?  高端企业智能建站程序:SEO优化与响应式模板定制开发  javascript中对象的定义、使用以及对象和原型链操作小结  如何在阿里云香港服务器快速搭建网站?  微信推文制作网站有哪些,怎么做微信推文,急?  建站之星如何助力网站排名飙升?揭秘高效技巧  建站主机类型有哪些?如何正确选型  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  营销式网站制作方案,销售哪个网站招聘效果最好?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  安云自助建站系统如何快速提升SEO排名?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  如何快速搭建支持数据库操作的智能建站平台?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  ,石家庄四十八中学官网?  如何选择高效稳定的ISP建站解决方案?  南京网站制作费用,南京远驱官方网站?  定制建站策划方案_专业建站与网站建设方案一站式指南  想学网站制作怎么学,建立一个网站要花费多少?  如何用景安虚拟主机手机版绑定域名建站?  中山网站制作网页,中山新生登记系统登记流程?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  网站制作模板下载什么软件,ppt模板免费下载网站?  如何通过宝塔面板实现本地网站访问?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  建站之星免费版是否永久可用?  高端云建站费用究竟需要多少预算?  小型网站建站如何选择虚拟主机?  如何选择可靠的免备案建站服务器?  Swift中swift中的switch 语句  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  如何快速生成可下载的建站源码工具?  如何在宝塔面板中创建新站点?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  浅谈Javascript中的Label语句 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。