728x90
반응형

Android 89

<정리> 명함 앱 만들기 3일차

✔ 요약실제 스마트폰과 안드로이드 스튜디오를 와이파이로 사이에 두고 연결해서 무선으로 프로젝트를 실행하고 디버깅 해볼 수 있는 세팅 완료레이아웃 수정 및 클린 아키텍처를 적용하기 위한 모듈 추가 생성 1. adb 무선 연결처음에 할 때는 다음과 같이 하면 된다.가장 먼저 스마트폰에서 내부 IP를 알 수 있는 앱을 다운받아 내부 IP를 확인한다.스마트폰을 컴퓨터와 USB선으로 연결한다.C:\Users\(사용자)\AppData\Local\Android\Sdk\platform-tools 이 위치에서 git bash를 열어 다음 명령어들을 친다../adb tcpip 5555포트번호 설정하는 명령어 ./adb connect (앱에서 확인한 내부 IP):5555연결하는 명령어 이렇게 하고 나면 안드로이드 스튜디오에..

Android/Kotlin 2024.06.12

<정리> 명함 앱 만들기 2일차

✔ 요약명함집 화면의 RecycerView를 ListAdapter와 연결하고, 홈 화면의 ViewPager2도 ListAdapter와 연결함이때 추상 클래스를 적극 활용하여 확장성을 미리 대비함 1. 명함집 화면명함집에 들어갈 하나하나 아이템의 정보를 data class에 넣어놨다.businessCard만 nullable한 변수인데 이는 명함 QR 코드 스캔이 없이 수기 작성하는 경우를 생각해서 그렇게 해놨다.// StorageItem.ktimport android.net.Uridata class StorageItem( val name: String, val rank: String, val company: String, val businessCard: Uri?, val badg..

Android/Kotlin 2024.06.10

<정리> 명함 앱 만들기 1일차

✔ 요약앱 전체적인 구조(BottomNavigationView + FrameLayout)를 설정하고 각각 페이지의 요소들을 미리 정해놓았던 위치에 크게크게 배치시켜놓음 1. 앱 전체적인 구조 설정// activity_main.xml 상단은 Toolbar, 하단은 BottomNavigationView가 차지하고 그 외의 공간은 각각의 페이지가 나타날 FrameLayout이 차지함 메뉴는 다음과 같이 3개로 만들어둠(변경 예정)// bottom_nav_menu.xml  이에 맞는 액티비티는 다음과 같이 만들었다.// MainActivity.ktimport androidx.appcompat.app.AppCompatActivityimpo..

Android/Kotlin 2024.06.05

오늘의 공부 내용(24.05.30)

✨ CustomScrollView  ✏️ sliver란 스크롤 영역을 이루는 조각 하나하나를 의미함  ✏️  sliver들이 여러개 뭉쳐진 걸 slivers라 하고 이는 스크롤 영역이라고 할 수 있음  ✏️  ListView와 SliverList가 같고 GridView와 SliverGrid가 같은데 차이점은 SliverList와 SliverGrid가 위젯이 아니라는 점  ✏️  sliver는 정말 다양함(SliverAppBar, SliverList, SliverGrid, SliverToBoxAdpater 등)        ➡️ 그만큼 스크롤 영역을 구성하는 요소를 다양하게 할 수 있음  ✏️  SliverAppBar를 사용해보니까 CoordinatorLayout과 비슷하다는 느낌을 받음  ✏️  Sliv..

Android/Flutter 2024.05.30

오늘의 공부 내용(24.05.27)

✨ 인스타그램 클론 앱 만들기  - 상태바를 고려하여 최상단 위젯 위치를 설정하는 위젯 : SafeArea  - 위젯이 가질 수 있는 최대의 공간을 차지하도록 하는 위젯 : Expanded  - 특정 액션에 대한 UI 변화를 주려면 StatelessWidget을 사용하는 것이 아니라 StatefulWidget을 사용해야함  - 현재 기기의 사이즈 정보를 가지고 오는 방법 : MediaQuery.of(context).size  - 특정 상태에 대한 정보를 Boolean이나 Int를 사용하여 표현하지 않고 Enum을 사용하는 것이 코드 이해 측면에서 더욱 좋음  - 리스트뷰와 그리드를 함께 사용하는 UI를 스크롤하고 싶을 때 사용하는 위젯 : CustomScrollView  - child에 대한 애니메이션 ..

