文档章节

完整手势

mutouzhang
 mutouzhang
发布于 2014/04/12 15:24
字数 448
阅读 46
收藏 1
点赞 0
评论 0
package com.example.ontouch;

import java.security.PublicKey;

import android.os.Bundle;
import android.R.integer;
import android.app.Activity;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
/**
 * 
* 类名称:MainActivity   
* 类描述:   
* 创建人:dogoodsoft   
* 创建时间:2014-4-12 下午2:55:37   
* 修改人:dogoodsoft   
* 修改时间:2014-4-12 下午2:55:37   
* 修改备注:   
* @version    
*	因为要监听触摸屏的触摸事件和手势时间,所以该Activity必须实现OnTouchListener和OnGestureListener两个接口,并重写其中的方法。
 */
public class MainActivity extends Activity implements OnTouchListener,OnGestureListener{

	int count;
	//创建一个用于识别手势的GestureDetector对象
	private GestureDetector detector = new GestureDetector(this);
	
	int[] images = new int[]{R.drawable.pic1,R.drawable.pic2,R.drawable.pic3};
	
	private int index;
	private ImageView imageView;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        imageView = (ImageView) findViewById(R.id.image);
        imageView.setImageResource(images[index]);//设置初始画面
        
        imageView.setOnTouchListener(this);
        
        //不设就没法处理轻触以外的事件了,例如抛掷动作
        imageView.setLongClickable(true);
        detector.setIsLongpressEnabled(true);
        
    }

    public void goNext()
	{
		index++;
		index = Math.abs(index % images.length);
		imageView.setImageResource(images[index]);
	}
    public void goLast()
   	{
    	index--;
   		index = Math.abs(index % images.length);
   		imageView.setImageResource(images[index]);
   	}

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


	@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)
	{
		// TODO Auto-generated method stub
		return false;
	}


	@Override
	public void onLongPress(MotionEvent e)
	{
		// TODO Auto-generated method stub
		System.out.println("===长按");
	}


	//在抛掷动作中被调用
	@Override
	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY)
	{
		if (velocityX < 0 )	//手指向左滑
		{
			count++;
			goNext();
			System.out.println("===index"+index);
			System.out.println("===count"+count);
			System.out.println("==方向11111");
			
		}
		else if(velocityX > 0 ){ //手指向右划
			goLast();
			System.out.println("====count"+count);
			System.out.println("==方向22222");
		}
		return false;
	}

	//触摸事件
	@Override
	public boolean onTouch(View v, MotionEvent event)
	{
		detector.onTouchEvent(event);
		return true;
	}
    
}
<LinearLayout xmlns: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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

   
    <ImageView 
        android:id="@+id/image"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        />
</LinearLayout>


© 著作权归作者所有

共有 人打赏支持
mutouzhang
粉丝 6
博文 190
码字总数 91235
作品 0
洛阳
程序员
20分钟学会Android全手势处理,你要的都有

以前都是迷茫过日子,沉迷游戏,也是被腾讯害了我的前半生。谁都有人生最灰暗的一段日子,索性后来被一耳光打醒,才开始懂得珍惜时间,才会觉得时间是最贵重的,得拼命地挤。我的github13年申...

翻滚吧李博
2017/11/30
0
0
swift-视图跟随手指移动

要实现让一个view跟随手指在屏幕上移动的思路如下: 1.记录手指移动时的相对位移量 2.根据相对位移量改变view的frame。 实现思路清晰后,实现就简单了。 一、实现方式一 重写 UIResponder 的...

zh_iOS
2016/12/19
25
0
TakWolf/Android-Lock9View

Android Lock9View An Android grid lock screen view with a callback interface. ScreenShot Demo Usage Gradle implementation 'com.takwolf.android:lock9view:0.1.1' Layout example 1......

TakWolf
2014/12/13
0
0
写一个轮播图,学会 React Native

我学习 Web 的第一课,就是学习写一个轮播图,在写轮播图时自然地将 html、css、js、DOM、组件设计等各方面简单的知识点给串起来了。学习 React Native 的时候,也自然用起了这个思路,挺好用...

