Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android WebView Touch事件及相關問題處理

Android WebView Touch事件及相關問題處理

編輯:關於Android編程

 

繼上一篇 Android WebView常見問題及解決方案匯總 中歸納了一些處理webview的常見問題,這次要說的是webview中的touch事件:

有時候在開發中,我們需要對webview加入觸摸事件的處理,比如加入滑動效果或者類似於閱讀中的翻頁效果,這時候我們就需要重寫webview中的onTouch方法:

 

public class MyWebView extends WebView{
public MyWebView(Context context) {
  super(context);

  }

@Override
public boolean onTouchEvent(MotionEvent evt) {
  
   switch (evt.getAction()){
   
   case MotionEvent.ACTION_DOWN:
    //do something...... 
    break;
    
   case MotionEvent.ACTION_MOVE:
   
    //do something...... 
    break;          case MotionEvent.ACTION_UP:     
    //do something...... 
               
     break;               
    }                 
    return false;}
}


 

 

這裡要注意的是,返回值要為false,將此事件繼續向下傳遞.否則會引起 超鏈接不起作用的問題.

 

將onTouch()事件中的返回值改為false之後,有時候仍然還是不會觸發onTouch()事件,這是為什麼呢.經過逐行代碼的分析,終於找到了問題的根源:

主要是因為做了如下設置:

 

webView.getSettings().setBuiltInZoomControls(true);

 

該設置讓webview控件可以支持縮放,而這個縮放設置,同樣會響應onTouch事件的,所以會覆蓋掉我們自己設置的onTouhc監聽,引起了事件的沖突.

怎麼辦呢,如果需要設置webview大小的話,不是用webview的setting支持,而是調用webView.setInitialScale()函數來設置webview的大小

具體的數值可以這樣處理:

1.如果webview需要固定大小,可根據分辨率及webview位置綜合計算頁面大小初始比例.當然一般遇到頁面大小固定的話,還是在H5頁面中進行適配處理最好

2.如果就是需要對webview進行縮放,則需要給用戶提供一個縮放按鈕,然後自己控制每次縮放的數值,然後調用webView.setInitialScale(),數值大小根據需求而定,若無要求可參照webview本身支持的縮放大小數值.

 

 

 

 

 

 

 


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved