일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Kotlin
- 스튜디오
- 깃헙
- GIT
- Retrofit
- coroutine
- image
- WebView
- 유튜브
- 레트로핏
- 코틀린
- Android
- build
- RecyclerView
- Github
- 웹뷰
- 의존성주입
- error
- ADB
- 안드로이드스튜디오
- 코루틴
- Gradle
- studio
- viewpager
- 에러
- dart
- 안드로이드
- MVVM
- 안드로이드 스튜디오
- 안스
- Today
- Total
목록안드로이드 (149)
코딩하는 일용직 노동자
기존 안드로이드 로컬 데이타베이스를 사용할땐 SQLite를 이용했습니다. 하지만 사용방법이 매우 불편하기 때문에 ORMLite 나 greenDAO 같은 별도의 ORM(Object-relational mapping)을 이용하거나 Realm을 이용합니다. Room은 SQLite를 편리하게 사용하도록 구글이 공식적으로 내놓은 ORM이라고 생각하시면 됩니다. (왜 이걸 이제야 내놓는지... 만들어줄거면 진작에 나왔어야 하는거 아닌가 싶으ㄴ... -_-;;) 이번 포스팅에선 Room을 어떻게 사용하는지 기초적인 방법을 확인해보겠습니다. #1. Room의 기본구성요소 Entity : 데이타베이스의 테이블 이라고 생각하면 됩니다. DAO(Data Access Object) : 데이타베이스를 조작하는 함수들을 여기서 ..
리사이클러뷰를 구현하기 위해 어댑터를 만드는 과정은 다소 귀찮거나 복잡하다고 느낍니다. 특히나 뷰타입을 다르게 꾸며줘야 할때는 더더욱... Kotlin 환경에서 리사이클러뷰 어댑터를 쉽고 빠르고 편리하게 사용할 수 있게 도와주는 라이브러리가 나왔습니다. https://github.com/ibrahimyilmaz/kiel ibrahimyilmaz/kiel Kotlin way of building RecyclerView Adapter 🧩. You do not have to write RecyclerView Adapters again and again and suffer from handling of different view types. Kiel will help you. - ibrahimyilmaz/kie..
안드로이드 개발중 Log를 많이 이용하게 됩니다. 예전에는 Log를 관리하는 클래스를 직접 만들어서 관리했는데 최근에는 라이브러리를 많이 이용합니다. 2년정도 Timber를 이용했습니다만 이쁜 Log 라이브러리가 발견해서 이렇게 포스팅 해봅니다. https://github.com/orhanobut/logger orhanobut/logger ✔️ Simple, pretty and powerful logger for android. Contribute to orhanobut/logger development by creating an account on GitHub. github.com
그동안 안드로이드 Java 에서 비동기 작업을 할때 많이 사용되던 AsyncTask 가 Android11 에서 deprecated 되었습니다. Kotlin 으로 개발할때는 Coroutine 을 사용하기 때문에 큰 불편함이 없겠지만, Java로 개발할 경우에는 AsyncTask 를 대체할 방법을 찾아야 합니다. 구글링을 해보면 AsyncTask 를 대체하기 위해 RxJava 를 이용한 처리를 추천하는 포스팅이 많습니다만, Rx에 익숙하지 않은 저로써는 다른 방법을 찾고 싶었습니다. 소개해드릴 비동기처리 라이브러리는 Needle 입니다. Java로 만들어진 안드로이드 멀티쓰레드 라이브러리입니다. 소스를 살펴보니 Executor와 Runnable 을 사용해서 만들어져 있습니다. 나온지 꽤 오래되었고 v1.0...
안드로이드 웹뷰에서 불러온 html 페이지의 소스를 얻어내는 방법. fun initView() { webView.settings.apply { this.setSupportMultipleWindows(false) // 새창 띄우기 허용 this.setSupportZoom(false) // 화면 확대 허용 this.javaScriptEnabled = true // 자바스크립트 허용 this.javaScriptCanOpenWindowsAutomatically = false // 자바스크립트 새창 띄우기 허용 this.loadWithOverviewMode = true // html의 컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조정 this.useWideViewPort = true // html의 viewpo..
# 들어가며 안드로이드의 애니메이션은 구현하기가 까다롭습니다. 특히 translate 애니메이션을 한 후 클릭이벤트를 확인해보면 엉뚱한 현상을 경험하게 됩니다. translate 애니메이션으로 위치를 이동시키면 이동한 곳에서 클릭이벤트가 발생하는것이 아니라, 이동하기 전 위치에서 클릭이벤트가 발생합니다. # 해결방법 1 AnimationUtils 클래스의 loadAnimation 함수를 이용해서 구현할 경우 이런현상을 경험하게 됩니다. 저의 경우 이 문제를 해결하기 위해 처음에는 똑같이 생긴 뷰를 애니메이션이 끝나는 위치에 숨겨놓았다가 애니메이션이 끝나면 원래의 뷰를 감추고 새로운 뷰를 노출하는 식으로 해결했습니다. 하지만 이 방법은 깔끔하지 못합니다. 불필요한 뷰를 하나 더 만들어야 하고, 이벤트를 받..
페이스북 SDK를 사용하기 위해 페이스북 개발자 사이트에 앱을 등록시킬때 key hash 를 입력해야 합니다. key hash 는 개발시 사용되는 디버그 keystore 로 만든 키와 실제 마켓등록용 앱에 사용될 keystore로 만든 키를 등록할 수 있습니다. 사이트에는 여러개의 키를 등록시켜도 됩니다. 안드로이드 스튜디오에서 Terminal을 열고 아래 내용을 입력합니다. keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64 실제 마켓등록용 앱을 만들때 사용되는 keystore 를 이용해 hash키를 만듭니다. 우선 alias 와 keystore 의 경로를 알아야..
fun goEmail() { startActivity(Intent(Intent.ACTION_SEND).apply { selector = Intent(Intent.ACTION_SENDTO).apply { data = "mailto:".toUri() } putExtra(Intent.EXTRA_EMAIL, arrayOf("mail@email.com")) putExtra(Intent.EXTRA_SUBJECT, "") putExtra(Intent.EXTRA_TEXT, "") }) }
안드로이드 status bar 의 컬러값을 변경하는 방법입니다. 액티비티의 onCreate 에서 처리하면 됩니다. status bar 의 컬러를 흰색으로 바꿔보겠습니다. /** * 200625 * Status Bar 를 흰색으로 처리한다. */ window.statusBarColor = Color.parseColor("#ffffff") statusBarColor 를 하얀색으로 하면 status bar 의 텍스트도 흰색이라 안보입니다. 텍스트는 검정색으로 바꾸기 위해 아래 코드를 추가합니다. window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
# 들어가며 하이브리드 앱에서 웹뷰로 열린 웹문서에 태그가 있습니다. 사진을 첨부하기 위한 기능입니다. iOS는 앱에서 별도의 처리가 없어도 사진을 선택하면 웹으로 사진이 잘 등록됩니다만, 안드로이드에서는 사진을 선택해도 웹으로 등록이 안됩니다. 이번 포스팅에서는 태그에 카메라 or 사진 갤러리를 표시하고 사진촬영이나 이미지 선택후 웹에 이미지를 넘겨주는 처리를 알려드리겠습니다. 우선 WebChromeClient() 를 상속받은 커스텀 클래스를 만들고 아래의 함수를 오버라이드 해줍니다. class CustomWebChromeClient(val activity: AppCompatActivity) : WebChromeClient() { var filePathCallbackLollipop: ValueCallb..