분류 전체보기
-
SharedPreferencesAndroid 2024. 5. 1. 21:27
gif 파일 용량이 커서 압축해보려하는데 40분째 방법을 찾았지만, 해결이 안돼서 일단 업로드를 못하게 되었다.이유를 모르겠는게 두 gif 파일 모두 영상 길이가 비슷한데 저번에 찍은건 4MB인데, 이번엔 20MB를 넘어간다.왜그러지? 모르겠다... 당장 해결하기는 힘들어서 이 부분은 스킵한다. 앱에 어떤 데이터를 입력한 상태에서 앱을 종료하게 되었을때, 해당 데이터가 남아있으려면 어떻게 해야할까?이때 필요한 개념이 sharedpreferences 이다.일단 예제 코드를 한번 봐보자.override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding...
-
알림(Notification)Android 2024. 4. 30. 14:58
오늘은 알림을 보내는 기능에 대한 코드를 포스팅 해보려고 한다.1. 매니저, 빌더, 채널 생성우선은 매니저와 빌더를 만들고 나서, Android 8.0 이상인 경우에는 채널을 따로 만들어야 한다.채널을 생성할 때 아이디, 이름, 중요도 등을 넣고, 설명이나 배지를 달아준다. uri와 audio도 생성해서 setSound에 해당 변수들을 넣어준다. 그리고 생성한 채널을 매니저에 등록하면 된다.마지막에는 빌더에다가 context와 channelId(채널을 만든 경우)을 매개변수로 넣어주고 생성한다.fun notification() { val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager val buil..
-
Multi View Type RecyclerViewAndroid 2024. 4. 29. 21:10
오늘은 recyclerView 중 viewtype이 한개가 아닌 여러개인 multi viewtype recyclerView 에 대해서 핵심 개념과 코드를 포스팅 하려고 한다. 위의 gif 를 보면 카드에 색깔이 3개이다. 색깔을 기준으로 viewtype을 나누려고 한다.// Card.kt@Parcelizedata class Card( .. val cardViewType: MultiViewEnum):Parcelable viewtype 을 다르게 받아오기 위해서는 data class 에서 viewtype 을 지정할 수 있는 변수를 선언을 해야한다.// MultiViewEnum.ktenum class MultiViewEnum(val viewType: Int) { BLUE(0), LIGHT..
-
다이얼로그Android 2024. 4. 25. 11:58
기본 다이얼로그커스텀 다이얼로그 이외에 시간 다이얼로그, 프로그래스바 다이얼로그도 있지만 이 경우는 특수하게 쓰이는 경우이고 자주 쓰이는 위의 두 가지를 오늘 집중적으로 포스팅 하려고 한다. (나중에 시간이 여유되면 다른 다이얼로그 내용도 추가할 예정이다!) 기본 다이얼로그// DialogActivity.kt , 해당 코드는 버튼 이벤트 발생 내부 코드에 위치시키면 적절하다.var builder = AlertDialog.Builder(this@DialogActivity)builder.setTitle("저는 다이얼로그 제목입니다.")builder.setMessage("저는 기본 다이얼로그를 출력하는 메세지입니다!")builder.setIcon(R.drawable.ic_heart) 일단은 다이얼로그를 사용하..
-
프래그먼트 생명주기Android 2024. 4. 24. 10:12
프래그먼트의 생명주기를 이해하는 것은 안드로이드 앱을 효율적으로 관리하고, 사용자에게 부드러운 인터페이스 경험을 제공하는 데 중요하다. 프래그먼트는 액티비티처럼 동작하는 뷰이다. 따라서 프래그먼트도 액티비티와 생명주기가 유사하다.예를 들어, 액티비티의 onStart() 함수가 호출되는 순간 해당 액티비티가 출력하는 프래그먼트의 onStart() 함수도 호출된다. 프래그먼트의 생명주기는 크게 5단계로 나눈다.초기화(initialized) : 프래그먼트가 FragmentManager에 추가됨. 프래그먼트의 화면을 구성할 뷰가 준비되지 않은 상태생성(created) : 프래그먼트의 화면을 구성할 뷰를 준비한다.시작(started) : 프래그먼트의 화면이 사용자에게 보인다.재개(resumed) : 사용자가 프..
-
개인 과제 트러블 슈팅(프래그먼트 트랜잭션)Android 2024. 4. 22. 21:05
해결 코드 전 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) setFragment(SearchFragment()) // fragment 방식을 replace 와 add 비교해서 다음엔 add 적용해보기 binding.apply { btnSearch.setOnClickListener { setFragment(SearchFragment()) } btnStore.setOnClickListener { ..
-
Fragment 3가지 데이터 전달 방식Android 2024. 4. 19. 21:01
1. Activity → Fragment// MainActivity.ktfragment1Btn.setOnClickListener { // Activity -> Fragment 데이터 전달 val dataToSend = "Hello First Fragment! From Activity" val fragment = FirstFragment.newInstance(dataToSend) setFragment(fragment) } Activity에서 Fragment에 데이터를 보내기 위해서는 먼저 데이터를 정의해야 한다.이후 해당 프래그먼트의 싱글톤으로 정의된 newInstance함수의 매..
-
[Android] RecyclerViewAndroid 2024. 4. 15. 21:16
리사이클러뷰는 리스트뷰의 성능을 향상시키기 위해 나온 개념이다. 리사이클러뷰를 구현하기 위해선 아래가 필요하다. 메인 액티비티 코틀린 코드, xml 데이터 클래스 뷰홀더 xml 어댑터 클래스 메인 액티비티 xml 코드 // activity_main.xml recyclerView 위젯을 넣어주면 된다. 메인 액티비티 코틀린 코드, 데이터 클래스 일단, recyclerview 화면에 띄울 데이터를 정의해야한다. 데이터는 보통 한개의 값만 들어있지 않기 때문에 따로 data class를 생성하는 것이 좋다. // MyItem.kt data class MyItem(val icon:Int, val name:String, val age:String) // MainActivity.kt (onCreate() 내부) v..