1. res 파일 생성 및 정의
- 기본적인 색상 정의 or 레이아웃에 직접 작성
- values > colors.xml
<color name="white">#FFFFFF</color>
<color name="click_base">#7C7C7C</color>
- 클릭 모션 이미지 생성
- res > drawable > btn_click_base.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@color/click_base"/>
<item android:drawable="@color/white"/>
</selector>
- 다이얼로그 레이아웃 생성
- res > layout > dialog_alert.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="200dp"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:background="#FF4400"
android:gravity="center"
android:text="Alert"
android:textColor="#FFFFFF"
android:textSize="20dp"
android:textStyle="bold">
</TextView>
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="6"
android:text="테스트 메시지"
android:textColor="#000000"
android:textSize="20dp"
android:gravity="center">
</TextView>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.05"
android:background="#000000">
</View>
<Button
android:id="@+id/alertBtnClose"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:text="닫 기"
android:textColor="#FF4400"
android:textSize="15dp"
android:textStyle="bold"
android:gravity="center"
android:background="@drawable/btn_click_base">
</Button>
</LinearLayout>
- 엑티비티 레이아웃에 버튼 정의
- res > layout > activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/stcMainLogin"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/mainBtnA"
android:layout_width="200dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:text="버튼 A"
android:textColor="#000000">
</Button>
<Button
android:id="@+id/mainBtnB"
android:layout_width="200dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:text="버튼 B"
android:textColor="#000000">
</Button>
<Button
android:id="@+id/mainBtnC"
android:layout_width="200dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:text="버튼 C"
android:textColor="#000000">
</Button>
<Button
android:id="@+id/mainBtnD"
android:layout_width="200dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:text="버튼 D"
android:textColor="#000000">
</Button>
</LinearLayout>
2. 다이얼로그 코드 작성
- 위젯 선언 별도 함수로 정리
- 클릭 이벤트 정의 (다중 클릭 이벤트가 존재할 수 있으므로 onClick 함수로 사용)
- com.project.mykotlin > dialog > CommAlertDialog
package com.project.mykotlin.dialog
import android.app.Dialog
import android.content.Context
import android.util.Log
import android.view.View
import android.view.WindowManager
import android.widget.Button
import com.project.mykotlin.R
import kotlinx.android.synthetic.main.dialog_alert.*
class CommAlertDialog(context : Context) : View.OnClickListener {
private val dialog = Dialog(context)
private var alertBtnClose : Button? = null
fun CommAlertDg() {
try {
//화면 레이아웃 설정
dialog.setContentView(R.layout.dialog_alert)
//다이얼로그 크기 설정
//dialog.window!!.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT)
//다이얼로그 외부 터치 시 닫기 (true : 허용, false : 거부)
dialog.setCanceledOnTouchOutside(false)
//다이얼로그 뒤로 가기 버튼으로 닫기 (true : 허용, false : 거부)
dialog.setCancelable(true)
//내부 위젯 선언
commAlertDialogWidgetDeclare()
//다이얼로그 생성
dialog.show()
}catch(e : Exception) {
Log.e("TLOG", "CommAlertDialog : CommAlertDg 오류 확인 : " + e.toString())
}
}
fun commAlertDialogWidgetDeclare() {
dialog.alertBtnClose.setOnClickListener(this)
}
override fun onClick(v: View) {
if(v.id == R.id.alertBtnClose) {
dialog.dismiss()
}
}
}
3. MainAcitivity 코드 작성
- onStart 부분에서 리스너 선언 필요
- com.project.mykotlin > MainActivity
package com.project.mykotlin
import android.app.Activity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Button
import com.project.mykotlin.dialog.CommAlertDialog
import com.project.mykotlin.dialog.commConfirmDialog
class MainActivity : Activity(), View.OnClickListener {
var mainBtnA : Button? = null
var mainBtnC : Button? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
try {
mainBtnA = findViewById<Button>(R.id.mainBtnA)
mainBtnC = findViewById<Button>(R.id.mainBtnC)
}catch(e: Exception) {
Log.e("TLOG", "onCreate 오류 확인 : " + e.toString())
}
}
fun OnClickListenerSetting() {
mainBtnA!!.setOnClickListener(this)
mainBtnC!!.setOnClickListener(this)
}
override fun onClick(v: View) {
try {
if(v.id == R.id.mainBtnA) {
Log.e("TLOG", "클릭 테스트!!")
}else if(v.id == R.id.mainBtnC) {
openAlertDialog()
}
}catch(e : Exception) {
Log.e("TLOG", "onClick 오류 확인 : " + e.toString())
}
}
fun openAlertDialog() {
try {
var mCommAlertDialog = CommAlertDialog(this);
mCommAlertDialog.CommAlertDg()
}catch(e : Exception) {
Log.e("TLOG", "openAlertDialog 오류 확인 : " + e.toString())
}
}
override fun onStart() {
super.onStart()
OnClickListenerSetting()
}
}
4. 실행 확인
'안드로이드 > 안드로이드_Kotlin' 카테고리의 다른 글
01. 안드로이드_Kotlin : 버튼 클릭 이벤트 (0) | 2022.04.25 |
---|