Android解决ScrollView中的滑动效果导致GestureDetector中的OnFling不能正常工作问题
原由:在Activity中使用了ScrollView以后,GestureDetector,手势事件不能正常工作,但移到ScrollView外面以后再手势操作,则又能正常工作,这里给出解决方案 覆写 dispatchTouchEvent 函数
@Override public boolean dispatchTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub mGestureDetector.onTouchEvent(ev); return super.dispatchTouchEvent(ev); }
看完整实例:
package com.example.gesturedetector;import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream;import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient;import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.Menu; import android.view.MotionEvent; import android.widget.TextView; import android.widget.Toast;public class MainActivity extends Activity implements OnGestureListener {private GestureDetector mGestureDetector; private Handler handler; private String result;@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mGestureDetector = new GestureDetector(this, this);handler = new Handler(); new Thread() { public void run() { HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet("http://www.baidu.com"); HttpResponse httpResponse = null; try { httpResponse = httpClient.execute(httpGet); InputStream in = httpResponse.getEntity().getContent(); try { result = readString(in); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } handler.post(new Runnable() {@Override public void run() { // TODO Auto-generated method stub TextView tv = (TextView) findViewById(R.id.textView1); tv.setText(result); } }); } }.start();}protected String readString(InputStream in) throws Exception { byte[] data = new byte[1024]; int length = 0; ByteArrayOutputStream bout = new ByteArrayOutputStream(); while ((length = in.read(data)) != -1) { bout.write(data, 0, length); } return new String(bout.toByteArray(), "GBK"); }@Override public boolean dispatchTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub mGestureDetector.onTouchEvent(ev); return super.dispatchTouchEvent(ev); }@Override public boolean onDown(MotionEvent arg0) { // TODO Auto-generated method stub // Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show(); return false; }@Override public boolean onFling(MotionEvent startEvent, MotionEvent endEvent, float velocityX, float velocityY) { // TODO Auto-generated method stub if (startEvent.getY() - endEvent.getY() > 100) { Toast.makeText(this, "手势向上滑动", Toast.LENGTH_SHORT).show(); return true; } else if (startEvent.getY() - endEvent.getY() < -100) { Toast.makeText(this, "手势向下滑动", Toast.LENGTH_SHORT).show(); return true; } else if (startEvent.getX() - endEvent.getX() > 100) { Toast.makeText(this, "手势向左滑动", Toast.LENGTH_SHORT).show(); return true; } else if (startEvent.getX() - endEvent.getX() < -100) { Toast.makeText(this, "手势向右滑动", Toast.LENGTH_SHORT).show(); return true; } return false; }@Override public void onLongPress(MotionEvent arg0) { // TODO Auto-generated method stub // Toast.makeText(this, "onLongPress ", Toast.LENGTH_SHORT).show(); }@Override public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2, float arg3) { // TODO Auto-generated method stub // Toast.makeText(this, "onScroll", Toast.LENGTH_SHORT).show(); return false; }@Override public void onShowPress(MotionEvent arg0) { // TODO Auto-generated method stub // Toast.makeText(this, "onShowPress", Toast.LENGTH_SHORT).show(); }@Override public boolean onSingleTapUp(MotionEvent arg0) { // TODO Auto-generated method stub // Toast.makeText(this, "onSingleTapUp", Toast.LENGTH_SHORT).show(); return false; }@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; }}
注意这里用到了 HttpClient 获取网络数据,具体使用方法及权限问题,可参照文章 Android中使用HttpClient实现HTTP通信效果
Android解决ScrollView中的滑动效果导致GestureDetector中的OnFling不能正常工作问题相关推荐
- Android之 如何解决ScrollView 和ListView滑动冲突的问题如何解决ScrollView can host only one direct child
android 采用ScrollView布局时出现异常:ScrollView can host only one direct child. 解决办法:主要是ScrollView内部只能有一个子元素, ...
- android 滑动标签框架,Android实现网易严选标签栏滑动效果
Android实现网易严选标签栏滑动效果 发布时间:2020-10-13 00:13:46 来源:脚本之家 阅读:85 作者:wlkdb 标签栏是一个非常常见的控件,似乎也是一个比较简单的控件,但如果 ...
- android+qq底部界面,Android 高仿QQ 界面滑动效果
Android高仿QQ界面滑动效果 点击或者滑动切换画面,用ViewPager实现, 首先是布局文件: android:layout_width="match_parent" an ...
- android解决ScrollView嵌套ListView不能下拉刷新
为了不误导新人,这篇帖子写的比较早了,这里2016年2月23日21:33:20更新的内容: 千万不要在实际开发中用scrollview嵌套listview\recylerview来处理滑动嵌套, ...
- Android实现导航菜单左右滑动效果
本文给大家介绍在Android中如何实现顶部导航菜单左右滑动效果. 今天给大家介绍在Android中实现顶部导航菜单左右滑动效果的二种解决方案. 第一种解决方案: 在以前的一篇博文中我使用andro ...
- 011 Android TabLayout+ViewPager实现顶部滑动效果(多个页面)
1.TabLayout介绍 TabLayout提供了一个水平的布局用来展示Tabs,很多应用都有这样的设计,典型的有网易新闻,简书,知乎等.TabLayout就可以很好的完成这一职责,首先TabLay ...
- Android学习之-TextView的滑动效果
textView中如何设置滚动条 在xml中定义: <TextView android:layout_width="wrap_content" ...
- 解决ScrollView与ViewPage滑动冲突的问题
2019独角兽企业重金招聘Python工程师标准>>> <?xml version="1.0" encoding="utf-8"?> ...
- Android -- 自定义ScrollView实现放大回弹效果
1,刚刚在别人开源的项目中看到了一个挺不错的用户体验,效果图如下: 2,那下面我们就来实现一下,首先看一下布局,由于一般只是我们包含头像的那部分方法,所以这里我们要把布局分成两部分,对应的布局文件效果 ...
最新文章
- 避免成为调包侠,从数学角度再看深度学习
- 【RecyclerView】 十三、RecyclerView 数据更新 ( 移动数据 | 数据改变 )
- QString和string类型相互转换
- Unity3D笔记十 游戏元素
- 干货 | 有赞数据仓库实践之路
- javascript 模板
- c语言米粒数实验报告,《單片机C程序设计》实验报告.doc
- 永利宝与火理财涉嫌非法吸收公众存款 6名犯罪嫌疑人抓捕
- 笔记本连接android手机屏幕,实现手机、电脑屏幕共享的7个步骤
- linux启动速度优化
- 机器学习(ML)、深度学习(DL)和图像处理(opencv)专用英语词典
- CCF的基于UEBA的用户上网异常行为分析baseline(线上0.9263)
- 用于地址解析的协议是服务器,用于解析域名的协议是什么?
- 计算机网络习题篇(一)
- 王逸凡的十万个为什么
- 判定图中存在回路java_图示电路中二极管为理想二极管,请判断它是否导通,并求出 u 0 。 (7.0分)_学小易找答案...
- 软考高级之系统架构设计师系列【2】考试说明及考点分析
- 腾讯云从业者题库整理
- go程序设计语言第四章-组合类型
- 3D视觉(六):PnP问题(pespective-n-point)
热门文章
- export default (imported as router) was not found_小学生必须知道的英语语法知识:as…as的七大用法...
- 深度学习tensorflow框架的张量
- 2.2 KNN算法实现
- eclipse下的tomcat内存设置大小
- oracle having用法
- ElasticSearch第二天
- 第一章:AJAX与jQuery
- oracle模拟试题
- python软件开发目录_软件开发目录规范
- python 向量_关于Python中的向量相加和numpy中的向量相加效率对比