본문 바로가기

반응형

Android.log

RecyclerView 지나간 높이 구하기 RecyclerView를 사용하여 리스트 형태의 화면에서 특정 포지션이 상단에 위치 했을때 뭔가를 처리(상단에 고정된 뷰를 보여준다던지..) 하기 위해서 RcyclerView.OnScrollListener 에서 LayoutManager.findFirstVisibleItemPosition 메서드로 보여지는 첫번째 포지션의 정보를 가져와서 처리한다. override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { super.onScrolled(recyclerView, dx, dy) if (layoutManager.findFirstCompletelyVisibleItemPosition() == SOME_POSITION) { //Do Somethin.. 더보기
[이슈] Stetho 로 Sqlite 쿼리 실행 안되는 문제 Sqlite 쿼리 만들 일이 생겨서 늘 하던대로 Stetho로 쿼리를 테스트 해보려고 쿼리를 만들고 엔터를 쳤는데...잉?????????????? 쿼리 명령어가 먹지 않고 에디터에 그냥 엔터가 입력되고 있었습니다. 가이드를 다시 확인해 보았으나 보았으나, 이미 정상적으로 이용하고 있었다... 그래서 검색을 해보니 따란...https://github.com/facebook/stetho/issues/634 이미 관련해서 Stetho에 이슈가 리포트 되었고, 최신 크롬 버전인 72 이상에서 문제가 되는 것이다. 이슈에 제보로는 74 Canary 버전에서도 안되는거 보이며, 71로 다운그레이드를 해야 한다라는 해결책 밖에 보이지 않는다.ㅠ.ㅠ Stetho 에서 업데이트가 필요해 보이나, Stetho 도 한참 업.. 더보기
코드로 View 에 id 지정하기 RelativeLayout 이나 ConstraintLayout 으로 커스텀뷰를 만드는 경우 직접 생성한 뷰로 위치 관계를 지정하는 경우 id가 지정되어 있지 않아서 위치를 정의 할 수 없습니다. xml 상에서 android:id 로 지정한 경우 빌드 되면서 R.java에 자동으로 id 값이 생성 되지만, view 를 직접 생성하는 경우 setId() 메서드로 직접 ID 값을 지정해 주어야 합니다.id 값으로 임의의 1,2,3 또는 System.currentTimeMillis() 같이 생성되는 임의의 숫자를 넣어 줘도 동작은 되지만 뭔가 찝찝합니다. 그래서!! 구글에서 메서드를 만들어 줬습니다. 하지만 SDK 17 이상에서만 쓸 수 있습니다. 그래서!! 구글에서 appCompat-v7 에도 추가를 해주었습.. 더보기
Looper, Message, Handler 동작 Looper Looper.prepare() 에서 스레드 별로 Looper를 생성 한다, Looper 생성자에서는 Looper에서 가지는 MessageQueue도 생성한다. 생성된 Looper는 ThreadLocal sThreadLocal 에 저장된다. Looper.loop() 를 호출 하면 sThreadLocal 에서 Looper를 꺼내와서 사용한다. MainLooper는 ActivityThread 의 main() 함수에서 Looper.prepareMainLooper() 로 생성 하였으므로, Looper.getMainLooper()를 호출 하여 가져올 수 있다.loop() 메서드 에서는 루프를 도며 MessageQueue 에서 Message를 가져와서 msg.target.dispatchMessage(ms.. 더보기
안드로이드 메인클래스 안드로이드 메인클래스 android.app.ActivityThread 에서 main() 메서드를 호출 하면서 애플리케이션이 실행된다. main() 메서드에서는 Looper.prepareMainLooper(), Looper.loop() 로 Looper를 준비하고 구동 시킨다. sMainThreadHandler 에서 애플리케이션의 다양한 이벤트를 처리한다. loop() 메서드는 무한루프와 blocking 으로 동작 하므로 main() 메서드는 프로세스가 종료 되기 전까지 종료되지 않는다. public static void main(String[] args) { ... Looper.prepareMainLooper(); ActivityThread thread = new ActivityThread(); threa.. 더보기
[Kotlin] RecyclerView 샘플 안드로이드 사용하면서 가장 많이 사용하는 위젯 중 하나는 RecyclerView 일 것 입니다. 자바로 손 쉽게 만들던 RecyclerView를 막상 Kotlin 공부하면서 구현하려니 순간 막막해지는 경험이 있어서 샘플을 정리 하려 합니다. 1. 샘플이니 Activity에 RecyclerView만 보여줄 것 입니다.. activity_main.xml 2. Activity 에서 kotlin extensions을 사용하여 별도의 findViewById 없이 View를 사용할 수 있습니다.RecyclerView 에 Adapter 와 LayoutManager를 지정해 줍니다. 자바에 비해서 참 심플해 졌습니다. MainActivity.ktclass MainActivity : AppCompatActivity() .. 더보기
[31 Days Of Kotlin - 1일차] let, apply, with, run 코틀린 학습 중에 Android Developer 트위터에서 게시한 [31 Day Of Kotlin] 을 학습 하고 있습니다. (https://twitter.com/i/moments/980488782406303744) 1일차로 let, apply ,with, run 에 대해서 정리 하겠습니다. 코틀린에서 기본으로 지원하는 기능으로 잘 사용하면 간결하고 간편하게 코드를 작성 할 수 있다. 각각 함수 안에서 this와 it 이 바라보는 값과, return value 에 대해 주의깊게 봐야 한다. 안드로이드 스튜디오에서는 친절하게 함수 안에서 사용할 수 있는 변수 들과 리턴되는 정보에 되해서 가이드 해주고 있다. 1. let this - 함수가 선언 된 클래스를 나타냅니다it - let 을 호출한 변수를 가르.. 더보기
New Components in Design Support Library v28 Material Design을 도와주기 위해 제공 되었던 Android Disign Support Libray가 v28이 공개 되었습니다. 현재는 alpha3 버전으로 사용할 수 있습니다. v28 에서 어떤 컴포넌트가 추가 되었고 어떻게 사용 되는지 알아 보겠습니다. 현 시점 최신 버전인 alpha3 버전으로 작성합니다. 업데이트 되면서 api들이 바뀌는 부분이 보이고 있습니다. 준비 과정1. App 레벨의 build.gradle 에 정의implementation 'com.android.support:design:28.0.0-alpha3' 2. Material Style 정의 이제 준비 되었으니 각각의 컴퍼넌트를 추가하면서 살펴 보겠습니다. Material Button Icon 이미지를 텍스트와 함께 넣.. 더보기
ImageView ColorFilter 로 이미지 색변경하기 이미지 선택,클릭 효과를 주기 위해서 xml selector 로 처리 하거나 코드 상으로 리스너에서 직접 설정을 합니다. 주로 가이드 상 이미지를 미리 제공 받아서 리소스를 추가된 상태로 작업을 하였습니다.. 이미지를 다운로드 받아서 써야 하는경우에 어떻게 처리 해야 할까요?? 상태에 따라 이미지를 변경 하려면 변경할 이미지를 미리 다운로드 받지 않고 사용 하려면 다운로드, 캐시 등의 문제로 동작이 어색 할 수 있습니다. ImageView 에 준비된 ColorFilter 를 사용하면 쉽게 이미지 컬러를 변경 처리 할 수 있습니다. https://developer.android.com/reference/android/graphics/PorterDuff.Mode PorterDuff.Mode 에 정의된 값을 .. 더보기
[Fresco] gif 로드 시 java.lang.IllegalStateException: Width or height is too small. 이슈 Fresco 1.5.0에서 특정 gif 이미지 로드시 [java.lang.IllegalStateException: Width or height is too small.] 에러 발생 하며 앱이 강제 종료 되는 문제가 리포트 되었다. 확인해 보니 문제되는 gif 파일의 속성을 보면 전체 헤더의 width, height 보다 각각 이미지(Frame) 의 width, height 값이 큰 경우 발생하고 있다.gif 속성은 아래와 같은 형식으로 되어 있다.xxxxx.gif ㄴ width, ㄴ height... Frame1 ㄴ width ㄴ height Frame2 ㄴ width ㄴ height..... 이 이슈는 Fresco Github에 리포트 되어, 현재 수정된 것으로 보인다. (https://github.c.. 더보기

반응형