분류 전체보기
-
[Jetpack Compose] Scaffold를 이용하여 Snackbar 띄우기카테고리 없음 2024. 6. 5. 09:36
사용법우선 아래 구조처럼 Scaffold로 감싸줍니다.(Scaffold는 여러가지 디자인을 제어하기 위한 컴포저블입니다.) 상태를 저장하기 위해 SnackbarHostState를 remember에 감싸서 생성해줍니다.이후 Scaffold의 인자로 SnackbarHost를 넘겨주고 SnackbarHostState를 SnackbarHost의 인자로 넘겨줍니다. 이후 가장 중요한 Snackbar를 띄우는 방법인데Snackbar를 띄우기 위해 SnackbarHostState#showSnackbar(String)를 이용합니다.showSnackbar 함수는 suspend이기 때문에 CoroutineScope를 이용하여 그 안에서 돌려주면 끝입니다.@Composablefun RegisterScreen { val..
-
[안드로이드] 액티비티 전환 시 이전 액티비티 파괴카테고리 없음 2024. 6. 4. 10:03
Intent로 액티비티를 시작할 때 아래 Flag를 추가하면다음 액티비티에서 뒤로가기를 눌렀을 때 이전 액티비티로 가지 않고 바로 종료됩니다.LoginActivity ---(Flag)---> MainActivity ---(뒤로가기)---> 종료fun startMainActivity( context: Context) { val intent = Intent(context, MainActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } context.startActivity(intent)}
-
[Jetpack Compose] BasicTextField로 심플한 디자인하기카테고리 없음 2024. 6. 2. 18:50
코드에 주석을 달아 설명하겠습니다.@Composablefun BaseTextField( hint: String = "", // 텍스트가 어떻게 보일지에 대한 설정입니다. // 패스워드 처리를 하기 위해 PasswordVisualTransformation()를 인자로 넘겨주었습니다. visualTransformation: VisualTransformation = VisualTransformation.None) { // 다른데서 입력 값을 가져가려면 더 상위 컴포저블로 빼야될 것 같습니다. var input by remember { mutableStateOf("") } Box( modifier = Modifier .fillMaxWidth(..
-
[코틀린] 여러 조건을 기준으로 정렬카테고리 없음 2024. 5. 31. 00:31
기존엔 아래 방법을 사용하여 정렬하려고 했으나다시 생각해보니 정렬 메서드가 따로 있으면 결국엔 마지막을 기준으로 정렬되기 때문에구글링을 통하여 다른 방법을 찾아보았습니다.@ViewModelScopedclass ListUseCase @Inject constructor( private val postRepository: PostRepository) { suspend operator fun invoke(mode: Mode, tags: List): List { return postRepository.getPosts(tags).filter { it.getMode() == mode }.sortedByDescending { it.time ..
-
[안드로이드] Firebase의 Firestore카테고리 없음 2024. 5. 30. 09:48
사용법이전에 작성한 코드 중 일부를 가져왔습니다.코드 주석으로 설명을 하겠습니다.class PostRepositoryImpl @Inject constructor( private val firebaseDataSource: FirebaseDataSource) : PostRepository { // "posts"를 기반으로 부모 Reference를 가져오는 프로퍼티입니다. // 굳이 DataSource를 만들지 않고 Firebase.firestore를 통해 바로 가져올 수 있습니다. private val reference get() = firebaseDataSource.firestore.collection(REFERENCE_PATH) override suspend fun create..
-
[안드로이드] Glide로 url 이미지 불러오기카테고리 없음 2024. 5. 28. 09:31
사용법 1. gradle 설정glide 종속성을 추가해줍니다.dependencies { implementation("com.github.bumptech.glide:glide:4.16.0")} 2. Glide 객체 사용클래스에 binding이 있다고 가정하고 사용하겠습니다.with로 종속될 액티비티를 지정해줍니다.load 안에는 url을 into 안에는 ImageView를 넣어주시면 됩니다.fun setImage() { Glide().with(binding.root) .load("https://www.google.co.kr/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png") .into(binding.thumbnailIm..
-
[코틀린] Gson + Base64Coder카테고리 없음 2024. 5. 23. 11:31
사용 이유용량이 큰 데이터를 Gson으로 JSON String 형태로 만든 후 Base64Coder를 통해 변환합니다.Base64Coder로 변환된 데이터는 바이너리 형태로 저장되어 사람이 알아볼 수 없게 됩니다. 다만 Base64Coder를 사용하면 데이터의 크기가 기존보다 더 늘어나게 됩니다.(용량이 조금 더 커지기 때문에 압축도 함께 알려드리고자 합니다.)그럼에도 Base64Coder를 사용하는 이유는 통신 과정에서 데이터 손실을 막기 위해 사용합니다.(또한 데이터를 저장할 때 압축된 데이터로 저장하면 용량을 아낄 수 있습니다.) 기본적인 아스키코드는 데이터를 전달하기 위해 적합하지 않습니다.Base64Coder는 안전한 아스키코드만을 사용해서 압축하여 데이터가 손실되지 않게 보호합니다.사용법우선 ..