在学习触摸监听以及手势检测后,可以制作一个简单的电子相册。实际是一个ViewFlipper容器,里面放了5张图片,从右向左划动,看下一张图片,从左向右划动,看上一张图片。

目录

知识要点:

Java代码方法步骤

activity_main代码

MainActivity.java代码


知识要点:

estureDetector//手势检测类
GestureDetector.OnGestureListener//监听类

ViewFlipper组件//使用动画切换多个组件的效果
showPrevious();显示以前一张照片的方法
shuowNext();//显示下一张图片

Java代码方法步骤

第一步:让MainActivity实现GestureOverlayView.OnGestureListener接口,并实现其所有方法。
第二步:定义一个全局的手势检测器
第三步:将要显示的图片加载到ViewFlipper中,并且初始化动画数组。
第四步:在onFling()方法中通过触摸事件的X坐标判断是向左滑动还是向右滑动,并且为其设置动画。
第五步:将Activity上的触摸事件交给GestureDetector处理。

位移动画可参考http://www.cnblogs.com/bavariama/archive/2013/01/29/2881225.html

left_in.xml,图片从右向左滑动时的动画,View进入屏幕时候使用的动画

<?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.1" android:toAlpha="1.0"android:duration="500"/><scale android:fromXScale="0.01"android:toXScale="0.01"android:toYScale="1.0"android:duration="500"android:pivotX="50%"android:pivotY="50%"android:fillAfter="true"/></set>

left_out.xmll,图片从右向左滑动时的动画,View退出屏幕时候使用的动画

<?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="0.1" android:toAlpha="1.0"android:duration="500"/>
<scale android:fromXScale="0.01"android:toXScale="0.01"android:toYScale="1.0"android:duration="500"android:pivotX="50%"android:pivotY="50%"android:fillAfter="true"
/></set>

还有righ_in和right_out和left相似可参考http://www.cnblogs.com/bavariama/archive/2013/01/29/2881225.html学习,在这里就不写了。

activity_main代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><ViewFlipperandroid:id="@+id/flipper"android:layout_width="match_parent"android:layout_height="match_parent"></ViewFlipper></LinearLayout>

MainActivity.java代码

package com.example.a13468.myapplication;import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ViewFlipper;//第一步:让MainActivity实现GestureOverlayView.OnGestureListener接口,并实现其所有方法
public class MainActivity extends Activity implements GestureDetector.OnGestureListener {Animation[] animations = new Animation[4];//动画切换final int distance = 50;//用于手势记录两点之间的最小距离//图片数组private int[] images = new int[]{R.mipmap.photo1, R.mipmap.photo2, R.mipmap.photo3, R.mipmap.photo4,R.mipmap.photo5,};ViewFlipper flipper;//图片切换组件//第二步:定义一个全局的手势检测器GestureDetector detector;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//对全局手势检测器经行初始化detector = new GestureDetector(MainActivity.this, (GestureDetector.OnGestureListener) this);//第三步:将要显示的图片加载到ViewFlipper中,并且初始化动画数组flipper = findViewById(R.id.flipper);/*** 要加载的图片显示到ViewFlipper中*/for (int i = 0; i < images.length; i++) {ImageView imageView = new ImageView(this);imageView.setImageResource(images[i]);//指定显示数组中每一张照片flipper.addView(imageView);}//对图片数组初始化//初始化Animation数组animations[0] = AnimationUtils.loadAnimation(this,R.anim.left_in);animations[1] = AnimationUtils.loadAnimation(this, R.anim.left_out);animations[2] = AnimationUtils.loadAnimation(this, R.anim.right_in);animations[3] = AnimationUtils.loadAnimation(this, R.anim.right_out);}@Overridepublic boolean onDown(MotionEvent e) {return false;}@Overridepublic void onShowPress(MotionEvent e) {}@Overridepublic boolean onSingleTapUp(MotionEvent e) {return false;}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {return false;}@Overridepublic void onLongPress(MotionEvent e) {}@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {//第四步:在onFling()方法中通过触摸事件的X坐标判断是向左滑动还是向右滑动,并且为其设置动画//从右向左if(e1.getX()-e2.getX()>distance){flipper.setInAnimation(animations[2]);flipper.setOutAnimation(animations[1]);flipper.showPrevious();//显示前一张图片return true;}else  if(e2.getX()-e1.getX()>distance){flipper.setInAnimation(animations[0]);//进入的动画flipper.setOutAnimation(animations[3]);//淡出的动画flipper.showNext();//显示下一张图片return  true;}return false;}//第五步:将Activity上的触摸事件交给GestureDetector处理@Overridepublic boolean onTouchEvent(MotionEvent event) {return detector.onTouchEvent(event);}
}

