일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코틀린
- lifecycle
- 알림
- BOJ
- Navigation
- ViewModel
- CollapsingToolbarLayout
- activity
- onMeasure
- 알고리즘
- Behavior
- sqlite
- View
- notification
- CustomView
- recyclerview
- Algorithm
- DataBinding
- Android
- CoordinatorLayout
- room
- AppBarLayout
- hilt
- 백준
- Coroutine
- onLayout
- 안드로이드
- kotlin
- HTTP
- LiveData
- Today
- Total
목록Android (111)
개발일지
안드로이드에서 뷰에 표시할 내용이 많을 때 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())
Glide Android에서 Image를 빠르게 불러오기 위한 라이브러리다. 기본적으로 이미지, GIF를 불러올 수 있고, 에러처리, 디스크 캐쉬등 다양한 기능을 제공한다. Glide의 원칙은 어떠한 이미지도 빠르고 부드럽게 불러오는 것을 목표로 한다. Dependency ext { glide_version = "4.12.0" } dependencies { // Glide implementation "com.github.bumptech.glide:glide:$glide_version" annotationProcessor "com.github.bumptech.glide:compiler:$glide_version" } github.com/bumptech/glidebumptech.github.io/glide/..
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 = ..