2014-09-25 51 views
1

我有一個webview的一些html數據顯示,其中包含一些圖像和超鏈接everthing工作正常,我需要什麼時,我點擊圖像在web視圖它應該開始activity.i找到一種方法來檢測圖像在使用Triger在單擊webview android中的圖像時的操作?

WebView.HitTestResult

通過使用此我可以檢測在web視圖圖像web視圖,我把這種在ontouchLisner我得到了圖像的檢測的問題是當我滾動在Web視圖中,如果我不小心將手指移動到圖像上,活動將啓動它,這是由於ontouchLisner有沒有解決此問題的方法activi只有當我點擊web視圖中的圖像時,ty纔會觸發。

的上touchlisner我在我的代碼

wv.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View arg0, MotionEvent arg1) { 
      // TODO Auto-generated method stub 
      WebView.HitTestResult hr = ((WebView) arg0).getHitTestResult(); 

      switch (arg1.getAction() & MotionEvent.ACTION_MASK) { 
      case MotionEvent.ACTION_DOWN: 

       break; 

      case MotionEvent.ACTION_UP: 


        if (hr.getType() == 5 || hr.getType() == 8) { 
         //Detect image in webview 
         startActivity(new 
         Intent(MainActivity.this,Other.class)); 



       } 
       break; 

      case MotionEvent.ACTION_POINTER_DOWN: 
       Log.d("-------", "clcik.den"); 

      case MotionEvent.ACTION_POINTER_UP: 
       Log.d("-------", "clcik.up"); 
       break; 

      case MotionEvent.ACTION_MOVE: 

       Log.d("-------", "clcik.movee"+hr.getType()); 
       break; 
      } 

      return false; 
     } 
    }); 

回答

1

使用您需要打開一個上下文菜單,當你在網頁視圖請點擊圖片。 爲此創建一個自定義的webview並覆蓋它的onCreateContextMenu方法。所以,只要你點擊圖片,它會打開一個菜單項,然後在該點擊時實現你的邏輯。使用此代碼可能對您有幫助:

public class CustomWebview extends WebView { 
    public static final int ID_DO_SOMETHING = 1; 


    private Context ctx; 
    public CustomWebview(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
     this.ctx = context; 
    } 

    public CustomWebview(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
     this.ctx = context; 

    } 

    public CustomWebview(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     // TODO Auto-generated constructor stub 
     this.ctx = context; 

    } 

    @Override 
    protected void onCreateContextMenu(ContextMenu menu) { 
     super.onCreateContextMenu(menu); 
     final HitTestResult result = getHitTestResult(); 
     MenuItem.OnMenuItemClickListener handler = new MenuItem.OnMenuItemClickListener() { 
      public boolean onMenuItemClick(MenuItem item) { 
       // do the menu action 
       switch (item.getItemId()) { 
       case ID_DO_SOMETHING: 

        // implement your logic here; 

        break; 

       default: 
        break; 
       } 
       return true; 
      } 
     }; 

     if (result.getType() == HitTestResult.IMAGE_TYPE 
       || result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { 
      // Menu options for an image. 
      // set the header title to the image url 
      menu.setHeaderTitle(result.getExtra()); 
      menu.add(0, ID_DO_SOMETHING, 0, "Your Method Name").setOnMenuItemClickListener(handler); 

     } 

    } 

} 
相關問題