首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Android 内存优化】自定义组件长图组件 ( 长图滚动区域解码 | 手势识别 GestureDetector | 滑动计算类 Scroller | 代码示例 )

) 博客中完成了图像的区域解码 , 并显示在界面中 ; 本篇博客中主要完成长图滑动功能 , 触摸滑动 , 惯性滑动 , 操作 ; 一、GestureDetector 创建与设置 ---- 1 ....触摸事件传递给 GestureDetector : 在 View.OnTouchListener 触摸监听器的 onTouch 触摸回调方法中 , 将触摸事件传递给 mGestureDetector 处理...传递按下后事件 : 在 GestureDetector.OnGestureListener 监听器中的 onDown 方法中 , 要将返回值设置成 false , 此时事件才能传递下去 ; @Override...触摸滑动操作 : ① onScroll 方法 : 触摸滑动主要在 GestureDetector.OnGestureListener 监听器中的 onScroll 方法中实现 , 该方法是触摸滑动事件...惯性滑动回调方法 : 当发生惯性滑动时 , 此时手指已经离开屏幕 , 会自动回调 GestureDetector.OnGestureListener 监听器的 onFling 方法 , 主要在这个方法中根据监听到的速度值

1.6K22

如何响应用户交互事件

手势操作在Flutter中分为两类: 第一类是原始的指针事件(Pointer Event),即原生开发中常见的触摸事件,表示屏幕上的触摸(或鼠标、手写笔)行为触发的位移行为。...GestureDetector 是一个处理各种高级用户触摸行为的Widget,与Listener一样,也是一个功能性组件。 接下来我们通过一个案例来看看GestureDetector的用法。...从下面的实例中,我定义了两个嵌套的Container容器,分别加入了点击识别事件: GestureDetector( onTap: () => print('Parent tapped'),//...在此之前,我们还需要自定义一个手势识别器,让这个识别器在竞技场被PK失败时,能够再把自己重新添加回来,以便接下来还能继续去响应用户事件。....), ), ), ), ); 运行一下这段代码,我们可以看到,当点击蓝色容器时,其父容器也收到了Tap事件: I/flutter (16188): Child tapped

2.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android开发笔记(四十五)手势事件

    TouchEvent 下面是触摸事件的常用方法: getAction : 获取当前的动作 getX : 获取当前在控件内部的相对坐标X getY : 获取当前在控件内部的相对坐标Y getRawX...: 获取当前在屏幕上的相对坐标X getRawY : 获取当前在屏幕上的相对坐标Y getEventTime : 获取当前的事件时间 手势检测GestureDetector 由于在onTouchEvent...: OnGestureListener 设置监听器的方法,先给指定控件注册触摸监听器,然后在触摸方法onTouch中由GestureDetector接管触摸事件 :  private ScrollTextView...onTouchEvent方法,在该方法中由GestureDetector接管触摸事件。...2、在底层控件中,如果当前手势还未处理完成,那么必须阻止上级视图的手势拦截。

    1.3K30

    『Flutter』手势交互

    2.手势交互2.1.简介Flutter中的手势系统是一个强大且灵活的方式,允许开发者捕获并响应触摸屏上的各种用户交互。2.2.常见手势类型与常用属性Tap(点击):onTap: 当用户轻触屏幕时触发。...onTapUp: 当用户完成点击并抬起手指时触发。onTapDown: 当用户触摸屏幕并开始点击时触发。onTapCancel: 当用户取消点击时触发。...Scale(缩放):onScaleStart: 当缩放开始时触发。onScaleUpdate: 在缩放过程中连续触发。onScaleEnd: 缩放结束时触发。...GestureDetector还包含多个事件处理函数,如onTap、onDoubleTap、onLongPress等。这些函数分别在用户点击、双击或长按容器时触发,并在控制台中打印相应的消息。...最后,GestureDetector还包含一些处理垂直拖动事件的函数,如onVerticalDragDown、onVerticalDragStart、onVerticalDragUpdate这些函数在用户在容器上执行垂直拖动操作时触发

    53852

    Android 自定义 View 独家技巧

    在Android开发中,自定义View是非常常见的需求。自定义View可以帮助我们实现一些特殊的效果,或者让我们的应用更加美观。本文将介绍Android自定义View的步骤,并提供示例代码。...在构造方法中,我们可以完成一些初始化的工作,比如设置画笔颜色、初始化属性等。...绘制图形 } 在实现onDraw方法时,我们可以使用以下技巧: 使用局部变量:在onDraw方法中创建对象和变量会增加内存分配和垃圾回收的负担。因此,在onDraw方法中使用局部变量可以提高性能。...处理触摸事件 return super.onTouchEvent(event); } 在处理触摸事件时,我们可以使用以下技巧: 使用GestureDetector:GestureDetector...protected void onLayout(boolean changed, int left, int top, int right, int bottom) { // 在父容器的中央放置自定义

    29320

    Android 手势识别应用:手把手教你学会 GestureDetector(含实例讲解)

    作用 检测用户在屏幕的以下操作:按下瞬间、按压、长按、轻击、快速滑屏、拖动 2....用户轻触触摸屏,尚未松开或拖动 // 与onDown()的区别:无松开 / 拖动 // 即:当用户点击的时,onDown()就会执行,在按下的瞬间没有松开 / 拖动时onShowPress...接口 // 所以在使用OnDoubleTapListener接口时,也必须实现OnGestureListener接口 // 构造函数有3个,常用的是第二个 // 1....用户轻触触摸屏,尚未松开或拖动 // 与onDown()的区别:无松开 / 拖动 // 即:当用户点击的时,onDown()就会执行,在按下的瞬间没有松开 / 拖动时onShowPress...---- 总结 本文主要对Android手势识别类:GestureDetector类的使用进行全面讲解 接下来我将继续介绍 Android开发中的相关知识,感兴趣的同学可以继续关注本人博客Carson_Ho

    10.8K41

    Android 中 View 的手势事件处理

    : 首先,View 的源代码中已经给我们写了一个 onTouchEvent 方法用于处理最直接的触摸事件,我们可以在官方文档中看到对这个方法的介绍: public boolean onTouchEvent...简答来说就是我们可以在这个方法中处理当前 View 的触摸事件(单击事件也是一种触摸事件)。...View 本身设置 OnTouchListener 接口并且在接口中的 onTouch 方法中设置:GestureDetector.onTouchEvent(Event event) 方法来将 View...在鼠标指针方开之后(手指松开),还调用了 onFling 方法,上文代码中说过:onFling 方法只有滑动速率达到一定要求时候才会被调用。...最后还有一个问题:当一个 View 中既有 onTouchEvent 方法并且设置了 OnTouchListener 接口时,情况是怎样的呢?

    1.5K20

    android 触摸屏事件_android studio按钮点击事件

    表示为离开屏幕 ACTION_CANCEL //表示取消手势,不会由用户产生,而是由程序产生的 一个Action_DOWN, n个ACTION_MOVE, 1个ACTION_UP,就构成了Android中众多的事件...对于android 自定义控件的事件 android提供了一个GestureDetector的类和GestureDetector.OnGestureListener的接口来判断用户在界面上做出怎么样的动作...构造函数里 gestureDetector = new GestureDetector(newHahaGestureDetectorListener()); 然后在View的onTouchEvent里以下这样用...,就可以在刚才1)弄的事件里写自己的代码了。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.1K30

    Android学习第七弹之手势操作

    在昨天我们讲了Android的OnTouch触摸事件,有时候触摸和手势是相互联系的,密不可分的关系,所以上节我们讲了触摸事件,今天我们自然而然的就需要讲手势操作了。...触摸,手势操作已经很好的融入了我们的生活,那在Android开发中如何进行手势识别呢?下面我们就来讲讲。 什么是手势呢?...Android的SDK提供了对手势的识别、自定义手势、存取手势、手势库中査询手势的相关类/接 口,提供了android.view.GestureDetector包用于检测用户的手势。...与手势相关的类和接口 手势操作一般用到下面的三个类: android.view.GestureDetector 手势操作的识别类,通过他来使用下面的识别接口,该类在andmid.view.GestureDetector...方法中,将Touch事件传递给gestureDetector对象的onTouchEvent方法进行手势判定。

    91760

    View的基础知识介绍

    x、y 即为上图中的A点,分别对应A点在View坐标系中的X、Y轴上的坐标。 translationX、translationY则为相对于父容器ViewGroup的偏移量,默认为 0。...在构造函数中创建 通过 gestureDetector = new GestureDetector(context, this) 创建 GestureDetector, 然后实现 GestureDetector.OnGestureListener...和 GestureDetector.OnDoubleTapListener 接口, 然后在 onTouchEvent 中 返回 gestureDetector.onTouchEvent(event)...而我们在屏幕上快速滑动时,则会触发 onDown、onShowPress、onScroll、onScroll、onFling这五个回调,onShowPress 取决于你在按下和开始滑动之前的时间间隔,短的话就不会有...View的瞬间,由一个 DOWN 触发 OnGestureListener onShowPress 触摸View未松开或者滑动时触发 OnGestureListener onSingleTapUp 触摸后松开

    43410

    Flutter:使用手势识别做一个360旋转展物

    最近在复习Flutter的GestureDetector相关知识时,想到了以前用Android实现的展物项目,这次完整的用Flutter实现了一下,真是感觉代码简洁了很多, 项目整体需求 进入app时展物自动顺时针旋转...触摸展物时停止旋转 手势在展物上左右触摸滑动时展物跟随旋转 离开触摸时记录触摸方向然后继续自动旋转 可以顺时针,也可以逆时针旋转 旋转的原理 首先我们了解一下怎么让展物旋转起来,展物是一件在博物馆展示的文物...但是这样会有一个问题,就是图片替换太快,而每张图片大小在40K左右,替换过程中会有白屏闪烁的问题,这是因为图片需要载入到内存中然后通过Image.asset展示出来,幸好,有一个属性可以解决这样的问题,...在本例中,我们需要用到的就是onTap,onPanStart,onPanUpdate,onPanEnd这几个回调方法,经过实践并对代码加入手势事件之后,代码如下: GestureDetector(...在触摸屏幕的同时转换成index值替换图片,这样就实现了图片替换跟随手势的功能,然后,在手指离开屏幕之后还能继续旋转,这时候我们可以在触摸时加入方向判断, if (e.delta.dx < 0) {

    2.3K10

    札记:android手势识别,MotionEvent

    一般的,fling效果会结合GestureDetector,识别出手指的fling手势后开启滚动动画:在OnGestureListener中的onFling中执行Scroller.fling()方法。...在ACTION_MOVE中获得新的x,y和最后的(每次设置activePointer时记录对应x,y作为最后的坐标)坐标进行对比,计算产生的距离就是移动距离。...在ACTION_MOVE中记录移动到的位置,以及更新最后的触摸位置。最后,在UP、CANCEL中清除记录的pointerId。...注意onTouchEvent()中先执行ScaleGestureDetector的事件检测,然后是GestureDetector的,只要两次识别都未处理时,才调用父类的默认行为。...要知道,GestureDetector和ScaleGestureDetector这些框架提供的类型都是方便大家在自定义View时的手势识别功能的实现。

    5.2K70

    《Flutter》-- 7.事件处理

    在Flutter的原始指针事件模型中,在手指接触屏幕发起触摸事件时,Flutter会首先确定手指与屏幕发生接触的位置上究竟有哪些组件,然后通过命中测试(Hit Test)交给最内层的组件去响应。...在Flutter的事件模型中PointerEvent是Flutter原始指针事件的基础类,可以用它获取当前指针的一些信息: 1)position:全局坐标的偏移量; 2)delta:两次指针移动事件的距离...开发中,Gesture API代表手势语义的抽象,从组件层面监听手势可以使用GestureDetector等手势响应组件。...GestureDetector组件是一个处理各种高级用户触摸行为的组件,使用时只需要将它作为父组件包裹在其他子组件外面即可。...,GestureDetector会将需要监听组件的原点作为本次手势的起点,当用户在监听组件上按下手指时手势识别就开始运行。

    1.9K30

    限时分享Android面试中事件分发的高级技巧

    出发点: 在回答这个问题时,需要对View的事件传递、事件拦截和事件处理过程有清晰的认识,以及了解ViewGroup在事件分发中的作用。...出发点: 在回答这个问题时,需要考虑MotionEvent在触摸事件中的作用、如何获取和处理MotionEvent、MotionEvent的事件类型等方面。...问题: 请比较MotionEvent和GestureDetector的区别,并说明它们在事件处理中的应用场景。...出发点: 在回答这个问题时,需要对MotionEvent和GestureDetector的作用、原理和应用场景有清晰的认识。...在事件处理中,如果需要识别复杂的手势操作,可以使用GestureDetector来实现;如果只需要处理简单的触摸事件,可以直接使用MotionEvent。

    17010
    领券