如何在android中实现swipe的手势功能及页面拖动动画

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在android中实现swipe的手势功能及页面拖动动画相关的知识,希望对你有一定的参考价值。

SimpleOnGestureListener. 你只需要实现自己所关心的手势就可以了.
Swipe在android里面是叫Fling ^_^
首先创建自己的一个手势detector类:

private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200;然后在onFling方法中, 判断是不是一个合理的swipe动作: if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) viewFlipper.setInAnimation(slideLeftIn); viewFlipper.setOutAnimation(slideLeftOut); viewFlipper.showNext(); else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) viewFlipper.setInAnimation(slideRightIn); viewFlipper.setOutAnimation(slideRightOut); viewFlipper.showPrevious(); 里的viewFlipper是含有多个view的一个container, 可以很方便的调用prev/next view, 加上animation动画, 可以达到一些不错的效果:
viewFlipper = (ViewFlipper)findViewById(R.id.flipper); slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in); slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out); slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in); slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out); 自定义的animation可以查看具体的XML, 比如从左边进来的一个动画:
参考技术A 桌面吗??桌面的设置里应该有吧

如何在android中实现Drag Distortion Image过滤器?

我正在研究自定义图像过滤器项目。我遇到了一个具有挑战性的任务,我应该在Funny face effect app中看到应用扭曲过滤器。我想开发Funny Face Effects中提供的前3个滤镜。

因此,为了实现这样的效果,我开始使用GPUImageView GPUImage,在此,它使用搜索条来扭曲来自中心的图像。我已经实现了Bulge失真。但有什么方法可以实现拖动过滤器,我可以通过拖动手势扭曲我的图像?

我们试图搜索除GPUImage之外的任何其他第三方类。但我们找不到有用的东西。

我们的查询如下: -

1)是否可以使用拖动手势应用拖动过滤器? (任何代码片段或参考可感知)

2)除GPU之外的任何其他第三方类可以帮助我们获得上述结果。

提前致谢!

enter image description here

答案

实现它的一种方法是使用附加纹理为片段着色器指定要应用的变形。当用户触摸图像以应用变形时,您可以从应用程序修改该纹理内容。

GPUImageBulgeDistortionFilter扩展了GPUImageFilter,它只使用一种纹理。

您需要在GPUImageFilter中使用1复制纹理绑定(glBindTexture)和赋值给片段着色器(glUniform1i),使用1作为新纹理(而不是0)。您还需要复制glGetUniformLocation并使用其他名称而不是inputImageTexture,例如inputImageTexture2。

在GPUImageBulgeDistortionFilter修改片段着色器或创建从GPUImageBulgeDistortionFilter派生的新类,以添加“uniform sampler2D inputImageTexture2; n”+

最后添加代码以使用inputImageTexture2纹素在inputImageTexture中在同一片段着色器中变换数据。

以上是关于如何在android中实现swipe的手势功能及页面拖动动画的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中实现图像视图的缩放效果?

如何在android中实现Drag Distortion Image过滤器?

如何在 iOS 中实现类似于 Android 手机(默认)的裁剪功能?

如何在iPhone应用程序中实现手写识别功能?

如何在 ListView 中实现 Android 4.0 之类的滑动以关闭功能?

由于Airtest中long_click无法实现长按,教你如何在Airtest中实现长按的方法