안드로이드 (166) 썸네일형 리스트형 [And/Kotlin] Numberpicker를 활용한 생년월일 선택 뷰 만들기 최초 작성 : 2020/10/13 numberpicker input type 수정 : 2020/10/23 numberpicker editText 값 가져오기 포스팅 추가 : 2021/03/23 기본적으로 제공하는 Datapicker와 DatepickerDialog를 활용해서 날짜 선택 화면을 만들 수 있습니다. spnnier 와 calendar 2가지중 적합한 UI를 선택할 수 있습니다. ( 개인적으로 이쁜건 spnnier라고 생각하고 조금 더 신경쓴(?) 느낌입니다. ) datepickermode와 calednarViewshown 옵션으로 간단하게 spinner와 calendar 설정이 가능하다. 하지만 간혹 커스텀된 UI로(아래 사진 참고) 날짜를 선택해야할 경우가 있는데 그럴땐 Numberpicke.. [Android] Webview내 카카오톡 공유하기 에러 / 해결방안 앱내 웹뷰에서 카카오톡으로 공유하는 기능이 포함되어 WebviewClient()에 intent 기능을 수행하도록 처리 했습니다. 웹뷰에서 다른 앱을 실행시킬때 intent://로 시작해 보통 아래 코드와 같이 적용하면 문제 없이 작동했었습니다. class BaseWebClient(val context: Context) : WebViewClient() { var isHistoryClear = false override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { if(url != null){ when{ url.startsWith("intent://") -> { try { val intent = Intent.parseUri(ur.. Firebase Crashlytics Sdk 업데이트 어느날 Firebase Console에 들어가니깐 2020년 11월 15일 이후에도 Firebase Console에서 오류보고서를 확인 하려면 sdk를 업그레이드 하라고 알림이 떴습니다. Crashlytics를 너무 잘 이용하고 있기 때문에 요구에 맞춰 업데이트 하도록 합니다. 원문은 링크를 참고해주세요 신규로 Crashlytics를 추가하시는 분은 제 포스팅을 참고해주세요 먼저 FirebaseConsole에서 프로젝트를 생성하지 않으신분들은 프로젝트를 생성하시고, 이미 생성하신 분들은 google-services.josn 파일을 다운 받으세요.( 파일은 프로젝트 콘솔 메인에 처음 진입했을때 우측 하단에서 받을 수 있습니다. ) 다운로드 받으셨을때 이미 다운로드된 파일로 인해 이름에 (2) 가 붙지 않도.. [오류 해결] Fragment already added and state has been saved 게시판 UI를 개발하면서 발생한 문제에대한 해결방안 복기와 공유하기 위해 포스팅합니다. 구현한 UI는 간략하게 Activity에 Tablayout과 viewpager를 갖고 있고 viewpager는 recyclerview를 갖는 fragment들로 이루어져 있었습니다. Activity에 진입시 게시판 메뉴를 호출하고, 메뉴 갯수만큼 페이지를 갖는 viewpager를 셋팅 했고 각 메뉴별 게시글들을 비동기 호출로 응답받아 기존에 생성된 fragment속 recyclerview를 업데이트 시켰습니다. ▶ 메뉴 호출 > fragment 생성 > 메뉴별 게시글 호출 > 각 recyclerview 업데이트 게시판의 메뉴가 많아서 viewpager는 양쪽 2개씩만 호출 하는 상황이었고( 많이 그릴수록 버벅임- 앱의.. AAC koin 적용하기 Koin? DI (= Dependency Injection) 라이브러리로 Dagger 와 같지만 학습 곡선이 낮은 편입니다. A클래스에서 B클래스를 사용하는 경우 의존성을 갖는데 B 클래스가 변경되는 경우 B클래스를 사용하는 A 클래스에서도 코드를 수정해야 합니다. 뿐만아니라 B 클래스를 사용하는 모든 클래스에서 수정 해야하는 번거로움이 발생하는데 DI 라이브러리의 경우 코드를 직접 수정하지 않아도 적절한 의존성을 주입해 줍니다. 의존성 예제 class B{ { ... class A{ var b = B() } 위 예제는 클래스 A가 B에 의존성을 갖는다라고 얘기할 수 있습니다. class B( var count : Int){ } class A{ var b = B(5) } B클래스의 생성자 파라미터가 변경.. [Android]AlarmManager를 이용해 위젯을 업데이트 하자! 시간 단위로 화면을 보여주는 일정 위젯의 경우 일정 시간마다 업데이트 해야 합니다. 만약 30분 이상의 텀을 갖고 위젯을 업데이트 한다면 편하게 provider를 이용해서 주기적으로 업데이트 하는 방법을 이용하시고 30분이하나 불규칙하게 업데이트 하신다면 AlarmManager를 이용해서 업데이트 해보세요 위젯 관련 다른 포스팅 [안드로이드/Android] 위젯 만들기 [Android] Coroutine + 위젯 업데이트 하기 공통 알람 등록 private fun startAlarm(context: Context, alarmId: Int, intent: Intent, intervalTime: Long) { var alarmManager = context.getSystemService(Context.ALA.. 카카오 애드핏 적용 후기 회사 일과 병행해서 개인앱을 개발해 3개의 토이앱을 출시했지만 현재는 1개만 운영중입니다. 애드몹을 붙여서 간간히 수익을 내고 있었는데 광고 플랫폼을 애드핏으로 변경하면서 발생한 긍정적인 후기 공유합니다! 적용 방법은 카카오 에드핏 포스팅을 참고해주세요. 운영 중인 앱은 17년도에 첫 출시해서 간간히 업데이트 하고, 사용자들이 피드백 준 사항들은 적극 반영했는데 점점 증가하더니 요 근래 많이 증가 해서 3천명 정도가 활성 유저로 잡혀 있습니다. (*존버는 승리한다!) 앱의 성격상 설치 수는 많지만 삭제하는 유저들이 많아 활성 유저수는 작아요, 그리고 채팅 앱인줄 알고 설치하셨다가 별점 한개를 주시는 분들도 많아요 흙흙 그래도 좋게 남겨주시는 분들도 많아 힘을 얻고 있습니다. ( 감사링 ) 궁금하신분은 링.. Remote Config를 사용해서 서버 없이 업데이트 버전을 체크하자 : 안드로이드 많은 개발자들이 취미겸 1인 개발을 진행하는데 비용 부담이 큰 서버를 운영하기엔 어렵습니다. 그래서 구현을 포기해야 하는 기능들도 많이 있는데 뒷북 수준이지만 Firebase 에서 제공중인 Remote Config를 사용하면 일부 기능들은 구현이 가능합니다. 간단한 예로는 신규 기능이 출시되서 이전 버전을 사용하는 유저들에게 새로운 버전을 안내하고 싶은 경우 Remote Config를 사용하면 됩니다. Remote Config는 무료로 제공되지만 값을 가져오는 간격은 12시간을 권장합니다(기본값) 기본적인 구조는 키/값 구조이지만 임의의 유저들에게만 값을 전달할 수 있고 json 구조로 복잡한 구조의 데이터 전달도 가능합니다. 이를 활용해서 업데이트 버전 체크 뿐만 아니라 다양한 기능을 무료로 구현할 수.. 이전 1 ··· 10 11 12 13 14 15 16 ··· 21 다음