본문 바로가기

안드로이드

(166)
[AOS] 무한 롤링 배너 구현 일정 아이템들이 무한으로 흐르는 배너를 구현하게 됐습니다. 위 앱은 솔드아웃 앱으로 상단 프로모션 밑에 각종 상품들이 유저 액션 없이도 흐르는걸 볼수 있는데 이와 같은 UI를 Recyclerview를 이용하여 구현 했습니다. | ListApdater.kt 다른 무한 스크롤과 동일하게 실제로 무한은 아니지만 무한처럼 보이게 하기 위해 ItemCount를 'Int_MAX_VALUE'로 설정합니다. 'position % items.size' 로 매 아이템이 반복됩니다. class ListAdapter: RecyclerView.Adapter() { private val items = listOf() inner class ItemViewHolder(private val binding: ItemBinding): R..
[AOS] Kotlin 확장 함수 자바에서 기존에 생성되어 있는 클래스에 새로운 매소드를 추가하려면 해당 클래스를 상속해서 사용하는 방법밖에 없지만 코틀린은 확장 함수를 사용해 상속없이 가능합니다. 예를 들어 Long타입의 현재 시간을 '2021.10'과 같이 변경해야할때 아래처럼 Utils 클래스의 메소드를 만들어 재사용하곤합니다. class Utils{ fun convertCalendarDate(tme: Long, format: String): String{ return SimpleDateFormat(format).format(Date(tme)) } } 확장 함수로 구현했을 경우 아래처럼 바뀝니다. fun Long.convertStrDate(format: String): String = SimpleDateFormat(format).f..
[AOS] Android Studio Fox Slow 및 한글 깨짐 해결 Android Studio나 그래들 버전을 잘 안올리는 안좋은 습관이 있다보니 새 프로젝트를 시작하거나, 새 노트북에 설정할때 버전을 올리곤 했습니다. 그런데 이번에 Fox로 업데이트 하면서 주기적으로 업데이트 해야한다고 깨달으면서 속도 이슈를 해결한걸 공유드립니다. | 업데이트전 버전 진행하는 개인 플젝들이 여러개 라는 핑계로 업데이트 내역들을 살피거나 하지 못해, 낮은 버전들을 사용하고 있었습니다. gradle : 4.0.2 Android Studio : 4.1.2 버전 ( 추정 ) Kotlin : 1.3.21 앞으론 주기적으로 업데이트 이력을 살펴보고 공부하고 반영하도록.. 할겁니다. 물론 협업을 하다보면 다른 사람들과 함께 의견을 조율하는게 중요하지만 설득할 이유를 찾아서 설득하도록 할겁니다. |..
[AOS] Navigation Component Navigation Component는 하나의 Activity에 다수 Fragment를 뒀을때 화면 이동을 도와줍니다. 기존에 Fragment Manager을 사용해서 Fragment들의 스택들과 Fragment별 전환 및 전환 애니메이션을 관리하던 방법은 다소 복잡해서 사용이 꺼려졌었는데 'Navigation Component'를 통해 관리하면 보다 직관적이고 간편하게 관리할 수 있습니다. 참고 자료 ※AndroidStudio 버전은 3.3 이상이어야 합니다. | build.gradle def nav_version = "2.3.5" implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androi..
[AOS] 인앱 결제 라이브러리 4 적용 및 AIDL 마이그레이션 ( + 광고 제거 기능 구현 ) ※신규앱의 경우 8월부터, 업데이트의 경우 11월부터 Billing Library 버전 3 이상을 사용해야 업로드 가능합니다. 마이그레이션 하시는 분들중 뭘 지워야할지 헷갈리신다면 기존에 추가한 모든걸 삭제해도 무방합니다. 간혹 저처럼 어떤걸 추가 했는지 헷갈리시는 분들을 위해 간략하게 기술하겠지만 그래도 헷갈리신다면 제가 작성한 기존 포스팅을 참고해주세요. 신규 적용 이신분은 스크롤을 조금만 내리셔서 '신규 라이브러리 적용'부터 참고해주세요 ! | 구버전 소스 제거 aidl 소스 파일 제거 기존에 사용중인 결제 관련 코드를 제거합니다. ( ex. labHelper..등등 ) 저의 경우 아래 사진에 있는 파일들이 AIDL ( 구 버전) 관련 파일들인데 모두 삭제하겠습니다 ( aidl 폴더와 util 폴더..
[Android] Edittext 천단위 콤마(,) 설정 - 소수점 포함 Edittext에 숫자를 입력할때 TextWatcher를 이용해 천단위 콤마를 찍을수 있습니다. 관련 예제는 많지만 소수점을 사용할 경우에대한 내용은 없어서 작성했습니다. | 예제 소스 선 예제소스 후 설명 class PriceEditText(context: Context, attrs: AttributeSet?) : AppCompatEditText(context, attrs) { private var inputText = "" init { addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable?) { } override fun beforeTextChanged(s: CharSequence?, start:..
안드로이드 웹뷰 쿠키 동기화 이슈 웹뷰에서 저장된 쿠키가 삭제되는 경우가 발생합니다. 이런 경우 쿠키 매니저를 사용해서 동기화 해줘야 합니다. 구글링을 했을때 CookieSyncManager와 CookieManager 두가지를 사용한 예제들이 많은데 CookieSyncManager는 api21 부터 deprecated 됐기 때문에 CookieManager를 사용하셔야 하고 자세한 내용은 제 포스팅을 참고해주세요. [안드로이드/Android] 쿠키매니저 다루기 이번 포스팅의 주제는 쿠키매니저 입니다. 쿠키란? 웹 사이트에 방문한 사용자의 디바이스에 저장해 놓은 작은 데이터 파일입니다. 주로 사용자가 사이트를 재방문 했을때 편리함을 제공하기 superwony.tistory.com | 쿠키 보존 쿠키 저장 시점을 알수 없는 앱에 입장으로써 웹..
Webview 파일 다운로드 구현하기 웹뷰 관련 포스팅 Webview내 window.open 대응 하기 ( 새창 열기 에러 ) Webview 이미지 업로드 구현하기 Webview내 카카오톡 공유하기 에러 / 해결방안 Webview 쿠키 매니저 다루기 Webview 설정값 웹뷰에서 다운로드 기능을 별도로 구현해야 합니다. webview.setDownloadListener { url, userAgent, contentDisposition, mimetype, contentLength -> //.. 구현 } 위 코드 처럼 웹뷰에 리스너를 추가해 다운로드 타입으로 설정된 버튼등을 클릭했을때 별도 처리를 해야합니다. 엑티비티에서 사용중인 webview에 설정해도 되지만 웹뷰를 커스텀뷰로 생성해서 공통적으로 사용하면 설정 값이 변경되거나 추가할때 편리..