안드로이드: 196개의 글
안드로이드 개발을 하다보면 progress를 사용하여 현재 데이터를 처리중이라는 것을 알려야할 때가 있다. 다음은 우리가 흔히 볼수 있는 progress를 사용하는 방법이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Colored by Color Scripter cs 위의 코드는 왼쪽과 같은 결과를 나타낸다. xml 디자인을 하다보면 다양한 뷰를 추가해아하고 progress의 경우 다른 뷰보다 최상위로 표현하기위해 가장 하단에 선언하여 사용한다. 하지만 좀 더 직관적이면서 심플하게 xml에 적용하고 싶었고 custom view를 만들어 사용하게됬다. 다음은 custom view를 이용한 progress wrapper를 만들어 사용한 예제다. custom_progre..
바코드는 문자와 숫자를 막대와 공백으로 표시함으로서 상품관리를 편리하게 하는 것으로 가장 간단하게 구현하는 방법에 대해 알아보겠습니다. gradle에 다음의 라이브러리들을 추가합니다. //바코드 읽기 implementation 'com.budiyev.android:code-scanner:2.1.0' //바코드 쓰기 implementation('com.journeyapps:zxing-android-embedded:3.6.0') { transitive = false } zxing에서 제공하는 바코드 유형은 17개정도인데 아래는 QR_CODE를 생성하는 예제입니다. 이 외에도 CODE_39나 CODE_93등의 바코드 유형도 생성가능합니다.val barcodeEncoder = BarcodeEncoder() va..
프로젝트를 진행하던 중 웹뷰의 스크롤에 따라 toolbar를 collapse, expand를 하는 기능을 만들게 되었다.안드로이드에서는 web view의 스크롤을 감지하는 Listener를 제공하는데 다음과 같다.webView.setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY -> // insert your code }하지만 문제가 있었는데 위의 기능은 API 23부터 제공하는 기능이었다.그렇다면 23이전에서는 어떻게 스크롤을 탐지할 수 있을까? 구글링의 결과 끝에 원하는 답을 찾을 수 있었다. class CustomWebView : WebView { private var oldY: Float = 0.toFloat() priv..
Room을 이용하여 내부에 대량의 데이터를 저장할 경우. 저장된 데이터를 페이징처리를 통하여 효율적인 리스트를 표현하는 것이 좋다. Dao@Query("SELECT * FROM table") abstract fun selectList() : DataSource.Factory페이징처리 부분 val config = PagedList.Config.Builder() .setInitialLoadSizeHint(20) //최초 로드사이즈는 20개 .setPageSize(10) // 페이징당 10개 .setPrefetchDistance(10) // 10개마다 다음페이지를 미리불러오기 .setEnablePlaceholders(true) .build() var pagedItems = LivePagedListBuilder..
예전에 우리가 자바에서 사용하던 방법SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = preferences.edit(); editor.putString("key","value"); editor.apply(); 코틀린으로 사용하면?private val pref = PreferenceManager.getDefaultSharedPreferences(context) @Suppress("IMPLICIT_CAST_TO_ANY") fun get(key: String, defaultValue: T): T { return when (defaultValue) {..
이글은 windows10 / android studio 3.3.1을 기준으로 작성되었습니다. 안드로이드 에뮬레이터를 사용하려고 할 때 다음과 같은 에러가 출력이 되었다. x86 emulation currently requires hardware acceleration x86에뮬레이터를 쓰려면 하드웨어 가속이 필요하다는 것인데. 아래와 같이 박스친 툴을 설치하면 된다. 하지만 설치 한 이후에도 계속 같은 오류가 발생한다면 BIOS설정에서 Virtualization Technology 기능을 활성화 해야한다. 또한 Windows 기능 켜기/끄지 설정에서 Windows 하이퍼바이저 플랫폼이 활성화 되있는지도 체크하자. 완료가 되었다. 이제 즐겁게 개발하면 된다. 출처: https://akaisun.tistor..
안드로이드에서 gradle에 라이브러리를 추가해서 사용을 하다보면 경우에따라 최신버전을 사용해야하는 경우가 있습니다. 일일히 github에서 라이브러리 버전을 체크한다던지 안드로이드 스튜디오에 있는 library dependency를 검색해서 확인하는 방법이 있지만 검색어에 따라 결과가 너무 많이 뿌려지기 때문에 불편함이 있었습니다. 그러다 VersionChecker 플러그인을 발견하게되었고 소개해드리고자합니다. Seetings -> Plugins으로 이동하여 version checker라고 입력을 합니다. 검색결과에는 나타나지 않습니다. search in repositories를 눌러봅니다. 검색결과가 하나 나타납니다. install을 눌러 설치합니다. 그리고 안드로이드 스튜디오를 restart 해주세..
우리는 흔히 디버깅을 위해서 Log를 쓰곤 합니다.Log는 디버깅을 하는데에 있어서 치유제가 되지만 때론 독이되기도 합니다.로그를 비활성화 시키지 않으면 배포된 어플리케이션에서도 다양한 Log를 통하여 뜻하지 않은 정보를 유출시킬 수 있습니다.그리고 필자가 이제까지 로그설정에 대해 심각한 오류를 가지고 있었고 바로잡았습니다.보통 우리는 gradle에 각종 설정값들을 입력합니다. buildTypes { release { debuggable false } debug { debuggable true } } buildTypes에 realese와 debug 모드로 나누어 사용하는 모습입니다. 필자는 debuggable이 디버그의 활성화 유무를 설정하는 것이라는 오해를 하였습니다.실제 debuggable의 기능은 ..
This app is using a lightweight version of the Google Mobile Ads SDK that requires the latest Google Play services to be installed, but Google Play services is either missing or out of date. 안드로이드 4+에서 애드몹과 관련해 안보이는 현상이 일어나서 구글링을 해보니 일종의버그라고 한다. 참고페이지http://stackoverflow.com/questions/37330290/no-admobs-displayed-on-2-3-but-displayed-with-android-4-with-google-play-servic 해결방법이 없는가 싶었는데 해당어플의 캐시..
No acceptable module found. Local version is 0 and remote version is 0. this problem has due to there is no playstore in phone of user when you using firebase libraryif you guiding to install playstore to user. it is would be solved.if already installed playstore, have to version update 해당 폰에 플레이스토어가 없어서 생기는 문제다.firebase를 적용하면서 오류가 발생했는데 이전의 구형폰들은 안드로이드 마켓이 깔려있기 때문이다.플레이스토어를 설치하도록 유도하여 플레이스토어가 설..