일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 리사이클러뷰
- viewBinding
- Retrofit Kotlin
- lifecycleScope
- 레트로핏 MVVM
- ScrollView with ConstraintLayout
- dialogfragment singleton
- dialog fragment
- 레트로핏2
- 위치정보확인
- Retrofit with MVVM
- NestedScrollView
- recyclerview
- 쉐어드
- programmers
- java
- ScrollView Child View Height Programmatically
- 레트로핏 코틀린
- 뷰바인딩
- Android
- 안드로이드
- 다이얼로그 크기조절
- 데이터바인딩
- dialog resize
- 다이얼로그 프래그먼트
- DataBinding
- 스크롤뷰 자식 뷰 높이 동적조절
- 인텐트란?
- 프로그래머스
- Today
- Total
목록분류 전체보기 (38)
안드로이드 세계
기본적으로 코틀린은 모든 클래스, 변수들은 public으로 선언됩니다. // 두가지는 동일한 내용 public val a = "이것" val a = "이것" public class A{ ... } class A{ ... } 접근 제한자에 대한 설명은 아래와 같습니다. public : Top Level 선언이 가능하며, 모든곳에서 접근이 가능합니다. private : Top Level 선언이 가능하며, 같은 코틀린 파일내에서만 접근 가능합니다. internal : Top Level 선언이 가능하며, 같은 모듈내에서만 접근 가능합니다. 따라서 해당 접근자를 통하여 모듈화를 쉽게 할 수 있습니다. ※ 접근 시, 변수 또는 메소드는 internal 또는 private 접근 제한자를 가져야합니다. (모듈 내에서만..
스낵바를 이용하다 보면 버튼이 화면 제일 하단에 위치하는데, 스낵바도 아래에 위치하게 되면 겹치게 된다. 예시 화면 위의 예시 화면처럼 스낵바가 출력되게 된다면 아래에 있는 버튼은 누를 수가 없다. 따라서 버튼 위에 나타나게 하고 싶다면 아래와 같이 작성하면 된다. 예시 화면 예시 코드 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...