본문 바로가기

android

[Android] ImageView를 Width 길이에 맞춰 Height 조절 ImageView에 이미지를 그냥 넣을 경우, 화면 사이즈에 맞게 이미지가 자동으로 늘어나면 좋으려만,그렇지 않습니다. 딱! 이미지 사이즈 만큼만 뿌려주게 되지요. 그럼 어떻게 하면 될까요???아주 간단 합니다. 아래 와 같이 adjustViewBounds를 true로 해주면 됩니다. 이렇게 해주면, 이미지 width는 화면 사이즈 만큼 늘어나고 height 그에 맞게 설정이 됩니다. 참고하세요. 더보기
[Android] 권한 승인 시, Activity가 깜빡이는 현상. (Blink) Android M 버전 부터 권한 때문에 다들 이슈가 많을 겁니다. 이중 경험 했던 한 이슈를 공유하고자 합니다. M 버전을 대응 하기 위해 승인 팝업을 띄웠는데요.팝업에서 승인을 하면, 백그라운드에 있는 Activity가 Refresh 되면서 깜빡이는 현상이 발생 합니다. 원인이 무얼까 아무리 찾아봐도 소스상에는 큰 문제가 없는 것 같고,카톡은 깜빡이는데 깜빡이지 않는 앱들도 있으니 골치가 아팠지요. 해결책은 아주 간단했습니다. build.gradle 에 targetSDKVersion 을 23으로 설정 하면 됩니다. 23 하위 버전으로 설정 하게 되면 Refresh가 되고,23 버전 부터는 자연스럽게 동작이 이뤄집니다. 참고하세요. 더보기
[Android] View translate animation 뷰를 이동 시키는 애니메이션을 구사할 때, 아래와 같은 형태를 먼저 생각하게 됩니다. 1. translate xml을 이용하여 애니메이션을 지정한다.2. xml로 Animation 클래스를 생성 한다.3. 애니메이션을 넣고자 하는 View에 설정 한다.4. Animation을 start 시킨다. 위와 같은 형태는 복잡할 뿐만 아니라 버그나 예외 상황이 너무 많이 발생 합니다.역시나 구글 형님들이 좋은 API를 만들어 두었네요. mView.animate().translationY(500).withLayer();위와 같이 하면 mView 라는 View를 500px 아래로 내리는 애니메이션을 실행 해라. withLayer 함수를 함께 사용하면 mView가 그 자리에 고정이 됩니다. 만약 아래 두 함수를 번갈아.. 더보기
[Android] Binary XML file line #1: Error inflating class Binary XML file line #1: Error inflating class 위 에러 정말 포괄적인 에러 지요.그냥 간단하게 xml에 있는 View들을 초기화 하는데 에러가 발생 한다!!그 에러는 2가지 형태로 축약하시면 될듯 합니다. (제경험상) 1. xml 값을 잘못 넣었다. 예를 들어 drawable 넣을 자리에 dimen 값을 넣은 것과 같은 것입니다. 2. CustomView가 있을 경우, 생성자 함수를 제대로 만들어주지 않았다. 이 이유때문에 전 거의 2시간을 화를 참으며 에러를 찾고 있었죠. 전혀 잘못된 곳이 없다고 생각했으니깐요 (정말 초보적인 실수였음...) 아래 소스에서 머가 잘못 됐을까요? public CustomView(Activity activity) { this(activ.. 더보기
[Android] Glide 에서 Gif 로드가 너무 느려요. Glide 라이브러리는 이미지 뿐만 아니라 gif 파일도 로드해줘서 참 좋지요. 아래 소스 대로 Gif 파일을 불러올 수 있는데요. Glide.with(holder.itemView.getContext()) .load(thumbnails[position]) .asGif() .into(holder.image); 그러면 이미지가 한참있다가 로드가 됩니다... 이미지가 커서 그런가 라는 오해가 생길 수가 있는데요.아래와 같이 diskCacheStrategy 를 추가하면 해결 됩니다. Glide.with(holder.itemView.getContext()) .load(thumbnails[position]) .asGif() .diskCacheStrategy(DiskCacheStrategy.SOURCE) .into(.. 더보기
[Android] RecyclerView를 이용한 ExpandableListView ExpandableListView를 사용하면 리스트가 애니메이션이 없이 그냥 생성되었다가 사라지는 것을 반복 합니다.너무 보기 안좋죠~ RecyclerView를 사용하시면 아시 겠지만, 리스트 insert,remove,update동작이 자연스럽게 잘 되어 있습니다.이걸로 이용하면 쉽게 훨씬 더 낫겠다 싶어서 한번 검색을 해본 순간역시나 저와 같은 생각을 가진 분이 이미 예제를 구현해 두셨네요. https://github.com/anandbose/ExpandableListViewDemo 위 git 소스를 보시면 다른게 없습니다.그냥 버튼을 누르면 리스트를 insert 시키고,다시 한번 버튼을 눌렀을 경우 remove를 시키는 것이지요. 참고하세요. 더보기
[Android] android.net.conn.CONNECTIVITY_CHANGE 안드로이드에서 네트워크가 끊겼는지 실시간으로 알아보는 방법으로 아래와 같이 사용하시는 분들도 있을 것이다. // Broadcast Listener 등록 (onCreate나 onResume에 할당)IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); try{ registerReceiver(mNetworkStateReceiver, filter); }catch (Exception e){ if (RingQConfig.DEBUG) e.printStackTrace(); } // Broadcast Listener 해제 (onDestroy나 onPause에 할당)try { if (mNetworkStateReceiver != nu.. 더보기
[Android] Get RealPath from Uri public class RealPathUtil { public static String getRealPath(Context context, Uri uri) { String realPath; // SDK = 11 && SDK 19 (Android 4.4) else { realP.. 더보기