日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android解决ScrollView中的滑动效果导致GestureDetector中的OnFling不能正常工作问题

發布時間:2024/1/17 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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不能正常工作问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。