[TIL] Android 앱 개발 입문 : 팀 프로젝트 (파프리카마켓) 3

지혜·2023년 12월 29일

Android_TIL

목록 보기
27/70

✏231229 금요일 TIL(Today I learned) 오늘 배운 것

📖UI구현

[모서리 둥근 이미지뷰]

  • 클래스 소개를 이미지로 채웠는데, 그냥 각진 이미지보다는 둥근 이미지를 사용하고 싶었다.
  • 처음에는 clipToOutline을 사용했는데, api 31버전부터 지원하는 기능인데 우리 프로젝트에는 최소 지원 api가 27이라서 에뮬레이터에서 적용이 되지 않았다.
  • 다른 방법을 알아보던 중 CardView를 활용하는 방법을 알게 되어서 그 방법을 사용하기로 헀다.
    • CardView : 디자인적 요소를 위한 기능으로, 이미지의 곡선을 부여하거나 그림자를 줄 수 있다.
    • CardView도 ScrollView처럼 내부에 하나의 자식만 가질 수 있다. 여러 뷰를 묶고 싶다면 LinearLayout, ConstraintLayout등을 활용해야 한다.
    • [CardView의 속성들]
      • app:cardCornerRadius="0dp" : 카드뷰 모서리의 둥근 정도를 설정하는 것으로, 숫자가 높을수록 곡률이 상승한다
      • app:cardElevation="0dp" : 카드뷰가 공중에 떠있는 정도를 설정하는 것으로, 숫자가 높을수록 그림자가 명확해진다.

[액티비티 전환 시 애니메이션 구현]

  • 메뉴 아이콘들을 만들었으면 실용하는 모습을 보여야될 것 같아서, 애니메이션 연습도 할 겸 간단한 간이 페이지를 인텐트 시킨 후 애니메이션을 적용했다.
  • 힌트에는 overridePendingTransition()을 사용하도록 되어있었는데, 막상 적용시켜보니 이미 코틀린에서 deprecated되어 있었다.
  • res> anim 디렉토리를 만들어서, 그 안에 시작애니메이션.xml 파일과 종료애니메이션.xml 파일을 만들어서 연결하는 것은 똑같은데, 구글링에서는 23년 초까지도 overridePendingTransition()을 사용하고 있었기 때문에, 오픈AI를 사용하여 deprecated되지 않은 방법을 찾아보았다.
btnRestaurant.setOnClickListener {
            val intent = Intent(this,NearFoodActivity::class.java)
            val options = ActivityOptionsCompat.makeCustomAnimation(this, R.anim.near_from_right_enter,R.anim.near_to_right_exit)
            startActivity(intent,options.toBundle())

        }
  • ActivityOptions클래스와 ActivityOptionsCompat클래스를 사용하여 액티비티 전환 애니메이션을 지정할 수 있다.
    val options = ActivityOptionsCompat.makeCustomAnimation(context, enterAnim, exitAnim)

📖string.xml (en) 만들어서 영어 리소스 관리하기

  • 힌트에서는 res> values-en 디렉토리를 활용하라고 되어있었는데, 팀원분들 중에서 어플 내에 설정 상 언어 조정을 할 수 있게 구현을 준비 중이신 분이 계셨어서, 나중에 합칠 때 어떻게 될지 모르겠지만, 나는 그냥 원래 string.xml파일에서 Open editor를 통해 Translations Editor를 사용했다.
  • Translations Editor에서 Add Locale 이모티콘을 누르면, 언어를 추가할 수 있다. 그중에서 English (en)을 찾아 추가한 다음, 키 값에 해당하는 영어 번역을 등록했다.
  • 여기까지는 문제가 없는데, 중요한건, 변경된 언어가 적용된 UI가 어떤 형태인지 꼭 확인을 해봐야한다는 것이다.
  • 영어로 번역된 단어의 길이가 길어져서 메뉴 버튼이 조금씩 밀리기도 하고, 가게 이벤트 설명 문구가 줄 수를 넘어서 고정height로 해놓은것을 wrap_content로 맞춰주는 등, 디테일을 다시 잘 만져주어야 했다.

📖오늘의 팀 프로젝트 트러블 슈팅

  • 오늘의 트러블 슈팅은 위에 구현 기능을 설명하면서 이미 다 말을 했는데,
    • clipToOutline은 솔직히 이전에 써본적이 있는데, 그 때도 이런저런 문제로 먹혔다 안먹혔다 했던 기억이 있다. CardView 굳이 왜 쓰는지 몰랐다가 오늘 깔끔하게 이미지뷰에 먹힌 것을 보고 감동했다. 있는데에는 다 이유가 있는 것이다.
    • 솔직히 좀 뒤늦게 카드뷰를 알아서, 가게 소식 부분에도 카드뷰를 활용할까 생각해봤는데, 그림자나 곡률을 굳이 활용할 환경은 아닌 것 같아서 그냥 ConstraintLayout인 채로 냅두기로 헀다. 괜히 레이아웃뎁스만.. 더 깊어지지 의미가 없을 것 같다.
    • overridePendingTransition()도 deprecated되어 있어서 놀랐다. 어제 팀원분이 이거에 대해 이야기해주셨는데, 난 이 힌트를 못보고 엉뚱한걸 찾고있었어서 제대로 이해를 못했다가 오늘 발견하고 적용해봤을 때 deprecated얘기를 하신거라고 겨우 알아들었다..ㅎㅎ 어쨌든 다른 방법을 찾는데 좀 고생해서 그렇지 적용하는 것은 그렇게 어렵지 않았다. 다만, 이렇게 고쳐도 되는지..는 조금 걱정이 된다.
    • 나머지는 영어리소스로 변경하고 UI가 잘 안맞아서 잘잘하게 일일히 손봐준 정도..라고 할 수 있다. 이건.. 이런것도 트러블 슈팅이라고 봐도 될까?

📖오늘의 반성과 다음에 할 일

  • 오늘도 반성이라기보다.. 그냥 되돌아 보면, 시간이 많이 부족해서 내일도 붙잡고 있을 줄 알았는데, 어찌저찌 오늘 안에 마무리할 수 있었던 것 같다. 뭔가 오히려 좀 여유로워서 무언가 부족한 부분이 있나 걱정이 되지만.. 어쨌든 오늘이 2023년의 마지막 평일이던데..ㅎㅎ 연말을 알차게 보낼 수 있었던 것 같다. 내년에도 파이팅하자!
  • 월요일은.. 1월1일이지만, 마감날짜이기도 해서 팀원분들과 코드를 합치는 마지막 관문이 남았다. 다음에 할 일은 무사히 코드를 합치는 것! 별 탈 없이 합쳐졌으면 좋겠다.
profile
파이팅!

0개의 댓글