분류 전체보기
-
[안드로이드] Serializable카테고리 없음 2024. 5. 7. 17:11
사용 이유직렬화 인터페이스로 객체를 바이트 스트림으로 변환 후액티비티간에 데이터를 공유하기 위해 사용합니다.장점상속 하나로 간편하게 사용할 수 있습니다. 단점Reflection을 사용하여 역/직렬화를 하므로 CPU와 메모리 자원을 많이 먹습니다.사용법// Serializable를 상속하는 클래스를 만듭니다.data class Person(name: String, age: Int) : Serializableclass MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layou..
-
[안드로이드] 구글 맵 API 이용하기카테고리 없음 2024. 5. 2. 21:36
사용법 1) Gradle 설정우선 Google Map API를 사용하기 위해션 Gradle에 라이브러리를 추가해야 합니다.dependencies { implementation("com.google.android.gms:play-services-maps:18.2.0") implementation("com.google.android.gms:play-services-location:21.2.0")} 2) AndroidManifest 설정아래처럼 인터넷과 위치를 불러올 수 있는 퍼미션을 추가해야 합니다.또한 application 안에 uses-library와 meta-data를 추가해줍니다. 로컬 파일에서 API를 가져오는 방법은 아래 게시글을 참조하면 됩니다.https://cosinea.tistor..
-
[안드로이드] API 키 관리하기카테고리 없음 2024. 5. 1. 18:15
우선 local.properties에 본인이 사용할 api key를 key=value 형식으로 적어준다.GOOGLE_MAP_API=API-KEY# 키가 인식이 안되면 쌍따옴표 붙여서 GOOGLE_MAP_API="API-KEY" build.gradle.kts에서 아래처럼 manifestPlaceholders에 properties에서 가져온 값을 등록해준다.val properties = Properties().apply { load(FileInputStream(rootProject.file("local.properties")))}android { defaultConfig { manifestPlaceholders["GOOGLE_MAP_API"] = properties["GOOGLE_MA..
-
[안드로이드] SharedPreferences카테고리 없음 2024. 5. 1. 14:20
사용 이유로컬에서만 사용할 데이터이거나 간단한 데이터의 경우 SharedPreferences를 사용하여 저장한다.저장 방식은 xml이며 key-value 쌍으로 저장된다.사용법기본적으로 Context 클래스에 있는 getSharedPreferences 함수를 사용합니다. getSharedPreferences 함수의 인자엔 파일 이름과 모드가 들어갑니다.이 함수로 데이터를 담고 있는 SharedPreferences를 얻어올 수 있습니다.val sharedPreferences = getSharedPreferences("TestData", MODE_PRIVATE) Mode설명MODE_PRIVATE해당 앱 내에서만 접근 가능MODE_WORLD_READABLE (deprecated)외부 앱에서 읽기 가능MODE_..
-
[Jetpack Compose] 상태 유지카테고리 없음 2024. 4. 30. 11:11
화면 상태 유지컴포저블 단위에서 상태를 기억하기 위해 remember를 사용한다.remember 함수는 컴포저블이 컴포지션에 유지되는 동안에만 작동한다.기기를 회전하거나 구성이 변경되거나 프로세스가 중단될 때 등등 손실되는 경우가 많다. 이를 방지하기 위해 remember 함수 대신 rememberSaveable을 사용하면 된다.위에서 말한 행동에도 상태를 저장합니다.import androidx.compose.runtime.saveable.rememberSaveable// ...var isEnabled by rememberSaveable { mutableStateOf(true) } 다만 (역)직렬화가 필요한 복잡한 데이터이거나 용량이 큰 데이터를 저장하는 데엔 rememberSaveable 사용을 지양해..
-
[안드로이드] ViewModel을 이용한 Fragment간 데이터 공유카테고리 없음 2024. 4. 29. 10:48
우선 Fragment를 변경할 수 있는 버튼과Fragment를 교체할 수 있는 FrameLayout을 놔준다.class MainActivity : AppCompatActivity() { private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) } private val firstFragment by lazy { FirstFragment() } private val secondFragment by lazy { SecondFragment() } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ..
-
[안드로이드] Fragment 생명주기 간단 정리카테고리 없음 2024. 4. 25. 09:19
onAttach부모 Activity에 종속된다. onCreateFragment가 생성됐을 때 호출되지만 Fragment View는 포함되지 않는다. onCreateViewFragement View가 생명주기와 함께 생성된다. onViewCreatedonCreateView로부터 View를 전달받아 View를 세팅해준다. onResumeFragment와 사용자가 상호작용 가능한 상태이다. onDestroyViewFragment가 화면에서 사라지고 Fragment View의 생명주기를 없앤다. onDetachFragment가 Activity로부터 완전히 제거된다.
-
[안드로이드] ViewPager2와 TabLayout카테고리 없음 2024. 4. 24. 14:27
사용 이유ViewPager의 개선된 버전이다. 기능 개선과 세로 방향이 추가되었다.이런 이유 말고도 ViewPager는 더 이상 지원을 하지 않기 때문에 ViewPager2를 사용해야 한다.사용법 1) Gradle 설정우선 ViewPager2를 사용하기 위해션 Gradle에 라이브러리를 추가해야 합니다.dependencies { implementation("androidx.viewpager2:viewpager2:1.0.0")} 2) 각 탭에 사용할 Fragment 생성class FirstFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container:..