대화 상자 - AlertDialog
문자열 메시지 뿐 아니라 타이틀 바나 아이콘 출력이 가능하고 사용자의 입력도 받을 수 있습니다.
생성은 생성자를 이용하지 않고 Builder 라는 내부 클래스를 이용
Builder 에 Context 를 대입해서 생성을 하고 setMessage, SetTiltle, setIcon 등의 메소드로 대화상자를 설정 하고 show 호출 하면 출력
대화 상자에 버튼을 추가할 수 있습니다.
setPositiveButton, setNeutralButton, setNegativeButton 메소드를 이용해서 추가
매개 변수는 첫번째는 버튼의 타이틀이고 두번째는 버튼을 눌렀을 때 이벤트 처리를 위한 DialogInterface.OnClickListener 입니다.
기본적으로 버튼을 누르면 대화 상자는 닫힙니다.
대화상자는 back 버튼을 누르면 닫히도록 되어있습니다.
이 기능을 없애고자 할 때는 setCancelable(false) 로 설정하면 됩니다.
import android.content.Context
import android.media.MediaPlayer
import android.media.Ringtone
import android.media.RingtoneManager
import android.net.Uri
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.VibrationEffect
import android.os.Vibrator
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn1.setOnClickListener(View.OnClickListener {
// 진동 객체를 생성
val vib = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
// 누가 버전 이후
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.N_MR1) {
vib.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE))
} else {
vib.vibrate(1000)
}
})
btn2.setOnClickListener(View.OnClickListener {
// 시스템 사운드 재생
val notification: Uri = RingtoneManager.getDefaultUri(
RingtoneManager.TYPE_ALARM)
val ringtone = RingtoneManager.getRingtone(this, notification)
ringtone.play()
})
btn3.setOnClickListener(View.OnClickListener {
val player:MediaPlayer
= MediaPlayer.create(this, R.raw.buttoneffect)
player.start()
})
btn4.setOnClickListener(View.OnClickListener {
AlertDialog.Builder(this)
.setTitle("대화 상자")
.setMessage("대화 상자에 메시지 출력")
.setIcon(R.drawable.ic_launcher_foreground)
.setPositiveButton("토스트 출력", {dialog, whichButton ->
Toast.makeText(
this@MainActivity, "작업종료",
Toast.LENGTH_LONG).show()
})
.setNegativeButton("닫기", null)
.show()
})
}
}
'안드로이드' 카테고리의 다른 글
안드로이드 (0) | 2020.10.29 |
---|---|
안드로이드 : 목록 대화 상자 (0) | 2020.10.28 |
안드로이드 : 진동과 사운드 (0) | 2020.10.28 |
안드로이드 : 버전 별 다른 코드 작성 (0) | 2020.10.27 |
안드로이드 : GUI 시스템에서 UI 갱신과 Logcat (0) | 2020.10.27 |