原由:在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不能正常工作问题相关推荐

  1. Android之 如何解决ScrollView 和ListView滑动冲突的问题如何解决ScrollView can host only one direct child

    android 采用ScrollView布局时出现异常:ScrollView can host only one direct child. 解决办法:主要是ScrollView内部只能有一个子元素, ...

  2. android 滑动标签框架,Android实现网易严选标签栏滑动效果

    Android实现网易严选标签栏滑动效果 发布时间:2020-10-13 00:13:46 来源:脚本之家 阅读:85 作者:wlkdb 标签栏是一个非常常见的控件,似乎也是一个比较简单的控件,但如果 ...

  3. android+qq底部界面,Android 高仿QQ 界面滑动效果

    Android高仿QQ界面滑动效果 点击或者滑动切换画面,用ViewPager实现, 首先是布局文件: android:layout_width="match_parent" an ...

  4. android解决ScrollView嵌套ListView不能下拉刷新

    为了不误导新人,这篇帖子写的比较早了,这里2016年2月23日21:33:20更新的内容: 千万不要在实际开发中用scrollview嵌套listview\recylerview来处理滑动嵌套,   ...

  5. Android实现导航菜单左右滑动效果

    本文给大家介绍在Android中如何实现顶部导航菜单左右滑动效果. 今天给大家介绍在Android中实现顶部导航菜单左右滑动效果的二种解决方案. 第一种解决方案:  在以前的一篇博文中我使用andro ...

  6. 011 Android TabLayout+ViewPager实现顶部滑动效果(多个页面)

    1.TabLayout介绍 TabLayout提供了一个水平的布局用来展示Tabs,很多应用都有这样的设计,典型的有网易新闻,简书,知乎等.TabLayout就可以很好的完成这一职责,首先TabLay ...

  7. Android学习之-TextView的滑动效果

    textView中如何设置滚动条 在xml中定义: <TextView             android:layout_width="wrap_content"     ...

  8. 解决ScrollView与ViewPage滑动冲突的问题

    2019独角兽企业重金招聘Python工程师标准>>> <?xml version="1.0" encoding="utf-8"?> ...

  9. Android -- 自定义ScrollView实现放大回弹效果

    1,刚刚在别人开源的项目中看到了一个挺不错的用户体验,效果图如下: 2,那下面我们就来实现一下,首先看一下布局,由于一般只是我们包含头像的那部分方法,所以这里我们要把布局分成两部分,对应的布局文件效果 ...

最新文章

  1. 避免成为调包侠,从数学角度再看深度学习
  2. 【RecyclerView】 十三、RecyclerView 数据更新 ( 移动数据 | 数据改变 )
  3. QString和string类型相互转换
  4. Unity3D笔记十 游戏元素
  5. 干货 | 有赞数据仓库实践之路
  6. javascript 模板
  7. c语言米粒数实验报告,《單片机C程序设计》实验报告.doc
  8. 永利宝与火理财涉嫌非法吸收公众存款 6名犯罪嫌疑人抓捕
  9. 笔记本连接android手机屏幕,实现手机、电脑屏幕共享的7个步骤
  10. linux启动速度优化
  11. 机器学习(ML)、深度学习(DL)和图像处理(opencv)专用英语词典
  12. CCF的基于UEBA的用户上网异常行为分析baseline(线上0.9263)
  13. 用于地址解析的协议是服务器,用于解析域名的协议是什么?
  14. 计算机网络习题篇(一)
  15. 王逸凡的十万个为什么
  16. 判定图中存在回路java_图示电路中二极管为理想二极管,请判断它是否导通,并求出 u 0 。 (7.0分)_学小易找答案...
  17. 软考高级之系统架构设计师系列【2】考试说明及考点分析
  18. 腾讯云从业者题库整理
  19. go程序设计语言第四章-组合类型
  20. 3D视觉(六):PnP问题(pespective-n-point)

热门文章

  1. export default (imported as router) was not found_小学生必须知道的英语语法知识:as…as的七大用法...
  2. 深度学习tensorflow框架的张量
  3. 2.2 KNN算法实现
  4. eclipse下的tomcat内存设置大小
  5. oracle having用法
  6. ElasticSearch第二天
  7. 第一章:AJAX与jQuery
  8. oracle模拟试题
  9. python软件开发目录_软件开发目录规范
  10. python 向量_关于Python中的向量相加和numpy中的向量相加效率对比