在学习触摸监听以及手势检测后,可以制作一个简单的电子相册。实际是一个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. [leetcode] Construct Binary Tree from Preorder and Inorder Traversal
  2. 进行直播间搭建时需要注意的小细节
  3. vue及脚手架的下载安装,创建项目
  4. Javascript如何改变数组的长度?
  5. Qt Creator将QML模块与插件一起使用
  6. SAP UI5 事件通知技术的实现之Eventbus.subscribe
  7. 【英语学习】【WOTD】scavenger 释义/词源/示例
  8. 5个优化页面加载速度提高SEO排名的最佳实践
  9. c语言实现ftp客户端,下载ftp的文件内容信息
  10. 计算机属性资源管理器已停止工作,Win7资源管理器老是停止工作怎么办?资源管理器已停止工作解决方法...
  11. RS485设计技巧TOP10
  12. AXI总线简介(二)
  13. 如何获取地址栏的id (参数)
  14. 速读水浒!108将的简介与结局
  15. android 传感器 频率,Android加速度传感器数值的过滤
  16. 华为云mysql认证ssl_华为云SSL证书
  17. android app 隐藏应用,教你一招,隐藏我们手机中的APP应用!
  18. 二十一世纪最该了解的一类人:找个极客做朋友吧
  19. 在网页中插入flash的方法
  20. Android指纹解锁

热门文章

  1. 什么是有效的电子档案管理
  2. win10 sublime运行php环境,Win10下sublime text3搭建go语言开发环境--工具篇
  3. 一个留学生被戴了绿帽子之后,写给前女朋友的一封信
  4. 学习笔记(02):PPT2013 设计应该这样玩-PPT中复杂图形的绘制(案例篇)
  5. 清除微信公众号H5缓存
  6. VUE3+TS 引入JQuery
  7. python中的GIL详解
  8. MySQL的表分区详解_MySQL的表分区详解
  9. 一种简单的随机多边形生成方法
  10. el-table 表格 业务标配模板;