웹뷰? 안드로이드 View 형태로 앱 안에 html iframe을 넣은 것 -> 하이브리드 앱을 개발하는데 사용된다.
장점 네이티브 앱 개발이 비해 개발이 쉽다. 앱에서 웹사이트 링크로 가는 기능을 지원하거나 사용자에게 이메일 같은 데이터를 가져오기 위해 앱에서 데이터를 제공하는 경우 사용된다.
빠르게 만들고 있어 비용과 시간, 유지보수가 용이하다. API기능 가능
단점 성능 문제와 html 기반이기에 애니메이션 UI 는 거의 쓰지 못한다.
네이티브 앱?
장점 Android 의 경우 Kotlin or Java 로 만들고(ios는 swift), 실행속도가 빠르고 API 가능하다. 사용자에게 가장 편리하고 안정적이고 좋은 환경을 제공한다.
단점 시간과 비용이 많이 들며 빌드하는데 시간이 많이 걸린다. 안드로이드와 ios 호환 불가하다.
+프로그레시브 앱? (PWA)
장점 네이티브앱과 하이브리드 앱의 장점들을 골라 기본 앱처럼 사용할 수 있고 API도 가능하다. 리액트나 앵귤러로만 만들 수 있다. 다중 플렛폼 앱에 사용되며 전자상거래 서비스에 많이 사용된다.
단점 앱스토어에서는 사용할 수 없고 PWA를 지원하지 않는 곳도 있다.
webView 사용법
1. manifests 부분에 이 코드를 추가한다.
<uses-permission android:name="android.permission.INTERNET"/>
인터넷을 허용하겠다 라고 인터넷 권한을 추가해야한다.
2.<application 안에 HTTP와 같은 cleartext 네트워크 트래픽을 사용할지 여부를 나타내는 코드이다. 이것도 추가한다.
android:usesCleartextTraffic="true"
3. (코드설명)
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private String url = "https://www.naver.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClientClass());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
private class WebViewClientClass extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
3-1. url에 원하는 사이트 링크를 써준다.
3-2. 셋팅해주어야 한다. 자바스크립트의 언어를 허용할거냐? 라는 뜻
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
3-3. chrome환경에 쾌적하게 하기위한 추가 셋팅이다.
webView.loadUrl(url);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClientClass());
}
3-4. 뒤로가기 버튼 및 현재 페이지에 url을 읽을 수 있게하는 코드이다.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
private class WebViewClientClass extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
4.결과
참조:
https://developer.android.com/guide/webapps/webview?hl=ko
'안드로이드 스튜디오' 카테고리의 다른 글
수강신청 어플 만들기 - Android Studio with JAVA(2) (8) | 2022.12.16 |
---|---|
수강신청 어플 만들기 - Android Studio with JAVA(1) (2) | 2022.12.11 |
TextView 크기 자동 조절 AutoResizeTextView오픈소스 라이브러리 (0) | 2022.12.10 |
안드로이드 onBackPressed() - 두번 뒤로가기 눌러 종료하기 (0) | 2022.12.07 |
안드로이드 스튜디오 AsyncTask , URLEncode (0) | 2022.12.07 |