안드로이드
-
[Android] 회원가입시 LiveData 사용한 비밀번호 유효성 검사 (ViewModel/ Pattern, Matcher 정규식)안드로이드 2024. 3. 29. 18:32
✏️ TIL(Today I Learned) 회원가입시, 비밀번호의 조건을 만족할 때까지 아래에 주의문구가 보이도록 만들었다. LiveData를 사용하여 입력받은 text를 관찰하면서, 조건을 만족하면 주의문구의 visibility를 GONE으로 바꿨다. 우선 뷰모델을 사용하기 위해서, ViewModelProvider를 통해 SignUpViewModel가져오고 LifeCycle을 가진 owner를 넣었다. (this==현재 Activity) addTextChangedListener를 사용해서 EditText들의 텍스트가 변경될 때마다 ViewModel에 LiveData 값을 업데이트했다. // SignUpActivity viewModel = ViewModelProvider(this).get(SignUpVi..
-
[Android] ViewModel의 생성과 Lifecycle 생명주기안드로이드 2024. 3. 29. 12:32
📝 공부한 내용 정리ViewModel1. ViewModel의 생성ViewModel을 사용하려면, 우선 ViewModel 요청을 해야 한다. ViewModelProvider을 사용해서 객체를 요청한다. 1.1) ViewModel의 생성법 - ViewModelProvider 사용// 일반적인 방법: ViewModelProvider를 사용하여 뷰모델을 생성 viewModel = ViewModelProvider(this).get(SignUpViewModel::class.java)this는 액티비티 또는 프래그먼트의 인스턴스이다. SignUpViewModel::class.java는 뷰모델의 클래스를 지정한다. ViewModelProvider는 뷰모델의 인스턴스를 관리하며, 이미 생성된 경우에는 기존 인스턴스를 ..
-
[Android] 안드로이드 MVVM 패턴, 아키텍처안드로이드 2024. 3. 26. 20:31
📝 공부한 내용 정리MVVM 패턴1. MVVM (Model - View - ViewModel) 패턴안드로이드 앱 개발에서 사용되는 아키텍처 패턴 중 하나이다. 이 패턴은 코드를 더욱 구조화하고 유지보수하기 쉽게 만들며, 특히 대규모 앱의 개발에서 유용하다. 1.1) MVVM 패턴의 세 가지 구성 요소 - 모델(Model)모델은 데이터와 비즈니스 로직을 나타낸다. 이는 일반적으로 데이터베이스, 네트워크 요청, 파일 시스템 등과 같은 데이터 소스와 관련된 작업을 처리하는 클래스이다. 모델은 일반적으로 뷰나 뷰모델과 직접적인 의존성을 갖지 않는다. - 뷰(View)뷰는 사용자에게 데이터를 표시하고 사용자 입력을 받는 인터페이스 요소이다. XML 레이아웃 파일을 통해 뷰를 정의하고, 액티비티나 프래그먼트 ..
-
[Android] Selector 사용해서 Button 상태에 따라 버튼 디자인 변경하기 (state_pressed)안드로이드 2024. 3. 22. 20:12
✏️ TIL(Today I Learned) Selector를 사용해서 버튼 상태에 따라 다른 그래픽 리소스가 적용되도록 했다. 우선 drawable폴더에서 xml파일을 생성한다. 버튼이 눌렸을 때와 눌리지 않았을 때의 버튼 UI를 Shape에 정의한다. // button_clicked.xml // button_unclicked.xml 그다음Selector를 사용해 버튼의 state_pressed가 true, false에 따라 원하는 shape을 적용한다. // button_selector.xml // 따로 shape파일을 만들지 않아도 아래와 같이 할 수 있다 마지막으로 selector를 적용하고 싶은 Button에 background속성을 추가하면 된다. android:background="@drawa..
-
[Android] Button에 background drawable 적용 안 되는 문제 해결안드로이드 2024. 3. 22. 20:06
✏️ TIL(Today I Learned) Selector를 사용하려고 Button에 background 속성을 추가했지만 버튼의 디자인 바뀌지 않는 문제가 발생했다. 따로 오류가 발생하는 것도 아니어서 뭐가 문제인지 알 수 없었다. 그래서 검색을 하며 찾아보니 res/values/themes/themes.xml 에서 style 때문이었다. MaterialComponents를 상속받고 있는데, MaterialComponents가 Background를 자체적으로 갖고 있기 때문에 background를 지정해도 변경되지 않는 것이다. 그래서 아래와 같이 코드를 수정하면 background가 적용된다. parent="Theme.AppCompat.Light" 이 방법이 싫다면 단순히 Button을 android..
-
[Android] registerForActivityResult() 사용한 회원가입 & 로그인안드로이드 2024. 3. 21. 18:01
✏️ TIL(Today I Learned) registerForActivityResult()를 사용해서 회원가입 화면에서 입력한 아이디와 비밀번호를 입력하고 완료 버튼을 눌러 로그인 화면으로 이동하면, 자동으로 입력되도록 구현했다. // SignInActivity val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult -> if (result.resultCode == Activity.RESULT_OK) { val id = result.data?.getStringExtra("id") ?: "" val pwd = result.data?.getStr..
-
[Android] AAB(Android App Bundle)에서 구글 로그인이 안 되는 문제 해결안드로이드 2024. 3. 21. 12:24
플레이스토어 배포 진행과정에서 비공개 테스트를 수행 중인데, 아래 링크로 다운로드한 AAB파일에서 구글로그인이 안 되는 문제가 발생했다. 안드로이드 스튜디오에서 해당 릴리즈 버전으로 애뮬레이터와 실제 스마트폰에서도 구글로그인이 잘 되었었다. 그래서 뭐가 문제인지 알 수 없다가, 과거 공모전을 진행할 때 APK에서 구글로그인이 안 되었던 것이 떠올랐다. APK나 AAB 파일을 업로드하면 구글 플레이 콘솔에서 따로 앱 서명하기 때문에, 이 서명 키의 SHA-1을 OAuth 2.0 클라이언트 ID에 등록해야 한다. 구글 플레이 콘솔에서 설정 밑에 앱 서명을 클릭해, SHA-1을 복사한다. 그다음 구글 클라우드로 가서 사용자 인증 정보 만들기를 클릭해, OAuth 2.0 클라이언트 ID를 생성하여 이름은 자유롭..