Android/Flutter 2024.05.27

오늘의 공부 내용(24.05.21)

✨ Hive  - NoSQL 데이터 베이스  - Dart로 작성된 경량화된 로컬 데이터베이스  - Flutter에서 데이터를 다루는데 간편하고 효율적인 방법을 제공하여 Flutter와 궁합이 매우 잘 맞는 데이터베이스  - 다양한 플랫폼에서 사용 가능  - SharedPreferences보다 성능이 뛰어  - 러닝 커브가 낮은 편  - 기본 타입, List Map, DateTime, Uint8List, Dart object를 데이터베이스에 저장할 수 있음 ✨ Flutter 프로젝트에 Hive 추가💠pakage 설치dependencies: hive: ^[version] // Hive 설치용 hive_flutter: ^[version] // Hive 추가 기능 설치용 dev_dependencies: ..

Android/Flutter 2024.05.21

<정리> WorkManager를 이용한 주기적인 UI 업데이트2

생각보다 빠르게 어제의 마지막 고민이 해결되어서 이렇게 글을 남긴다.물론 완벽한 방법은 아닌 것 같지만 이렇게도 할 수 있다는 걸 남겨놓는게 좋을 거 같다. 1. 가장 처음 방식그냥 뷰모델에서 코루틴을 이용해 데이터를 가져와 조건을 체크하고 그 결과를 라이브데이터에 넘겨줌그냥 함수이기 때문에 호출할 때 딱 한번 실행됨더 실행되게 하고 싶다면 원하는 위치마다 호출 코드를 넣어줘야함fun updateNotificationSign() { if (savedPrefRepository.getFlag().not()) { savedPrefRepository.setFlag(true) viewModelScope.launch(Dispatchers.IO) { val dateP..

Android/Kotlin 2024.04.26

<정리> WorkManager를 이용한 주기적인 UI 업데이트

내배캠 최종 팀플 때는 성공하지 못 했지만 계속 붙잡고 있던 WorkManager가 드디어 뚫렸다...!어디서 쓰는 것이었냐면 저장된 공공서비스의 예약 관련 날짜에 대해 체크를 해서 메인 페이지의 알림 페이지 이동 버튼 UI를 업데이트하는 데 사용하는 것이었다.팀플 당시에는 이걸 할 수 없었기 때문에 앱 실행시 한번 로직을 돌려 체크를 하는 방식으로 마무리를 지었었다.껐다가 다시 키지 않는 한 해당 로직은 다시 실행되지 않았기 때문에 1분 뒤에는 조건에 맞아 UI가 업데이트되어야함에도 불구하고 1분 전에 실행되면 UI가 업데이트 되지 않는다. 해결할 수 있는 방법이 WorkManager인 것을 알고 있지만 그 때는 시간에 쫓겨 할 수 없었다.그래도 이번에 시간을 들여 WorkManager를 알아가고 적용..

Android/Kotlin 2024.04.25

최종 팀플 개발 3,4일차

이러다가 일주일치 몰아서 쓸 거 같아서 3,4일차만 후다닥한다. 1. setOnCheckedStateChangeListener 사용법을 알았다. 이게 ChipGroup을 컨트롤할 때 사용한 건데 setOnCheckedChageListener랑은 사용법이 다르더라. 그래서 사용한 방법은 두번째 파라미터의 들어가는 값이 선택된 Chip 리스트라는 걸 가지고 필요한 처리를 했다. cgFilterTitle1Header1.setOnCheckedStateChangeListener { group, checkedId -> selectedOptions[0].clear() for (id in checkedId) { val selectedOption = filterOptions[0].first { it.first == id..

Android/StoreInfo 2024.02.28

최종 팀플 개발 2일차

1. 뷰모델 팩토리 적용 방법 지금까지는 뷰모델 팩토리를 만들 때 파일을 따로 만들었는데 이번에 새로운 방법을 알게 되었다. 바로 뷰모델 안에 companion object로 뷰모델 팩토리를 만드는 변수를 선언하는 방법이다. viewModelFactory 스코프 함수와 initializer 스코프 함수를 사용한다. companion object { val factory = viewModelFactory { initializer { val application = (this[APPLICATION_KEY] as SeoulPublicServiceApplication) val container = application.container InterestRegionSelectViewModel( regionPrefR..

Android/StoreInfo 2024.02.27
반응형