-
2024-02-27 BOOTCAMP TILAndroid 2024. 2. 27. 23:36
오늘은 로또번호생성기 기능 구현과 MBTI 테스트 UI 구현을 해보았다.
전반적으로 느낀 점은 UI 구현보다 기능 구현이 훨씬 어렵다는 점이다. UI 구현 같은 경우에는 세밀한 부분을 하나씩 봐서 맞춰나가면 되지만, 기능 구현의 경우 전체적인 틀을 봐야한다.
로또번호생성기 기능 구현 중 다시 복습해야 할 부분을 정리해보았다.
1) .xml 파일로 따로 프레임을 만들어 커스터마이징 할 수 있다 → TextView 위젯에서 "android:background" 에서 해당 xml 파일을 끌어다 쓸 수 있다.
2) LinearLayout 안에 TextView 위젯 속성이 들어갈 수 있다.
전체적인 흐름도를 정리해보았다.
- 사용자가 numberpicker 에서 원하는 숫자를 고를 수 있다. (단, 이미 고른 숫자는 안되고 최대 5개까지 허용된다.)
→ 지키지 않을 경우, Toast 메세지를 생성한다.
- '번호 추가하기' 버튼을 통해 사용자가 고른 공은 박스 위젯 안에 담기고, 나머지 공은 '자동 생성 시작' 버튼을 통해 무작위로 생성할 수 있다. → 단, 무작위로 생성되는 공은 이미 사용자가 고른 숫자에서 제외된다.
- 마지막으로, 초기화 버튼을 통해 저장된 공을 제거하고 number picker 에서 설정된 숫자를 '1'로 바꾼다.
문법도 정리하고 싶었지만, 생각보다 해당 앱에 대한 기능적인 부분이 한번에 이해하기 어려워 당일에 정리하긴 힘들었다.
나중에 다시 꼭 복습하면서 코드를 따라쳐서 다시 정리해보고 싶다.
또한, 실제 앱을 실행하면 '자동 생성 시작' 버튼에서 앱이 나가지는데, 이 부분은 아직 해결하지 못했다. (내가 코드를 따라쓰면서 잘못 친 부분이 있는 것인가..?)
- widget chain : 우클릭 > Chains > Create Horizontal Chain(*수평 정렬) (1)
우클릭 > Chains > Horizontal Chain Style > packed(*가운데 정렬을 의미) (2)
* 위젯 정렬에는 constraint 를 이용해야 한다.
- solid 내부 채우는 색깔, stroke 는 윤곽선 색깔
android:orientation="horizontal" 이 필수적인 코드이다.
★ LinearLayout 안에 TextView 를 넣는 형식 app:layout_constraintHorizontal_bias="0.5"
bias 비율 0.5인 경우에는 크게 의미가 없다.
- shuffle 섞는다
컨스트레인트레이아웃 - 가운데 위치 지정과 Bias (ConstraintLayout - Centering Positioning and Bias)
1. 뷰 위젯을 컨스트레인트레이아웃의 가운데 배치하기. 자, 컨스트레인트레이아웃에 뷰 위젯이 하나 있습니다. 이 뷰 위젯을 부모 레이아웃의 한 가운데 배치해야 하는 상황이 발생했는데요,
recipes4dev.tistory.com
- 앱 실행 오류가 나면 Logcat에서 어떤 부분이 오류인지 확인할 수 있다.
안드로이드 스튜디오 log 찍기 & 중간에 값 확인하기 (tistory.com)
안드로이드 스튜디오 log 찍기 & 중간에 값 확인하기
개발하다 보면 과연 내가 원하는 변수가 제대로 값이 들어있는지 가지고 있는지 궁금할 때가 있을 겁니다. 그럴 때 확인하기 흔히 쓰는 방법이 log 인데요. 평소 유니티에서 Dubeg.Log(원하는 출력
88-it.tistory.com
- 튜터님이 주신 정보이다.
[안드로이드] ImageView scaleType 속성별 차이 예제 (tistory.com)
[안드로이드] ImageView scaleType 속성별 차이 예제
안드로이드의 이미지를 출력하는 ImageView의 속성중 scaleType에 대해서 알아본다. 위젯 ImageView를 아래와 같이 작성한다. 이미지뷰에 sample_image를 출력할 것이다. 이 때 android:scaleType 속성의 옵션값
sharp57dev.tistory.com
나의 질문) xml은 몇번 따라하면 괜찮은데 kt 코드가 어려운데 팁이 있나요?
튜터님 답변) kt 문법부터 공부하지 않음 (일단 흐름을 먼저 파악하는게 좋다)
깃헙에는 전세계에서 짠 코드들이 다 나와있음 참고하기 좋음. 남들의 코드 따라서 짜보는 것 추천!
3주차 mbti 앱에서는 UI 까지 구현해보았다.
- gradient -> startColor, endColor, angle 속성이 있다.
- text의 size의 단위는 "sp" 이다.
☆ android:scaleType="fitCenter" → 이게 무슨 의미일까?☆ var이랑 val 차이?
한 개의 화면을 하나의 액티비티로 만들기 → 사실상 비효율적임
→ 하나의 액티비티만 만들고 글자만 교체되도록 재사용하기! 하지만, 다음으로 넘기는 것처럼 보이는 기능은 필요함(뷰페이저 View pager)
→ build.gradle.kt (app)의 dependencies 부분에 라이브러리 추가해야 함
- New>Kotlin Class/File>ViewPagerAdapter 클래스 생성
- viewPager 안에다가 fragment를 넣음 (QuestionFragment)
화면 = question fragment문법적인 부분이 이해하기 힘들어 제대로 정리하지는 못했다.
결론)
*모르는 부분은 반복적으로 코드 따라 치면서 이해할려고 노력하자
*세부적인 사항 말고 전체적인 로직을 먼저 이해하는 노력을 들이도록 하자!'Android' 카테고리의 다른 글
fold / foldIndexed 함수, 자료형 정리, 증감연산자 (0) 2024.03.05 2024-03-04 BOOTCAMP TIL (3) 2024.03.04 2024/02/29 BOOTCAMP TIL (1) 2024.02.29 2024/02/28 BOOTCAMP TIL (7) 2024.02.28 2024-02-26 BOOTCAMP TIL (2) 2024.02.26