안드로이드 76

[안드로이드/Android] 안드로이드 앱 아이콘 동적 변경하기

삼성 시계 앱을 보면 앱 아이콘에 현재 시간이 표시되고 계속해서 변경되는 것을 확인할 수 있습니다. 어떻게하면 이미 설치된 앱의 아이콘을 동적으로 변경할 수 있을까요? 안드로이드에서 제공하는 PackageManager 를 사용해 변경할 수 있습니다. 1. 먼저 기본 앱 아이콘, 변경할 앱 아이콘을 준비해주세요. 2. MainActivityAlias.kt 라는 클래스를 만들고 일반 액티비티처럼 AppCompatActivity를 상속해주세요. import androidx.appcompat.app.AppCompatActivity class MainActivityAlias: AppCompatActivity() { } 3. AndroidManefest.xml 에 아래 값을 추가해주세요. 태그를 추가해주시면 됩니다..

안드로이드 2023.02.16

[안드로이드/Android] local.properties 활용하기/변수저장하기

안드로이드에는 local.properties 라는 파일이 있습니다. 위치 파일을 열어 이미지 처럼 변수를 저장해주면 됩니다. buid.gradle 이나 settings.gradle 에서도 사용할 수 있습니다. 사용할 때는 아래 코드처럼 사용하면 됩니다. kotlin settings.gradle.kts 에서 외부 라이브러리 경로를 불러올 때 사용했습니다. // 호출 project(":externalLibrary").projectDir = File(getExternalModuleDir()) // 메서드 선언 fun getExternalModuleDir(): String { val properties = java.util.Properties() properties.load(File(rootDir.absolut..

안드로이드 2023.02.10

[안드로이드/Android] Android Photo Picker directions.

안드로이드에서 갤러리 이미지, 동영상을 별도 권한 없이 더욱 쉽게 가져올 수 있도록 Photo Picker 라는 녀석이 생겼습니다. API 30 이상에서, androidx.activity 버전 1.6.1이상에서 사용할 수 있습니다. // 싱글 이미지 또는 비디오 선택 private val pickMedia = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri -> if (uri != null) { Log.d("Photo Picker", "Selected URI: $uri") selectedImageView.setImageURI(uri) } else { Log.d("`Photo Picker", "No media select..

안드로이드 2023.02.07

[안드로이드/Android] resources.getIdentifier 사용법

안드로이드에서 문자열을 사용해 리소스를 불러와야하는 경우가 있습니다. 이런 경우, R.string.aaa, R.raw.aaa, R.drawable.aaa 처럼 사용할 수 없습니다. 대신해서 resources.getIdentifier(String name, String defType, String defPackage) 위 같은 함수를 제공합니다. 1. 문자열 불러올 때 resources.getIdentifier(string_resource_name, "string", mActivity.packageName) 2. 이미지 불러올 때 resources.getIdentifier(drawable_resource_name_without_extension, "drawable", mActivity.packageName..

안드로이드 2022.08.17

안드로이드 - 텍스트뷰 텍스트 사이즈 자동 조절 Autoscaleable textview

텍스트크기가 자동으로 조절되는 코드입니다. if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration( txtView, minTextSize, maxTextSize, autoSizeStepGranularity, TypedValue.COMPLEX_UNIT_SP ) } else { txtView.setAutoSizeTextTypeUniformWithConfiguration( minTextSize, maxTextSize, autoSizeStepGranularity, TypedValue.COMPLEX_UNIT_SP ) } 감사합니다.

안드로이드 2022.07.04

안드로이드 단위테스트 Espresso 토스트 메시지 띄우기

단위테스트에서 토스트 메시지 띄우는 방법입니다. @Rule @JvmField var mainActivityRule = ActivityScenarioRule(MainActivity::class.java) // 요렇게 먼저 시나리오를 룰을 만들텐데요. //그 다음 @Before 메소드에서나 @Test메소드 안에서 mainActivityRule.scenario.onActivity { Toast.makeText(it, "Test stared.", Toast.LENGTH_LONG ).show() } // 이렇게 사용하시면 됩니다.

안드로이드 2021.06.08

Hilt @ViewModelInject is Deprecated, use @HiltViewModel instead

import androidx.lifecycle.ViewModel import dagger.hilt.android.lifecycle.HiltViewModel import kr.rowan.superbrain_b2b.network.HttpService import javax.inject.Inject @HiltViewModel class HashCodeViewModel @Inject constructor( private val apiService: HttpService ): ViewModel() { fun getHashCode(): String { return apiService.hashCode().toString() } } Hilt 의 @ViewModelInject는 Deprecated 되었습니다. 대신에 @..

안드로이드 2021.05.04

안드로이드 Version R 에서 몰입모드(Navigation bar, Status bar 가리기)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { window.setDecorFitsSystemWindows(false) window.insetsController!!.hide(WindowInsets.Type.statusBars() and WindowInsets.Type.navigationBars()) window.insetsController!!.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE } 많은 글에서 Bold 되어있는 거처럼 and로 나와 있는데, and 가 아닌 아래처럼 or로 해야 제대로 동작합니다. if (Build.VERSION.SDK_INT ..

안드로이드 2021.02.23