2010-07-07 2 views
1

HI를 사용하여 안드로이드 웹보기 확대가 ScaleDetector

사용자 핀치와 가까이/멀리 자신의 손가락을 이동하면 가능 (기본 브라우저 유사) 웹보기의 줌을 지원하는 것입니다. 나는 2.2를 사용하고 ScaleGestureDetector를 사용하여이 작업을 수행 할 수 있습니다. 문제는 규모를 설정하는 방법을 찾지 못하는 것입니다. WebView.getScale()은 zoomIn() 및 ZoomOut()을 통해 변경되는 현재 크기를 반환하지만 setScale() 또는 기본적으로 확대/축소를 설정하고 OS에서 처리하도록하는 옵션을 찾을 수 없습니다.

앤디

답변

6

사용 :

webview.getSettings().setBuiltInZoomControls(true); 

는 핀치 줌을 화면에 인/아웃 버튼의 기본 줌을 넣어. setScale 있습니다

+0

: 감사합니다, U 시간을 절약했습니다. – Surej

+0

안녕하세요. 코드를 사용했지만 여전히 확대/축소 범위가 내 코드 http입니다. : //stackoverflow.com/questions/14497943/zoom-in-out-in-webview-android –

2

당신은 당신의 웹보기에 onTouchEvent (MotionEvent)를 구현해야합니다.

그런 다음 해당 이벤트를 처리 할 수 ​​있도록 ScaleGestureDetector에 MotionEvent를 전달한 다음 super를 호출하십시오.

class ScalableWebView extends WebView implements ScaleGestureDetector.OnScaleGestureListener 
{ 
    ScaleGestureDetector mScaleDetector = new ScaleGestureDetector(this, this); 

    public boolean onTouchEvent(MotionEvent event) 
    { 
     if(mScaleDetector.onTouchEvent(event)) 
      return true; 

     return super.onTouchEvent(event); 
    } 

    boolean onScaleBegin(ScaleGestureDetector detector) 
    { 
    //handle scale event begin 
    } 

    boolean onScale(ScaleGestureDetector detector) 
    { 
    //handle scale event 
    } 

    boolean onScaleEnd(ScaleGestureDetector detector) 
    { 
    //handle scale event end 
    } 

} 
+0

감사합니다. 위의 코드에서 설명한 것처럼 ScaleGestureDetector를 사용하고 MotionEvent를 전달하는 방법에 익숙합니다. 내 appologies 만약 내가 틀렸어 위의 코드가 실제로 WebView 확장되지 않을거야? WebView에는 setScale()이 없으므로 탐지기에서 onScale 메서드를 사용하여 확대/축소를 수행 할 수 있습니까? – Bear

+0

onTouch 메서드는 실제로 사용자 정의 WebView에있는 HTML과 상호 작용하는 것을 차단합니다. –

0

,이 시도 : 답장을 보내

webView.setInitialScale((int)(100 * webView.getScale());