Android 32

[android] DialogFragment keyEvent (키 이벤트 수신)

▣ 키 이벤트 수신 선언 private val keyEventListener = DialogInterface.OnKeyListener {_, keyCode, event -> if (keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_DOWN){ } true } ▣ 적용 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { dialog.setOnKeyListener(keyEventListener) return inflater.inflate(R.layout.yours, container, f..

android PIP 예제 샘플 구현. 생각보다 쉽네 ~

안드로이드 8.0 Oreo 부터 지원되는 PIP(picture-in-picture) 기능을 사용해야 할 일이 생겨서 검색 조금 해본 결과 생각보다 쉽다는 것을 알게 되었다. 권한을 따로 요청할 필요도 없이 PIP가 필요한 activity에 옵션만 넣어주면 끝. 굳이 이 포스팅을 보지 않아도 안드로이드 개발자 사이트에 다 나와 있다. https://developer.android.com/guide/topics/ui/picture-in-picture?hl=ko PIP 모드 지원 | Android 개발자 | Android Developers Android 8.0에서는 활동을 PIP 모드로 실행할 수 있습니다. developer.android.com ▣ 코드 확인 AndroidManifest.xml YourAc..

[android] 안드로이드 빠른 스플래시 처리 (#splash)

앱을 처음 켜면 잠시동안 하얗게 나오는 순간이 있다. 혹시라도 폰에 부하가 걸려서 조금이라도 버벅이면 하얀 화면이 꽤나 오랫동안 노출되기도 한다. 그러다가 스플래시는 보이지도 않고 화면이 바로 넘어갈 때도 가끔 있다. 대부분 SplashActivity의 onCreate()안에 setContentView(R.layout.activity_splash)를 넣을 경우 이런 현상이 발생하게 되는데, AndroidManifest에 style을 적용하면 이 같은 현상을 방지할 수 있다. res/drawable/splash.xml styles.xml AndroidManifest.xml

[android] 강제 회전 시키기 #screenOrientation (portrait <---> landscape)

대부분의 앱은 세로모드(portrait)로 고정해서 개발을 하는데, 필요할 때 가로(landscape)로 전환해야 할 때가 있다. 폰의 회전에 따라서 자동으로 바뀌는 것이 아니라 회전과는 무관하게 그냥 가로모드/세로모드를 변경해야 할 때가 있다는 것이다. 1. 자동회전이 아닌, 강제로 가로/세로로 바꾸게 되면 onConfigurationChanged(newConfig: Configuration) 함수가 호출되지 않고 onCreate(savedInstanceState: Bundle?)로 진입되어 화면을 새롭게 그려야 한다. 그렇기 때문에 반드시 android:configChanges="orientation|screenSize" 를 지정해 주어야 한다. 2. 회전되었을 때 onConfigurationChan..

[android] 안드로이드 ImageView gif 적용하기 (feat. Glide)

안드로이드 앱을 만들때, gif를 출력하기 위해서는 라이브러리를 사용해야 한다. 그 중에서 쉽고 편한 Glide 라이브러리를 이용해보자. 1. res 디렉토리에 raw폴더를 추가하여 gif 파일을 넣는다. 즉, 'main/res/raw' 에 gif 파일 추가. 2. build.gradle(:app)에 glide 모듈 추가 implementation 'com.github.bumptech.glide:glide:4.11.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' 3. xml에는 별거 없이 그냥 ImageView를 선언 4. 코드 적용 Glide.with(this).load(R.raw.loading).override(200, 200)...

[kotlin] 특정 날짜가 속해있는 달에서 '특정 날짜와 같은 요일'의 날짜 구하기

특정 날짜가 속해있는 달에서 '특정 날짜와 같은 요일'의 날짜를 구하기 위한 함수이다. /** * 특정 날짜가 속해있는 달에서 특정 날짜와 같은 요일의 날짜 구하기 * @param eventDate ex) 2020-10-10 * */ fun day(eventDate: String){ val dateArray = eventDate.split("-").toTypedArray() val cal = Calendar.getInstance() cal[dateArray[0].toInt(), dateArray[1].toInt() - 1] = dateArray[2].toInt() // 요일 확인(일요일:1, 월요일:2, ... ,토요일:7) var dayOfWeek = cal.get(Calendar.DAY_OF_WEEK..

[kotlin] 특정 날짜가 속해있는 1주일간의 날짜 범위

특정 날짜가 속해있는 1주일간의 날짜 범위를 알아내기 위한 함수이다. /** * 특정 날짜의 같은 한 주간의 날짜 범위 * @param eventDate ex) 2020-10-10 * */ fun week(eventDate: String) { val dateArray = eventDate.split("-").toTypedArray() val cal = Calendar.getInstance() cal[dateArray[0].toInt(), dateArray[1].toInt() - 1] = dateArray[2].toInt() // 일주일의 첫날을 일요일로 지정한다 cal.firstDayOfWeek = Calendar.SUNDAY // 시작일과 특정날짜의 차이를 구한다 val dayOfWeek = cal[C..

android studio xml tab spacing

나는 안드로이드 xml을 아직도 코드로 작업하는 습관이 남아 있기에 layout을 깔끔하게 맞추는 걸 선호한다. New Project를 생성하면 tab spacing이 초기값으로 설정되는지 따닥따닥 붙어 있는게 보기 좋지 않다. 따라서 아래의 값으로 맞춰서 작업한다. Mac OS에서 Android Studio를 사용하는 경우에는 Preferences > Appearance & Behavior > Editor > Code Style > XML Tab size : 4 Indent : 4 Continuation indent : 8