스마트 폰에 기본적으로 웹브라우저가 내장이 되어있습니다만, 어플을 만들다보면 웹브라우저를 어플안에
넣을때도 있습니다.
물론 성능좋고 기능많은 브라우저가 있지만, 이건 어디까지나 어플안에 서비스 차원에서 넣는 것이니깐요^^
저도 최근 산모진통측정기 V3 를 업데이트 하면서 웹브라우저를 추가하였습니다.
요런식으로 말이죠
주소창 위쪽은 다른기능으로 가기위한 탭버튼 입니다. 그아래는 웹브라우저.
일단 코드는 간단합니다.
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:orientation="horizontal">
- <ImageButton
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:id="@+id/btnBack"
- android:scaleType="centerCrop"
- android:src="@drawable/back"/>
- <ImageButton
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:id="@+id/btnForward"
- android:scaleType="centerCrop"
- android:src="@drawable/forward"/>
- <EditText
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="7"
- android:id="@+id/address"
- android:singleLine="true"
- />
- <ImageButton
- android:id="@+id/btnRefresh"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:scaleType="centerCrop"
- android:src="@drawable/refresh"/>
- </LinearLayout>
- <WebView
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="10"
- android:id="@+id/internet"
- />
위 그림과 비교해 보면
Line 7의 imagebutton은 뒤로가기버튼,
Line 14의 imagebutton은 앞으로 가기버튼
Line 21의 EditText는 주소표시줄
Line 28의 imagebutton은 새로고침
Line 37의 webview는 웹브라우저 화면입니다.
layout은 간단하죠?
이제 java코드를 볼께요.~
먼저 web browser에서 javascript를 사용하기 위해 다음의 코드를 추가해 줍니다.
- final WebSettings webSetting = internet.getSettings();
- webSetting.setJavaScriptEnabled(true);
- webSetting.setLoadWithOverviewMode(true);
- webSetting.setUseWideViewPort(true);
각 버튼에 대한 설정입니다.
- @Override
- switch(v.getId()){
- case R.id.btnBack:
- internet.goBack();
- break;
- case R.id.btnForward:
- internet.goForward();
- break;
- case R.id.btnRefresh:
- if(!add.contains("http://"))
- add="http://"+add;
- internet.loadUrl(add);
- break;
- }
- }
internet은 WebView를 의미하는데 back 버튼 눌렀을때 간단히 internet.goBack(); 메소드를 쓰면
자동으로 이전페이지로 이동합니다.
forward버튼도 역시 internet.goForward(); 메소드를 쓰면됩니다.
한가지 주위할 점은 webview에서 앞의 http://를 추가해줘야되는데, 보통은 잘 적질 않으니, 새로고침(refresh)
버튼에 주소창을 검사해서 없으면 자동으로 넣어주도록 하였습니다.
이렇게만 하면 기본적인 웹브라우저가 됩니다.
추가적으로
- internet.setWebViewClient(new WebViewClient(){
- @Override
- address.setText(url);
- super.onPageFinished(view, url);
- }
- });
이 부분은 웹서핑을 하다보면 페이지가 바뀔때 주소창에 주소도 다시 뿌려주는 역할을 합니다.
그리고 주소창에 주소쓸때 가상키보드가 올라오면서 화면이 일그러지는것을 방지해주는 코드입니다.
- @Override
- if((actionId==EditorInfo.IME_ACTION_NEXT)||(event !=null &&event.getKeyCode()==KeyEvent.KEYCODE_ENTER)){
- if(!add.contains("http://"))
- add="http://"+add;
- internet.loadUrl(add);
- }
- return false;
- }
예제 코드를 실행하면 위와같이 실행됩니다.^^
'Study > Android' 카테고리의 다른 글
디바이스 언어 가져오기!! (0) | 2015.02.12 |
---|---|
fragment의 웹브라우저 뒤로가기 (0) | 2015.02.12 |
같은 스크린샷만 찍힐때 (0) | 2015.02.12 |
에뮬레이터 INSTALL_FAILED_CPU_ABI_INCOMPATIBLE (0) | 2015.02.11 |
surfaceview 에서 screenshot 찍기 (3) | 2015.02.11 |