UITabBarController를 사용하는데 특정 조건에서 특정 탭이 클릭은 되지만, 페이지가 넘어가지 않고 다른 액션을 실행하고 싶을때가 있다. 이때는 UITabBarControllerDelegate 의 func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool 를 이용해 제어가 가능하다. 먼저 MainTabBarController 클래스를 생성하고 아래와 같이 코드를 작성한다. MainTabBarController.swift import Foundation import UIKit class MainTabBarController: UITabBarCont..
예를 들어 디버그와 릴리즈시 코드상에 분기를 태워 각각 다른 값을 사용할수도 있고, 다른 방법으로 Build.gradle(app) 에서 사용하는 방법도 있다. gradle 에 값을 추가하고 가져오는 방법에는 두가지 정도가 있는데, 한가지는 BuildConfig 에서 가져오는 방법과 res 에서 가져오는 방법이 있다. 선언 방식 android { ... buildTypes { release { // These values are defined only for the release build, which // is typically used for full builds and continuous builds. buildConfigField("String", "BUILD_TIME_01", "\"릴리즈 맞춤형 ..
Android 에서 리시버에 android:process=":remote" 를 추가 하면 별도의 프로세스에서 실행을 하게되는데, onReceive()를 동작 시키면서도 어플리케이션의 메인쓰레드를 멈추지 않게 된다. 따라서 어플리케이션은 종료 해야하는데 서비스는 계속 동작하고 싶게 만들고 싶을때 사용하면 된다. 하지만 문제는 리소스의 사용량 증가와, Singleton 및 static 변수를 별도의 프로세스에서는 접근이 불가능 하게 된다. ex) SharedPreferences 도 공유 사용이 불가능 하다. 게다가 android:process=":remote" 와 동일한 기능 구현은 다른 방법으로도 가능하므로 특별한 경우가 아니면 신중하게 사용해야 한다.
Android suppport Library 28 로 업데이트후에 FloatingActionButton 안의 이미지가 Center를 벗어나서 그려지는 현상이 보였다. 찾아보니 버그라는데, 이것 저것 해보니 해결 방법은 두가지가 있다. 1. FloatingActionButton xml을 layout_width layout_height 56dp 로 설정 (이부분 변경이 필요할시 2번 방법을 쓰면 작동이 되었다.) 2. code 추가 fab.scaleType = ImageView.ScaleType.CENTER
BottomNavigationView 를 사용할때 버튼이 4개 이상 늘어나면 버튼의 이름 들이 선택 할 때만 보이게 된다. 이럴때는 아래의 옵션 xml 에서 BottomNavigationView 에 아래의 옵션을 추가 하여 BottomNavigationView의 이름 보기 방식을 변경할수 있다. app:labelVisibilityMode="labeled" 총 4개의 옵션이 있는데, 하나씩 설명해 보면 1. auto 3 개 이하의 항목이있는 경우 레이블은 "레이블"으로 동작하거나 4 개 이상의 항목이 있으면 "선택된"레이블로 동작합니다. 즉 3개 이하의 메뉴일때는 이름이 그대로 보이고, 그 이상 일때는 선택된 버튼만 이름이 보인다. 2. labeled 모든 항목의 이름이 전부 노출된다. 3. unlabel..