600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Android之GestureDetector-简单手势操作及通过手势缩放图片 我离职后面试收割小米等大厂offer

Android之GestureDetector-简单手势操作及通过手势缩放图片 我离职后面试收割小米等大厂offer

时间:2023-01-01 13:52:37

相关推荐

Android之GestureDetector-简单手势操作及通过手势缩放图片 我离职后面试收割小米等大厂offer

Android提供了手势检测,并为其提供了相应的监听器,需要用到的类是GestureDetector,其实例代表了一个手势检测器,创建GestureDetector时需要传入一个GestureDetector.OnGestureListener实例,该实例就是一个监听器,负责对用户的手势行为提供响应。

GestureDetector.OnGestureListener里包含的事件处理方法如下:

boolen onDown(MotionEvent e): 当触碰事件按下时触发该方法。

boolean onFling(MotionEvent e, MotionEvent e2, float velocityX, float velocityY): 当用户在屏幕上长按时触发该方法。其中velocityX、velocityY代表“拖过”动作在横向和纵向上的速度。

abstract void onLongPress(MotionEvent e): 当用户在屏幕上长按时触发该方法。

boolean onScroll(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY): 当用户在屏幕上滚动时触发该方法。

void onShowPress(MotionEvent e): 当用户在触摸屏上按下,而且还未移动和松开时触发该方法。

boolean onSingleTapUp(MotionEvent e): 用户在触摸屏上的轻击事件将会触发该方法。

下面的例子测试了用户不同的手势操作触发的手势动作:

import android.app.Activity;

import android.os.Bundle;

import android.view.GestureDetector;

import android.view.MotionEvent;

import android.widget.Toast;

public class GestureTest extends Activity implements GestureDetector.OnGestureListener

{

//定义手势检测器实例

GestureDetector detector;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//创建手势检测器

detector = new GestureDetector(this);

}

//将该Activity上的触碰事件交给GestureDetector处理

@Override

public boolean onTouchEvent(MotionEvent e){

return detector.onTouchEvent(e);

}

@Override

public boolean onDown(MotionEvent e){

Toast.makeText(this, “onDown”, Toast.LENGTH_SHORT).show();

return false;

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){

Toast.makeText(this, “onFling”, Toast.LENGTH_SHORT).show();

return false;

}

@Override

public void onLongPress(MotionEvent e){

Toast.makeText(this, “onLongPress”, Toast.LENGTH_SHORT).show();

}

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY){

Toast.makeText(this, “onScroll”, Toast.LENGTH_SHORT).show();

return false;

}

@Override

public void onShowPress(MotionEvent e){

Toast.makeText(this, “onShowPress”, Toast.LENGTH_SHORT).show();

}

@Override

public boolean onSingleTapUp(MotionEvent e){

Toast.makeText(this, “onSingleTapUp”, Toast.LENGTH_SHORT).show();

return false;

}

}

上述代码创建了一个GestureDetector对象,并实现了GestueDetector.OnGestureListener的监听器实例,然后为Activity的Touchevent事件绑定监听器,在事件处理中指定把Activity上的TouchEvent事件交给GestueDetector处理。GestueDetector就会检测是否触发了特定的手势动作。

运行上面的代码,当我们随意在屏幕上触碰时,程序将会检测到我们执行了什么手势。

效果:

下面看一个通过手势缩放图片的例子:

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Matrix;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.view.GestureDetector;

import android.view.MotionEvent;

import android.widget.ImageView;

import android.widget.Toast;

public class GestureTest extends Activity implements GestureDetector.OnGestureListener

{

//定义手势检测器实例

GestureDetector detector;

ImageView imageView;

//初始化的图片资源

Bitmap bitmap;

//定义图片的宽高

int width, height;

//记录当前的缩放比

float currentScale = 1;

//控制图片缩放的Matrix对象

Matrix matrix;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

最后

**针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能

优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!**

往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。

以分享动态给身边好友一起学习!**

往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。

[外链图片转存中…(img-J9KrmyjS-1647702875925)]

[外链图片转存中…(img-DL1iYn3g-1647702875928)]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。