본문 바로가기

분류 전체보기

(129)
[Android / Kotlin] DataBinding을 사용해 뷰와 데이터를 연결해주기 뷰를 데이터를 연결하는 과정 1. 데이터 클래스를 만든다. data class MyName(var name: String = "", var nickname: String = "") 2. 레이아웃 태그 안에 data 태그를 만들고, 을 정의한다. name은 데이터를 layout xml 파일에서 view에 연결할 때 사용된다. type은 1번에서 만든 데이터 클래스를 사용한다는 의미이다. 3. MainActivity에서 data class의 객체를 만든다. private val myName: MyName = MyName("Seung") 4. 바인딩 오브젝트에 1번에서 만든 data class의 객체로 설정한다. binding.myName = myName 5. XML 파일에서 뷰의 텍스트를 에서 정의한 nam..
[Android / Kotlin] DataBinding을 사용해 findViewById()를 대체하기 데이터 바인딩을 사용해 findViewById()을 대체하는 과정 1. build.gradle 파일의 안드로이드 섹션에 data binding을 가능하게 한다. buildFeatures { dataBinding true } 2. XML layout 파일에 태그를 root view로 선언한다. '''''' 3. MainActivity에 바인딩 변수를 선언한다. private lateinit var binding: ActivityMainBinding 4. 바인딩 객체를 만들고, 기존의 setContentView를 대체한다. binding = DataBindingUtil.setContentView(this, R.layout.activity_main) 5. findViewById()를 바인딩 객체로 대체한다. ..
안드로이드에서 Data Binding을 왜 사용할까? Data Binding을 왜 쓰는가? 앱의 한 Activity에 View 계층 구조가 복잡한 경우 findViewById()는 비용이 많이 들고 앱 속도가 느려지는데, 안드로이드는 원하는 View를 찾을 때까지 루트부터 보기 계층을 통과하기 때문이다. 이에 대한 해결책으로 각 View에 대한 참조가 포함된 객체를 만드는 것이다. Binding 오브젝트라고 불리는 이 오브젝트는 앱 전체가 사용할 수 있다. 이 기술을 데이터 바인딩이라고 한다. 앱에 대한 바인딩 개체가 생성되면 뷰 계층을 통과하거나 데이터를 검색할 필요 없이 바인딩 개체를 통해 View 및 기타 데이터에 액세스할 수 있다. Data Binding의 이점 코드가 짧아지고 읽기 쉬워진다. findByView()를 사용하는 것보다 유지, 보수하기..
ConstraintLayout 이해, 정복하기 목표 ConstraintLayout, Constraint, Chain, Constraint 삭제 방법, Baseline constraint 등에 대해서 알아봅시다! ConstraintLayout 무엇? 유연한 방식으로 자식뷰의 위치, 크기를 조정할 수 있는 뷰 그룹이다. ConstraintLayout에 있는 각각의 뷰들의 위치는 적어도 하나의 수평과 수직 제약을 사용해 정해진다. 하나의 제약은 한 뷰를 다른 UI 요소, 부모 레이아웃, 보이지 않는 기준선에 연결하거나 나란히 한다. ConstraintLayout을 사용함으로써 얻는 이점 스크린 사이즈나 해상도가 다양한 기기에 반응해 레이아웃을 만들 수 있다. LinearLayout보다 평평한 뷰 위계를(a flatter view hierarchy) 결과로..
Android Notification Example (+Channel) 안드로이드의 경우 8버전(오레오, API 26) 이후에는 알림 기능을 위해서는 알림에 대한 Channel을 설정해야 한다. 알림의 구현 과정 1. 알림 Channel을 만든다. (앱 설정에 UI에서는 Category라고 나온다.) 2. 알림을 설정하고 사용자에게 알림을 보낸다. 알림 구현 코드 1. 알림 Channel을 만든다. NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // 오레오 버전 이상인 경우에 알림 채널을 만든다. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // 채널 아이디, 이름, 중요..
모서리가 둥근 ImageView, Button, TextView 만들기 뷰의 모서리를 둥그렇게 만드는 방법 2가지는 1. 둥그런 효과를 주는 xml을 만들어 뷰의 background 속성에 넣는다. 2. CardView를 사용한다. 버튼이랑, 텍스트 뷰의 경우 1번으로도 충분히 위 이미지 같이 모서리가 둥그래진다. 하지만 이미지 뷰의 경우 메인 이미지 때문에 백그라운드 속성이 적용이 안돼 모서리가 직각으로 나온다. 그래서 이미지뷰의 경우 카드뷰를 사용해 둥그런 효과를 준다. 1. 둥그런 효과를 주는 xml을 만들어 뷰의 background 속성에 넣는다. (버튼, 텍스트뷰) - activity_main.xml - round.xml Radius 속성을 통해 원하는 모서리만 둥그렇게 만들 수 있다. 2. CardView를 사용한다. implementation 'com.andro..
[RecyclerView]Header와 Footer를 가진 리사이클러뷰 리사이클러뷰에 헤더와 푸터를 달아서 보여주는 리스트가 무엇을 의미하는지 알 수 있습니다. 리사이클러뷰에서는 헤더와 푸터를 적용하는 방법은 RecyclerView.Adapter의 getItemViewType 함수를 사용하면 됩니다. 리사이클러뷰는 헤더와 푸터를 각각 하나의 아이템으로 생각하기 때문에 getItemViewType 함수를 통해 보여줄 뷰가 아이템인지, 헤더, 푸터 인지에 따라 다르게 작업을 하면 됩니다. 즉 뷰홀더 레이아웃은 총 3개(아이템, 헤더, 푸터)가 필요합니다. 필요한 코드는 다음과 같습니다. - MainActivity.java public class MainActivity extends AppCompatActivity { RecyclerView recyclerView; ArrayLi..
[안드로이드/Android] 플레이스토어 앱 강제로 업데이트하기 출시한 앱의 경우 업데이트가 됐을 때 사용자에게 업데이트를 하라고 알려줘야 한다. 안드로이드에서는 AppUpdateManager 객체를 제공한다. 업데이트 요청 방식은 '즉시' , '유연' 으로 총 두 가지 방식이 있다. '유연' 요청은 앱 백그라운드에서 업데이트를 받는 방식이다. 한 마디로 앱을 업데이트하면서 앱을 사용할 수 있게 하는 방식이다. '즉시' 요청은 사용자가 앱을 업데이트하고 다시 시작해야 하는 전체 화면 사용자 환경입니다. 즉 앱 업데이트를 해야 앱을 사용할 수 있는 것이다. 이 포스팅에서는 '즉시' 업데이트에 대해서 알아볼 것이다. 필요사항 1. 업데이트는 Android 5.0(API 수준 21) 이상을 실행하는 기기에서만 작동하며, 2. Play Core 라이브러리 1.5.0 이상 사..