FROM:http://blog.outsider.ne.kr/462
1
2
3
4
5
6
7
8
9
10
11
12
|
<? xml version = "1.0" encoding = "utf-8" ?> android:orientation = "vertical" android:layout_width = "fill_parent" android:layout_height = "fill_parent" > < WebView android:id = "@+id/webView" android:layout_width = "fill_parent" android:layout_height = "fill_parent" /> </ LinearLayout > |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package kr.ne.outsider; import android.app.Activity; import android.os.Bundle; import android.webkit.WebView; public class exwebview extends Activity { private WebView myWebView; @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); myWebView = (WebView) this .findViewById(R.id.webView); this .myWebView.loadUrl(DEFAULT_URL); } } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package kr.ne.outsider; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.widget.FrameLayout; public class exwebview extends Activity { private WebView myWebView; // new added private static final FrameLayout.LayoutParams ZOOM_PARAMS = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM ); @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); myWebView = (WebView) this .findViewById(R.id.webView); // new added FrameLayout mContentView = (FrameLayout)getWindow().getDecorView().findViewById(android.R.id.content); final View zoom = this .myWebView.getZoomControls(); mContentView.addView(zoom, ZOOM_PARAMS); zoom.setVisibility(View.GONE); this .myWebView.loadUrl(DEFAULT_URL); } } |
줌컨트롤을 추가했습니다.
28번째 라인은 최상위(top-level) 윈도우의 DecorView를 가져옵니다.
29번째 라인은 WebView객체의 줌컨트롤을 얻어옵니다.
30번째 라인에서 최상위(top-level) 윈도우에 줌컨트롤을 추가합니다. 참고한 포스팅을 쓴 분이 BroswerActivity의 코드에서 추출해 낸 코드라고 합니다.
31번째 출은 시작할때 줌컨트롤을 숨기도록 합니다. 이는 사용자가 화면을 스크롤할때만 줌컨트롤이 나타나도록 하기 위해서입니다.
평소엔 안보이다가 화면을 스크롤하면 줌컨트롤이 하단에 나타나고 +/-로 화면을 확대축소 할 수 있습니다. 제 생각에는 멀티터치를 이용한 줌이 기본으로 되어야 할 것 같은데 이유는 모르겠지만 멀티터치를 이용한 줌이 동작하지 않습니다. ㅠ..ㅠ
이렇게 웹뷰를 추가하게 되면 웹페이지의 URL을 클릭시에 웹뷰내에서 이동하지 않고 내장 브라우저가 호출되면서 내장 브라우저에서 링크된 페이지가 열리게 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package kr.ne.outsider; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.FrameLayout; public class exwebview extends Activity { private WebView myWebView; private static final FrameLayout.LayoutParams ZOOM_PARAMS = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM ); @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); myWebView = (WebView) this .findViewById(R.id.webView); FrameLayout mContentView = (FrameLayout)getWindow().getDecorView().findViewById(android.R.id.content); final View zoom = this .myWebView.getZoomControls(); mContentView.addView(zoom, ZOOM_PARAMS); zoom.setVisibility(View.GONE); // new added myWebView.setWebViewClient( new Callback()); this .myWebView.loadUrl(DEFAULT_URL); } // new added private class Callback extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return ( true ); } } } |
全站熱搜
留言列表