安卓触摸手势翻页制作电子相册相关推荐

  1. 上一页,下一页的翻页制作`

    前言 提示:上一页,下一页的翻页制作 一.逻辑 1.获取数据,存到arrList 2.封装函数getDataList(),把数据存到arrList中 3.编写函数,上一页,下一页: 二.代码 代码如下 ...

  2. android 阅读 翻页,极速PDF安卓版如何翻页、阅读模式修改等操作详解

    如今手机几乎代替电脑,曾经用电脑操作的办公软件也逐渐被APP替代.近几年安卓市场上线的极速PDF因其小巧.速度快,也被广大用户下载使用.但使用这款APP阅读PDF文档时如何将左右翻页改成上下翻页,屏幕 ...

  3. codeblocks全屏模式怎么退出_极速PDF安卓版如何翻页、阅读模式修改等操作详解...

    如今手机几乎代替电脑,曾经用电脑操作的办公软件也逐渐被APP替代.近几年安卓市场上线的极速PDF因其小巧.速度快,也被广大用户下载使用.但使用这款APP阅读PDF文档时如何将左右翻页改成上下翻页,屏幕 ...

  4. Html5图片翻页制作,HTML5超酷名片盒风格3D翻页图片画廊

    在前面我们讲解了一个使用纯CSS制作3D百叶窗效果,今天我们要来制作一个类似名片盒的3D翻页图片画廊.在这个效果中,我们将使用一个HTML5 range输入框元素来控制图片画廊的前后翻页.这个rang ...

  5. 安卓触摸手势事件实现图片跟着手指移动和图片缩放

    效果如下: 布局代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:a ...

  6. Next FlipBook Maker Pro(h5电子书翻页效果制作软件)官方正式版V2.7.20 | h5翻页杂志制作软件下载

    ​            Next FlipBook Maker Pro 是一款优秀实用且酷炫逼真的交互式H5翻页电子杂志制作软件,为广大用户提供了一种将静态PDF文档或图片转换为带有H5翻页效果的数 ...

  7. 响应式电子相册翻页特效

    响应式电子相册翻页特效 基于jQuery制作的电子书响应式图片相册,支持带左右按钮控制图片淡出淡现切换,弹窗等效果.手机自适应屏幕大小. 演示地址 下载地址

  8. 如何轻松把Word、pdf文档制作成翻页电子书,电子画册?

    如何Word.pdf文档制作成翻页电子书 使用友益文书软件9.5.1版可以轻松把图片.pdf.word格式文档制作成翻页电子画册或电子杂志(电脑阅读exe格式或安卓手机apk格式电子书或可微信分享的网 ...

  9. 安卓APP_ Fragment(5)—— Fragment + ViewPager2 模拟微信首页 (2)两者联动翻页

    摘自:安卓APP_ Fragment(5)-- Fragment + ViewPager2 模拟微信首页 (2)两者联动实现翻页 作者:丶PURSUING 发布时间: 2021-04-22 00:11 ...

最新文章

  1. CUDA Samples: ripple
  2. 从HelloWorld看Knative Serving代码实现
  3. 丰田、福特们的焦虑:2018才大举杀入自动驾驶,是刚刚好还是已经晚了?
  4. 国庆假期,推荐一款假日必备的看片神器!
  5. JavaScript对象模型-执行模型
  6. 孩子数学成绩不好怎么办_孩子数学成绩不好,家长可以这样做
  7. 8位以上 密码 正则表达式
  8. Redis和mysql数据怎么保持数据一致的?
  9. RocketMQ 使用及常见问题
  10. 纪事本 乱码_纪事日记–可自定义的数据存储
  11. 销毁AWS资源:Cloud-Nuke还是AWS-Nuke?
  12. 小米岭南通服务器维护,小米岭南通交通联合卡内测开启
  13. Linux网卡命名规则
  14. vs2017c#开源项目_2017年值得关注的开源项目
  15. LeetCode--042--接雨水(java版)
  16. ShortUrl短网址算法
  17. 电子技术基础数字部分第六版_知识速递 | 数字电子技术基础知识要点
  18. 什么是 PHP 过滤器?为什么使用过滤器?
  19. PageAdmin如何修改后台页面标题。
  20. 类加载——类加载时机、类加载过程、类加载器

热门文章

  1. 血氧仪是如何得出血氧饱和度值的?
  2. Smartbi携手广州轻工集团打造集团价值创造型总部
  3. 【Linux超新】Nvidia Jetson Nano 安装pip
  4. 基于51单片机的16x32点阵滚动广告牌 proteus仿真原理图程序设计
  5. hlookup函数与选择性粘贴
  6. sp工具中最疼的是_阴阳师:SP缚骨清姬技能建模解读,另有伴生皮肤黛色寒青...
  7. 《ChineseBERT: Chinese Pretraining Enhanced by Glyph and Pinyin Information》阅读记录
  8. Excel VBA高效办公应用-第十四章-Excel图书管理系统
  9. Linux可以打开cdr文件吗,linux脚本ifcdr打开
  10. MutationObserver -- 判断vue Dom渲染完成