안드로이드 9

[android] Disable ActionBar show/hide animation

Single Activity 구조로 UI 설계를 하기 위해서는 Navigation을 이용하여 모든 화면 단위를 Fragment로 개발을 한다. 혹시 특정 Fragment에서 ActionBar를 숨겨야 할 때가 있다면 supportActionBar의 show(), hide() 함수를 이용하면 된다. 하지만 한가지 거슬리는건 show/hide 될 때 애니메이션이 나오는데, 그게 보기 싫다면 setShowHideAnimationEnabled(false) 를 호출하여 해결할 수 있다. @SuppressLint("RestrictedApi") override fun onStart() { super.onStart() val supportActionBar = (requireActivity() as AppCompatAc..

Mac OS에서 안드로이드 휴대폰 화면 미러링하기

요즘들어 시기가 시기인만큼 화상 회의가 많아져서 현재 개발진행 상황을 공유해야 할 때가 많다. 안드로이드 개발자인 나는 에뮬레이터 보다 실제 디바이스를 연결하여 작업을 하기 때문에 화상 회의를 할때면 항상 화면을 미러링해야 하는데 미러링 툴이 많이 있지만 나는 scrcpy 프로그램을 설치하여 사용하고 있다. brew가 설치되어 있다고 가정하고, 터미널에서 아래 명령어를 친다. (설치가 생각보다 오래걸린다) $ brew install scrcpy 안드로이드 개발자라면 당연히 android SDK가 설치되어 있을거라 생각되지만, 혹시라도 그렇지 않다면 android-platform-tools를 설치한다. (직접 확인은 안해보았음) $ brew install android-platform-tools 디바이스의..

프로그래밍/etc 2022.01.15

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] android EncryptedSharedPreferences example

전화번호나 비밀번호 등 민감한 개인정보를 로컬에 저장하기 위해서는 상용화 되어 있는 AES256이나 MD5같은 암호화 알고리즘 함수를 사용하여 SharedPreferences로 저장하거나 sqlite 또는 realm 등 로컬 db에 저장하고 꺼내오면서 사용을 했었다. 하지만 이제 그럴 필요없이 "암호화 + SharedPreferences 저장"을 한방에 해결할 수 있는 방법이 제공되었다.(제공된지 좀 되긴 했지만 ...) developer android의 내용을 먼저 읽어보길 바란다. EncryptedSharedPreferences | Android 개발자 | Android Developers EncryptedSharedPreferences public final class EncryptedSharedP..

[kotlin] 안드로이드 코틀린 두 날짜 차이 계산

'현재 지금 시각'을 기준으로 날짜 차이를 계산하는 방법이다. 예를 들어 지금 시각 today값이 2020-06-16 13:11:10 일때, 1. sampleDate값이 2020-06-14 10:12:14 라면 "2일 차이남!!" 2. sampleDate값이 2020-06-14 15:12:14 라면 "1일 차이남!!" var sampleDate = "2020-06-14 10:12:14" var sf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss") var date = sf.parse(sampleDate) var today = Calendar.getInstance() var calcuDate = (today.time.time - date.time) / (60 * 60 * 24 * ..