2014-09-25 2 views
1

일부 html 데이터가있는 webview가 표시됩니다. 일부 이미지와 하이퍼 링크가 포함되어 있습니다. webview에서 이미지를 클릭하면 activity.i가 시작될 때 이미지가 감지됩니다. 난 웹 화면에서 이미지를 검출 할 수이를 이용하여Trigg 웹 뷰 안드로이드에서 이미지를 클릭하면 동작이 나타 납니까?

WebView.HitTestResult

를 사용하여 웹 뷰 난 내가 스크롤 할 때 문제가되는 영상의 검출있어 ontouchLisner에 넣고 웹보기, 실수로 이미지를 가로 질러 손가락을 움직이면 활동이 시작됩니다 ontouchLisner가이 문제를 해결할 방법이 있습니까? 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); 

     } 

    } 

} 
관련 문제