[ 실행 화면 ]
주말 열심히 쉬고 다시 시작한 홍드로이드 안드로이드 스튜디오 강의 듣기..
이번 강의는 초반에도 언급했는데 실무에서도 많이 쓰이는 WebView를 가져오는 강의였다.
내가 특정 url을 지정하면 AVD 화면에 그 url 화면을 띄울 수 있다!
1. activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
오늘도 activity_main.xml은 간단-하다.
LinearLayout으로 바꿔주고 WebView 추가해주기 + id 설정해주기만 하면 xml 설정은 끝!
2. MainActivity.java
package com.example.webviewexample;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
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 = findViewById(R.id.webView);
//웹뷰 관련 세팅해주기
//JavaScript라는 자바의 부가적인 언어가 있는데 그것을 허용해주기
webView.getSettings().setJavaScriptEnabled(true);
//특정 주소를 가져와서 틀어라
webView.loadUrl(url);
//웹뷰환경을 구글 크롬 브라우저에 맞춰서 쾌적하게 돌리기 위해 하는 추가 세팅
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClientClass());
//처음 webViewClientClass를 하면 빨갛게 에러남
//alt+Enter해서 innerclass create하기
}
//앱상에서 뒤로가기 버튼을 눌렀을 때 웹뷰가 정상적으로 종료될 수 있도록 하는 세팅
// ctrl+알파벳o
//다양한 안드로이드의 키를 입력을 했을때 어떠한 동작을 하라고 지정해주는 것
@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 {
//ctrl+o 해서 shouldOverrideUrlLoading 가져오기
//shouldOverrideUrlLoading 메소드는 현재 페이지의 url을 읽어올 수 있는 메소드임
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
//여기까지 했으면 AndroidManifest.xml에 들어가서 인터넷 권한 설정을 해주어야함.
강의를 들으면서 중간중간 주석을 추가했으니까 보면서 이해하면 될 듯!
항상 하던대로 변수 선언해주고, 이동하고 싶은 url 설정해서 String url 변수에 넣어주자.
나의 경우 https://www.naver.com 을 url에 넣어줘서 네이버 화면을 가져오도록!
webView = findViewById(R.id.webView);
//웹뷰 관련 세팅해주기
//JavaScript라는 자바의 부가적인 언어가 있는데 그것을 허용해주기
webView.getSettings().setJavaScriptEnabled(true);
//특정 주소를 가져와서 틀어라
webView.loadUrl(url);
//웹뷰환경을 구글 크롬 브라우저에 맞춰서 쾌적하게 돌리기 위해 하는 추가 세팅
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClientClass());
//처음 webViewClientClass를 하면 빨갛게 에러남
//alt+Enter해서 innerclass create하기
웹뷰를 세팅하는 부분이다.
webView.getSettings().setJavaScriptEnabled(true); 해주고
webView.loadUrl(url); 로 지정한 url을 load 해준다.
이후는 웹뷰 환경을 구글 크롬 브라우저에 맞춰 쾌적하게 돌리기 위해 추가 세팅을 해준다.
//다양한 안드로이드의 키를 입력을 했을때 어떠한 동작을 하라고 지정해주는 것
@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 {
//ctrl+o 해서 shouldOverrideUrlLoading 가져오기
//shouldOverrideUrlLoading 메소드는 현재 페이지의 url을 읽어올 수 있는 메소드임
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
위 코드도 뒤로 가기 키를 눌렀을 때 뒤로가는 기능 구현하기
+ WebViewClientClass를 create 해주면 나타나는 창 안에
현재 페이지의 url을 읽어올 수 있는 메소드인 shouldOverrideUrlLoading 메소드를 가져와준다.
여기까지했으면 마지막으로 AndroidManifest.xml에 들어가서 인터넷 권한 설정을 해주어야한다.
권한 설정을 안해주면 url 창이 안뜸!
3. AndroidManifest.xml
→ <uses-permission android:name="android.permission.INTERNET"/> 부분 추가해주기!!
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.WebViewExample"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
이렇게 해주고 AVD를 실행하면 내가 설정한 url 화면이 정상적으로 나오는 것을 확인할 수 있다!
확실히 이렇게 해당 페이지를 가져오는 부분은 실무에서 잘 사용될 것 같으니까 잘 기억해두기..
[ url 을 구글로 설정 시 실행 화면 ]
'안드로이드 스튜디오' 카테고리의 다른 글
[안드로이드 스튜디오] 앱만들기 #11. recyclerView (1) | 2024.09.04 |
---|---|
[안드로이드 스튜디오] 앱만들기 #10. Navigation Menu 커스텀 (0) | 2024.09.03 |
[안드로이드 스튜디오] 앱만들기 #8. SharedPreferences (0) | 2024.08.29 |
[안드로이드 스튜디오] + ActionBar에 Menu 추가하기 (1) | 2024.08.29 |
[안드로이드 스튜디오] 앱만들기 #7. Navigation Drawer Activity (0) | 2024.08.29 |