● Web View 코드 및 화면
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ViewActivity">
<WebView
android:id="@+id/wv"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="1dp"
android:layout_marginBottom="1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
WebView화면의 ID: - wv: 웹 화면을 보여주는 창
● Web View Activity
package com.example.ex221004;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.OnNewIntentProvider;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.example.ex221004.databinding.ActivityViewBinding;
public class ViewActivity extends AppCompatActivity {
ActivityViewBinding binding;
WebView wv; // 인터넷 화면을 보여줄 WebView
WebSettings webSettings; // WebView의 설정을 담고 있는 객체
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityViewBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
wv = binding.wv;
webSettings = wv.getSettings();
webSettings.setSupportZoom(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setDomStorageEnabled(true);
webSettings.setSupportMultipleWindows(false);
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
webSettings.setCacheMode(webSettings.LOAD_CACHE_ELSE_NETWORK);
webSettings.setUseWideViewPort(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(false);
webSettings.setLoadWithOverviewMode(true);
wv.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
wv.loadUrl(url);
return true;
}
});
wv.loadUrl("http://www.naver.com/");
}
// onCreate() 끝
@Override
public void onBackPressed() {
if(wv.canGoBack()){
wv.goBack();
}else{
super.onBackPressed(); // 부모의 뒤로가기 메소드 호출
}
}
}
- WebView wv; # 인터넷 화면을 보여줄 WebView
- WebSettings webSettings; # WebView의 설정을 담고 있는 객체
- wv = binding.wv;
webSettings = wv.getSettings();
webSettings.setSupportZoom(true); // Zoom 사용 여부
webSettings.setJavaScriptEnabled(true); // JavaScript 사용 여부
webSettings.setBuiltInZoomControls(true); // 화면 확대 축소 허용 여부
webSettings.setDomStorageEnabled(true); // 로컬 저장소 사용 여부
webSettings.setSupportMultipleWindows(false); // 멀티윈도우 사용 여부
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); // 컨텐츠 사이즈 맞추기
webSettings.setCacheMode(webSettings.LOAD_CACHE_ELSE_NETWORK); // 캐시 사용 여부
webSettings.setUseWideViewPort(true); // view port 사용 여부
webSettings.setJavaScriptCanOpenWindowsAutomatically(false); // JS가 window.open() 여부
webSettings.setLoadWithOverviewMode(true); // 메타 태그 허용 여부
- wv.setWebViewClient(new WebViewClient(){ # 페이지 컨트롤을 위한 기본적인 함수, 다양한 요청, 알림을 수신하는 기능을 한다.
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
# 만약 유저가 로딩한 컨텐츠에서 링크를 클릭할 경우에, 어떻게 할지를 override하는 것
-> 잠시 특정 웹사이트 페이지를 유저에게 보여주고, 클릭시에는 크롬같은 브라우저에서 웹서핑을 하도록 한다면, 아래와 같이 startActivity를 구현
wv.loadUrl(url);
return true;
}
});
- wv.loadUrl("http://www.naver.com/"); # 네이버 페이지를 Load
- onCreate() 끝난 후 뒤로가기 버튼 눌렀을 때 웹페이지 뒤로 이동
@Override
public void onBackPressed() { # 뒤로 가기 버튼 눌렀을때
if(wv.canGoBack()){
wv.goBack();
}else{
super.onBackPressed(); // 부모의 뒤로가기 메소드 호출
}
}
'개발 공부 > 안드로이드 스튜디오(코틀린)' 카테고리의 다른 글
안드로이드 스튜디오(랜덤색바꾸기) (0) | 2023.10.18 |
---|---|
안드로이드 스튜디오(노래 재생) (0) | 2023.10.18 |
안드로이드 스튜디오(로그인 + 플라스크서버) (0) | 2023.10.18 |
안드로이드 스튜디오 (네트워크 통신) (1) | 2023.10.18 |
코틀린 람다식 함수 (1) | 2023.10.18 |