穿越过来的键盘手
07/10
0
0
HoloLens 平台的 3D 视频播放器--VR for VLC

VR for VLC 是基于著名的开源播放器项目 VLC 而开发的,根据 HoloLens 的设备特性开发出了 VR 播放模式,支持播放 3D 左右格式的视频,此应用同时也继承了 VLC 播放器所有的音乐视频播放的完整...

易天
2017/05/12
475
0
iOS-事件响应链的学习

前言 事件处理完整过程; 1,在手指触摸屏幕时,会产生一个事件,系统会把这个事件添加到UIApplication管理的事件队列中。 2,取出队列中最前面的事件,交给主窗口Window。 3,主窗口会逐级向...

麦兜卖鱼丸
2016/06/14
102
1
梦想照进现实:微软 Through 3D Display

一直渴望着可以走进计算机的世界,这就像一个仙境,另一个次元的世界;是否像《黑客帝国》和《创.战纪》里描述的那样刺激精彩,我们都无从知晓。 尽管现在三维传感技术和显示技术日新月异,但...

戴威
2012/03/29
1K
13
css手势状态定义属性cursor和自定义鼠标手势详解

css手势状态定义:cursor和自定义鼠标手势详解,示例演示cursor手势状态如下: auto : 默认值。浏览器根据当前情况自动确定鼠标光标类型。 all-scroll : 有上下左右四个箭头,中间有一个圆点...

罗马教堂的钟声
2015/12/10
8.8K
0
Android学习笔记之滑动翻页(屏幕切换)

如何实现手机上手动滑动翻页效果呢?呵呵,在这里我们就给你们介绍一下吧。 一般实现这个特效会用到一个控件:ViewFlipper <1>View切换的控件—ViewFlipper 这个控件是什么呢?请注意观看博文...

迷途d书童
2012/03/05
13.3K
2
图片操作系列 —(1)手势缩放图片功能

概述 项目开发中,大家APP开发一般都会用到上传图片,比如是上传了自己的生活照,然后在某个界面处查看上传的图片,这时候一般在这个查看详情的界面,会有手势放大缩小功能,手势进行旋转功能...

青蛙要fly
2017/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql 主从复制中遇到的错误!

。。。。。

万建宁
10分钟前
0
0
DUBBO 详细介绍

摘要: 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制. RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能 Registry: 服务目录框架...

明理萝
20分钟前
0
1
4 个快速的 Python 编译器 for 2018

简评:Python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试。 Python 其实是一种相当快的语言,但它并不像编译...

极光推送
23分钟前
0
0
spring boot注册多个MQ服务器的问题

关于注册到多个MQ源的文章已经有很多了,这里记录一下声明queue的坑; 如果使用注册bean的方式声明queue,会导致声明的queue同时被注册到所有的MQ源上; //如果使用下面的声明方式,que...

placeholder
25分钟前
0
0
Java面试基础篇——第九篇:BIO,NIO,AIO的区别

现在IO模型主要分三类:BIO(同步阻塞IO),NIO(同步非阻塞IO),AIO()。 先来看看BIO。 1. BIO 服务端接受到请求后,要指派或新建一个线程去处理客户端的IO请求,直到收到断开连接的指令。这么做...

developlee的潇洒人生
30分钟前
0
0
@RequestMapping @ResponseBody 和 @RequestBody 用法与区别

1.@RequestMapping 国际惯例先介绍什么是@RequestMapping,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为...

特拉仔
32分钟前
1
0
基于 HTML5 结合互联网+ 的 3D 隧道

前言 目前,物资采购和人力成本是隧道业发展的两大瓶颈。比如依靠民间借贷,融资成本很高;采购价格不透明,没有增值税发票;还有项目管控和供应链管理的问题。成本在不断上升,利润在不断下...

xhload3d
34分钟前
0
0
济南小程序热度分析

原文链接:http://www.jnqianle.cn/company/2072.html

tianma3798
34分钟前
1
0
大数据软件

beats 采集 kafka spark hive es grafana zeppelin

ArlenXu
37分钟前
0
0
Mac item2常用快捷键

标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 水平分屏:command + d 垂直分屏:c...

说回答
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部