일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Navigation
- kotlin
- CollapsingToolbarLayout
- recyclerview
- DataBinding
- sqlite
- 코틀린
- lifecycle
- room
- 안드로이드
- Algorithm
- 백준
- CoordinatorLayout
- ViewModel
- LiveData
- hilt
- onMeasure
- onLayout
- View
- Behavior
- notification
- BOJ
- Android
- AppBarLayout
- CustomView
- activity
- HTTP
- 알림
- 알고리즘
- Coroutine
- Today
- Total
목록안드로이드 (95)
개발일지
CollapsingToolbarLayout은 app:title속성을 지정하지 않으면 toolbar에 설정된 title을 가져온다. => Toolbar의 height를 wrap_content로 하면 못가져옴 => ?attr/actionBarSize로 바꾼다.
안드로이드에서 뷰에 표시할 내용이 많을 때 Scroll View를 사용해서 해결할 수 있다. 하지만 Scroll View를 사용하면 자식 뷰를 하나만 가질 수 있고, 자식 뷰는 wrap_content속성을 사용해야 한다. 하지만 wrap_content를 사용하면 뷰들이 화면을 꽉 채우지 못했을 때 빈 공간이 생긴다. Scroll View에 fillViewport를 추가하자!!!
권한설정 Oreo이상에서 ForegroundService는 권한이 필요하다. startForeground startForeground에서 id값은 0이면 안된다. 오류 startForeground(0, NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID).build()) 해결 startForeground(1, NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID).build())
CalendarView 달력 위젯으로 setOnDateChangeListener를 설정하여 날짜를 선택할 때 이벤트를 발생시킬 수 있다 CalendarFragment.kt class CalendarFragment : BaseFragment(R.layout.fragment_calendar) { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { super.onCreateView(inflater, container, savedInstanceState) binding.fragment = this binding.calendar.setOnDateChangeListe..
안드로이드는 기본적으로 싱글 쓰레드이다. 그렇기 때문에 메인 쓰레드에서 처리 시간이 긴 명령(데이터 베이스, 네트워크 등)을 작성하면 버벅거린다. 따라서 처리 시간이 긴 명령은 서브 쓰레드를 만들어서 처리하는게 이상적이다. 하지만 멀티 쓰레드 환경에서 나오는 여러가지 이슈 때문에 안드로이드는 UI를 메인 쓰레드에서 밖에 바꾸지 못한다. 따라서 서브 쓰레드에서 UI를 변경하려면 Handler 객체를 이용하여 메인 쓰레드와 통신해야 한다. 핸들러는 메시지뿐만 아니라 Runnable을 전달할 수 있다. Handler 핸들러는 루퍼에 의존적입니다. 핸들러를 생성하면 루퍼를 연결해야 합니다. 핸들러를 생성할 때 생성자로 루퍼를 전달하여 다른 쓰레드의 루퍼를 연결할 수 있고, 아무것도 전달하지 않으면 핸들러를 생성..
onCreate 이 콜백은 시스템이 먼저 활동을 생성할 때 실행되는 것으로, 필수적으로 구현해야 합니다. 활동이 생성되면 생성됨 상태가 됩니다. onCreate() 메서드에서 활동의 전체 수명 주기 동안 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행합니다. 예를 들어 onCreate()를 구현하면 데이터를 목록에 바인딩하고, 활동을 ViewModel과 연결하고, 일부 클래스 범위 변수를 인스턴스화할 수도 있습니다. 이 메서드는 savedInstanceState 매개변수를 수신하는데, 이는 활동의 이전 저장 상태가 포함된 Bundle 객체입니다. 이번에 처음 생성된 활동인 경우 Bundle 객체의 값은 null입니다. Activity가 생성될 때 실행된다. Lifecycle에서 한번밖에 실행되..
채널 만들기 Android O 이상에서 Notification을 생성하기 위해서는 Notification Channel을 만들어야 한다. if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val NOTIFICATION_CHANNEL_ID = "id" val NOTIFICATION_CHANNEL_NAME = "name" val NOTIFICATION_IMPORTANCE = NotificationManager.IMPORTANCE_DEFAULT val channel = NotificationChannel(NOTIFICATION_CHANNEL_ID, NOTIFICATION_CHANNEL_NAME, NOTIFICATION_IMPORTANCE) val manager = ..