Dev/Android
Android (웹뷰 복습, 메뉴와 대화 상자, 코틀린으로 구현)
Walker_
2024. 4. 29. 17:01
1. 웹뷰 복습
<?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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="kr.jeongmo.a0429project">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.0429Project">
<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>
- manifest 파일 위처럼 작성
package kr.jeongmo.a0429project
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.webkit.WebView
import android.webkit.WebViewClient
class MainActivity : AppCompatActivity() {
lateinit var webView: WebView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var url = "https://www.starbucks.co.kr/index.do"
webView = findViewById(R.id.webView)
webView.webViewClient = myWebViewClient()
val webSettings = webView.settings
webSettings.javaScriptEnabled = true
webView.loadUrl(url)
}
class myWebViewClient : WebViewClient() {
}
}
- MainActivity 파일
2. 메뉴와 대화 상자 1) 메뉴
1) 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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/baseLayout"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="오른쪽 위 메뉴 버튼을 누르세요."/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:layout_gravity="center"
android:text="이전 버튼"/>
</LinearLayout>
- 프로젝트 새로 생성 후 XML 작성
- res에 menu 파일 추가
- menu1.xml 파일 추가
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/itemRed"
android:title="배경색(빨강)"/>
<item
android:id="@+id/itemGreen"
android:title="배경색(초록)"/>
<item
android:id="@+id/itemBlue"
android:title="배경색(파랑)"/>
<item
android:title="버튼 변경 >> ">
<menu>
<item
android:id="@+id/subRotate"
android:title="버튼 45도 회전" />
<item
android:id="@+id/subSize"
android:title="버튼 2배 확대" />
</menu>
</item>
</menu>
- menu1.xml에 위 코드 추가
package kr.jeongmo.a0429menuproject
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.LinearLayout
class MainActivity : AppCompatActivity() {
lateinit var baseLayout : LinearLayout
lateinit var button1 : Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "배경색 바꾸기"
baseLayout = findViewById(R.id.baseLayout)
button1 = findViewById(R.id.button1)
}
}
- Alt + Ins > Override Members > onCreateOptionsMenu() 추가
package kr.jeongmo.a0429menuproject
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Button
import android.widget.LinearLayout
class MainActivity : AppCompatActivity() {
lateinit var baseLayout : LinearLayout
lateinit var button1 : Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "배경색 바꾸기"
baseLayout = findViewById(R.id.baseLayout)
button1 = findViewById(R.id.button1)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
return super.onCreateOptionsMenu(menu)
menuInflater.inflate(R.menu.menu1, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.itemRed -> {
baseLayout.setBackgroundColor(Color.RED)
}
R.id.itemGreen -> {
baseLayout.setBackgroundColor(Color.GREEN)
}
R.id.itemBlue -> {
baseLayout.setBackgroundColor(Color.BLUE)
}
R.id.subRotate -> {
button1.rotation = 45f
}
R.id.subSize -> {
button1.scaleX = 2f
}
}
return super.onOptionsItemSelected(item)
}
}
3. 코틀린으로 구현
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/baseLayout"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="오른쪽 위 메뉴 버튼을 누르세요."/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:layout_gravity="center"
android:text="이전 버튼"/>
</LinearLayout>
package kr.jeongmo.a0429menuproject_kotlin
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Button
import android.widget.LinearLayout
class MainActivity : AppCompatActivity() {
lateinit var baseLayout: LinearLayout
lateinit var button: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "배경색 바꾸기"
baseLayout = findViewById(R.id.baseLayout)
button = findViewById(R.id.button1)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
return super.onCreateOptionsMenu(menu)
menu?.add(0,1,0,"배경색 (빨강)")
menu?.add(0,2,0,"배경색 (초록)")
menu?.add(0,3,0,"배경색 (파랑)")
val subMenu = menu?.addSubMenu("버튼 변경 >> ")
subMenu?.add(0, 4, 0, "버튼 45로 회전")
subMenu?.add(0, 5, 0, "버튼 2배 확대")
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
1 -> {
baseLayout.setBackgroundColor(Color.RED)
}
2 -> {
baseLayout.setBackgroundColor(Color.GREEN)
}
3 -> {
baseLayout.setBackgroundColor(Color.BLUE)
}
4 -> {
button.rotation = 45f
}
5 -> {
button.scaleX = 2f
}
}
return super.onOptionsItemSelected(item)
}
}
공부 과정을 정리한 것이라 내용이 부족할 수 있습니다.
부족한 내용은 추가 자료들로 보충해주시면 좋을 것 같습니다.
읽어주셔서 감사합니다 :)