앱의 주요 기능을 구현하는 과정에서 사용한 코드와 기법을 설명합니다.
메모를 작성하고 저장하는 기능은 SharedPreferences를 활용하여 간단히 구현할 수 있습니다.
private fun saveNoteAndFinish() {
val title = titleEditText.text.toString().trim()
val body = bodyEditText.text.toString().trim()
if (title.isNotEmpty() || body.isNotEmpty()) {
val resultIntent = Intent()
resultIntent.putExtra("noteTitle", title)
resultIntent.putExtra("noteBody", body)
setResult(RESULT_OK, resultIntent)
} else {
Toast.makeText(this, "내용을 입력하세요.", Toast.LENGTH_SHORT).show()
}
finish()
}
메모가 수정 중일 때 뒤로가기를 눌렀을 때 확인 팝업을 띄워 저장 여부를 묻습니다.
override fun onBackPressed() {
AlertDialog.Builder(this)
.setTitle("저장되지 않았습니다")
.setMessage("저장하지 않고 나가시겠습니까?")
.setPositiveButton("확인") { _, _ ->
finish()
}
.setNegativeButton("취소", null)
.show()
}
메모에 굵게, 기울임, 밑줄 서식을 추가합니다.
private fun applyStyleToSelectedText(style: Any) {
val start = bodyEditText.selectionStart
val end = bodyEditText.selectionEnd
if (start < end) {
val spannableString = bodyEditText.text
spannableString.setSpan(style, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
bodyEditText.setText(spannableString)
bodyEditText.setSelection(start, end)
} else {
Toast.makeText(this, "텍스트를 선택해주세요.", Toast.LENGTH_SHORT).show()
}
}
앱 로딩 시 브랜드 이미지를 보여주는 스플래시 화면을 구현했습니다.
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
startActivity(Intent(this, MainActivity::class.java))
finish()
}
}
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/white" />
<item>
<bitmap
android:gravity="center"
android:src="@drawable/splash_screen" />
</item>
</layer-list>
메모 내용을 복사하거나 다른 앱으로 공유할 수 있습니다.
private fun shareNote() {
val title = titleEditText.text.toString()
val body = bodyEditText.text.toString()
val fullNote = "Title: $title\n\n$body"
val shareIntent = Intent().apply {
action = Intent.ACTION_SEND
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, fullNote)
}
startActivity(Intent.createChooser(shareIntent, "메모 공유"))
}
로또 번호 통계 및 번호 생성기 앱 개발: 기능 구현 정리 (0) | 2025.01.19 |
---|---|
CleverPad 앱 개발 이야기: 초보 개발자의 도전기 3 (0) | 2025.01.12 |
CleverPad 앱 개발 이야기: 초보 개발자의 도전기 1 (1) | 2025.01.12 |