[내배캠 Android 4기] TIL 0623

오리너구리·2024년 6월 23일
0

TIL

목록 보기
38/48
post-thumbnail

오늘 할일

  • 코드카타 45번
  • 개인 과제 추가 구현

코드카타

오늘은 문자열을 ascii 코드를 사용해서 변환하는 문제였당

String이랑 Char이 어느정도 연관 있다는거 대충은 아는데

뭔가 별개로 생각하고 있었는데

오늘 문제 풀면서 String은 Iterable이라는걸 오늘 확실히 알아버림!

https://velog.io/@orinugoori_art/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-CODEKATA-45-%EC%8B%9C%EC%A0%80-%EC%95%94%ED%98%B8


개인 과제

오늘은 금요일에 하던 선택 구현사항을 마저 구현했다.

선택 구현사항 구현

  • 회원 가입 페이지에서 입력한 아이디/비밀번호가 회원 가입 버튼을 눌러 로그인 화면으로 이동할 때 자동으로 입력되도록 구현합니다.
  • 자기소개 페이지가 시작될 때 5장 중 랜덤으로 1장의 사진이 표시되도록 구현합니다.

저번에 회원가입 페이지에서 입력한 아이디 비밀번호를 로그인 화면에 넘기도록 하는 걸 구현했는데,

registerForActivityResult 개념이 이해가 어려워서 엄청 오래 걸렸었는데,

오늘은 생각보다 쉽게 했음!

일단 자기소개 페이지에서 사진을 랜덤으로 표시하면 되는건데,

FrameLayout을 사용해보고 싶어짐!

일단 혼자 레이아웃 공부했던 보람을 느껴보고싶었음..

프레임레이아웃은 공부했던 부분이기 때문에~!!!

근데 이 방법이 아니면 어뜨카징~?ㅎ.ㅎ.

근데 일단은 잘 작동하긴하는데,,ㅎ

1. 이미지 제작

일단은 랜덤으로 나올 이미지를 만들어줬다.

오늘 하루종일 자다가 12시에 공부 시작해버려서 시간이 별로 없었기 때문에 그냥 오리너구리 부리에만 색상을 다르게 넣어서 5개 만들었음

쏘 큐트~~!

2. xml 에 프레임 레이아웃 추가하고 이미지 자식뷰로 넣어주기

<FrameLayout
        android:id="@+id/layout_frame"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintTop_toBottomOf="@id/tv_home_title"
        app:layout_constraintHeight_percent="0.27"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent">

        <ImageView
            android:id="@+id/iv_home_character1"
            android:visibility="invisible"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/iv_home_character_1"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/tv_home_title">
        </ImageView>

        <ImageView
            android:id="@+id/iv_home_character2"
            android:visibility="invisible"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/iv_home_character_2"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/tv_home_title">
        </ImageView>

        <ImageView
            android:id="@+id/iv_home_character3"
            android:visibility="invisible"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/iv_home_character_3"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/tv_home_title">
        </ImageView>

        <ImageView
            android:id="@+id/iv_home_character4"
            android:visibility="invisible"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/iv_home_character_4"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/tv_home_title">
        </ImageView>

        <ImageView
            android:id="@+id/iv_home_character5"
            android:visibility="invisible"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/iv_home_character_5"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/tv_home_title">
        </ImageView>

    </FrameLayout>

일단 xml 에서 FrameLayout을 추가하고,

그 안에 자식뷰로 랜덤으로 표시될 이미지뷰들을 추가해주는데,

이미지들은 전부

크기를 matchparent로 설정하고

visibility를 invisible로 설정해줬다.

3. changeView 함수 정의

그리고 HomeActivity.kt 파일에서 changeView라는 함수로 랜덤한 숫자를 받아서, 숫자마다 다른 이미지가 표시될수 있게 visibility를 설정해주는 기능을 만들었다.

    private fun changeView(index : Int){
        val randomImage1 = findViewById<ImageView>(R.id.iv_home_character1)
        val randomImage2 = findViewById<ImageView>(R.id.iv_home_character2)
        val randomImage3 = findViewById<ImageView>(R.id.iv_home_character3)
        val randomImage4 = findViewById<ImageView>(R.id.iv_home_character4)
        val randomImage5 = findViewById<ImageView>(R.id.iv_home_character5)

        when (index){
            0 -> {
                randomImage1.setTransitionVisibility(View.VISIBLE)
                randomImage2.setTransitionVisibility(View.INVISIBLE)
                randomImage3.setTransitionVisibility(View.INVISIBLE)
                randomImage4.setTransitionVisibility(View.INVISIBLE)
                randomImage5.setTransitionVisibility(View.INVISIBLE)
            }
            1 -> {
                randomImage1.setTransitionVisibility(View.INVISIBLE)
                randomImage2.setTransitionVisibility(View.VISIBLE)
                randomImage3.setTransitionVisibility(View.INVISIBLE)
                randomImage4.setTransitionVisibility(View.INVISIBLE)
                randomImage5.setTransitionVisibility(View.INVISIBLE)
            }
            2 ->{
                randomImage1.setTransitionVisibility(View.INVISIBLE)
                randomImage2.setTransitionVisibility(View.INVISIBLE)
                randomImage3.setTransitionVisibility(View.VISIBLE)
                randomImage4.setTransitionVisibility(View.INVISIBLE)
                randomImage5.setTransitionVisibility(View.INVISIBLE)
            }
            3 -> {
                randomImage1.setTransitionVisibility(View.INVISIBLE)
                randomImage2.setTransitionVisibility(View.INVISIBLE)
                randomImage3.setTransitionVisibility(View.INVISIBLE)
                randomImage4.setTransitionVisibility(View.VISIBLE)
                randomImage5.setTransitionVisibility(View.INVISIBLE)
            }
            4 -> {
                randomImage1.setTransitionVisibility(View.INVISIBLE)
                randomImage2.setTransitionVisibility(View.INVISIBLE)
                randomImage3.setTransitionVisibility(View.INVISIBLE)
                randomImage4.setTransitionVisibility(View.INVISIBLE)
                randomImage5.setTransitionVisibility(View.VISIBLE)
            }
        }

    }

근데 딱봐도 뭔가 반복이 많은게 더 효율적으로 반복문이라던가 조건문을 사용해야하도록 수정해야 할 것같음~~! 근데 시간이 늦어서 빨리 자고싶어서 일단 이 방법이 작동하는지만 확인하려고 그냥 이렇게 해버림 ㅋㅋ

좀 고민 없이 해서 찔리는 거같기도 한데

뭐 슈발 주말에도 공부하는 것만으로 열정아입니까!

4. 랜덤한 숫자 뽑아서 changeView함수에 넣어줌

        val random = Random()
        val randomIndex = random.nextInt(5)

        changeView(randomIndex)

random 함수를 사용해서 랜덤한 숫자를 받아주고 그걸 changeView 함수에 넣어줬음!

작동하는 모습

랜덤하게 주둥이 색이 변하는걸 볼수있다~~!

쏘 큐트~~


TMI

오늘은 하루종일 자다가 깨서 폰좀보다가 또 자다가 하면서 게으름 오지게 피다가
밤 12시에 그래도 코드카타랑.. 과제 해야징...하고 일어났음~!

일어났음 된거자너~한잔해~!
그래서 좀 더 공부할까? 하다가 그냥 다시 누울거임~!ㅎㅎㅎ
코드카타 푸셨잖아~ 과제..음.. 하셨잖아~

profile
오리너구리입니다

0개의 댓글