일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드
- 인텐트란?
- location System
- 다이얼로그 프래그먼트
- Android
- programmers
- 뷰바인딩
- 프로그래머스
- dialog fragment
- 레트로핏 MVVM
- Retrofit Kotlin
- ScrollView Child View Height Programmatically
- java
- NestedScrollView
- viewBinding
- 위치정보확인
- 리사이클러뷰
- dialog resize
- DataBinding
- 쉐어드
- 레트로핏2
- 레트로핏 코틀린
- ScrollView with ConstraintLayout
- lifecycleScope
- 스크롤뷰 자식 뷰 높이 동적조절
- Retrofit with MVVM
- dialogfragment singleton
- recyclerview
- 데이터바인딩
- 다이얼로그 크기조절
- Today
- Total
목록안드로이드(Android)/코틀린(Kotlin) (21)
안드로이드 세계
스낵바를 이용하다 보면 버튼이 화면 제일 하단에 위치하는데, 스낵바도 아래에 위치하게 되면 겹치게 된다. 예시 화면 위의 예시 화면처럼 스낵바가 출력되게 된다면 아래에 있는 버튼은 누를 수가 없다. 따라서 버튼 위에 나타나게 하고 싶다면 아래와 같이 작성하면 된다. 예시 화면 예시 코드 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) findViewById(R.id.btn_short).setOnClickListener { createSnackBar("m..
스낵바를 이용하다 보면 텍스트와 버튼으로 이루어진 레이아웃이 아닌 다른 형식의 레이아웃을 이용하고 싶을 때가 있다. 이미지, 텍스트, 버튼으로 이루어진 커스텀 레이아웃을 적용하는 방법은 다음과 같다. 예시 코드 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) findViewById(R.id.btn_short).setOnClickListener { createSnackBar("message_short", Snackbar.LENGTH_SHORT).show(..
개요 사용자가 응답할 때까지 기다릴 필요 없이 앱에서 간단한 메시지를 표시하도록 하는 경우에 사용합니다. 팝업 메세지로는 Toast와 SnackBar가 있는데, SnackBar가 Toast를 대체하고 있습니다. Android 12 (API 31) 이상을 타겟팅한다면 Toast는 다음과 같은 제약사항이 생깁니다. 텍스트가 두줄로 제한됩니다. 텍스트옆에 어플리케이션 아이콘이 표시됩니다. SnackBar에는 사용자가 실행할 수 있는 옵션이 포함되어 있습니다. BackGround에서는 알림(Notification)을 이용하고, ForeGround에서는 SnackBar를 이용하는 것이 좋습니다. CoordinatorLayout CoordinatorLayout을 이용하면 다음과 같은 기능이 추가됩니다. SnackB..
다이얼로그 프래그먼트에서 아무생각없이 일반 프래그먼트와 동일하게 lifecycleScope를 이용했었더니 다음과 같은 문제가 발생하였다. 이 현상은 싱글톤으로 다이얼로그 프래그먼트를 생성하게되면 나타나는 문제이다. @AndroidEntryPoint class TestDialogFragment : DialogFragment() { ... init { lifecycleScope.launch { whenResumed { //초기세팅 } whenCreated { //초기 값 세팅 } } } } di(hilt)를 이용해 다이얼로그를 싱글톤으로 생성해주는데, 첫 1회는 해당 lifecycleScope는 잘 동작하지만, 두번째 부터는 해당구문은 타지않는다. 이 문제를 해결하기위해서는 init에서 설정할 것이 아닌 o..
새로운 프로젝트를만들고 빌드를하게되면 간혈적으로(원인을 아직모르겠음) 발생하는 에러인데.. 다음과같이 나오게된다. 해당에러 해결법은 간단한데, 다음과같다. 1. gradle.properties를 연다. 2. android.enableJetifier=true 를 추가해준다. 2의 역할은 third party 라이브러리들을 androidx로 변환해준다는 의미이다.
Data Class는 데이터 보관 목적으로 만들어진 클래스인데, 일반 Class와 달리 toString(), copy(), hashCode(), equals()를 자동으로 구현해줍니다. 따라서 boilerplate Code를 줄여주는 장점이있습니다. data class User(val userId: String, val userName: String) class NormalClassUser(val userId: String, val userName: String) val user = User("user1", "ryan") val user2 = user.copy() val normalUser = NormalClassUser("user2", "ryan2") val normalUser2 = normalUser..
AlarmManager처럼 특정시간을 세팅해준다면 아주편하게 사용할 수 있겠지만, WorkManager는 불가능하다. 따라서 딜레이주는 방식으로 세팅을해주어야하는데, 특정시간을 지정해주는 알고리즘은 다음과같다. fun getCertainTime(): Long{ val currentDate = Calendar.getInstance() val dueDate = Calendar.getInstance().apply { set(Calendar.HOUR_OF_DAY, 2) set(Calendar.MINUTE, 20) set(Calendar.SECOND, 0) } if (dueDate.before(currentDate)) dueDate.add(Calendar.HOUR_OF_DAY, 24) return dueDate...
백그라운드에서 작업을 실행하면 RAM 및 배터리와 같은 제한된 리소스가 소모됩니다. 따라서, 배터리 수명을 개선하고 더 나은 사용자 경험을 제공하기 위해 백그라운드 실행에 대한 제한을 설정합니다. 잠자기 및 앱 대기 화면이 꺼져있고, 기기가 유휴 상태이고 충전중이 아닌 경우 백그라운드 위치제한 백그라운드 앱이 사용자의 현재 위치를 검색할 수 있는 빈도를 제한 백그라운드 서비스 제한 백그라운드 서비스가 실행되고 숨겨지거나 보이지 않는 방식으로 소비하지 못하도록 제한 응용프로그램 제한 개요 지연 가능한 비동기 작업을 쉽게 예약할 수 있는 API 작업을 즉시 실행할 필요가 없는 경우 분석 데이터를 서버로 보내는 경우, 백그라운드에서 데이터베이스 동기화 작업 등등.. 보장된 실행을 제공 앱이 종료되거나 기기가 ..