본문 바로가기

android

[Android Weekly][#344] 효율적인 LiveData와 ViewModel 테스팅 원본 : https://android.jlelse.eu/effective-livedata-and-viewmodel-testing-17f25069fcd4 Architecture Components 와 그것들을 실행할 방법에 관해 써놓은 글이 많이 있고, 테스트 능력을 향상 시켜줄 혜택 중 하나를 가지고 있다. 자 그럼, 실제로 어떻게 향상시키지? 한번 살펴 보자. Architecture Components는 Google I/O 2017에서 소개되어 졌고, 그것들은 Android 개발 세계에서 뚜렷한 향상을 의미 했다. 수 년을 걸쳐 익힌 최고의 연습들은 대부분의 공통된 문제들이 바뀌어졌고, 탄탄한 가이드(opinionated guide)를 나오게 했다. View와 ViewModel은 LiveData를 통하.. 더보기
[Android] 현재 Android 최신 버전 상태 (2016.10.25) ## 버전 상태gradle : 2.2.1google-services : 3.0.0 maven-plugin : 1.5gradle-plugin : 0.13.0 compile sdk : 25build tool : 25.0.0 google support library : 25.0.0play service : 9.8.0 ## 최상위 build.gradlebuildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.1' classpath 'com.google.gms:google-services:3.0.0' // NOTE: Do not place your application dependencie.. 더보기
[Android] Intent.FLAG_ACTIVITY_NO_HISTORY Activity에 여러 기능을 가진 Flag 가 있죠.이 중에서 제가 말하고자 Flag는 제목에 써있듯이 FLAG_ACTIVITY_NO_HISTORY 입니다. 다 아실꺼라 생각 합니다. 그래도 혹시 저와 같이 고민 하는 사람이 있을 꺼 해서 소스 공유 할려구요 ㅎ 1. 메인 화면이 실행됨.2. A화면이 실행됨.3. B화면이 실행됨.4. A화면이 종료 되면서, C화면 실행 (B화면이 보이는 상황)5. C화면을 종료 하면 B화면이 나오지 않음. 테스트를 해본 결과, C화면이 실행 되지 않으면 B화면이 종료 되지 않습니다.즉! 상황1) 메인 -> A -> B 에서 A가 종료결과1) 메인 -> B 상황2) 메인 -> A -> B 에서 A가 종료되면서 C 실행결과2) 메인 -> C 상황 2에선 B가 자동 제거 되.. 더보기
[Android] TextView가 Ellipis 상태인지 체크 하는 방법 TextView에 singleLine이나 maxLines를 통해서 라인 제한을 주고,ellipsize 설정을 통하여 '...' 으로 표현을 합니다. 그럼, 현재 ellipsize 상태인지 아닌지 알 수 있는 방법이 있을 까요? public boolean isEllipsis(TextView textView) { // 1이 나온다는 것은 글씨가 줄여졌다는 것이다. if (textView.getLayout() != null) { return textView.getLayout().getEllipsisCount(textView.getLineCount()-1) > 0; } return false; } 상태를 파악하기 위해서 getLayout 이 null 이 아니어야 합니다.getLayout 에서 Ellipsis 상.. 더보기
[Android] Viewpager swipe disable ViewPager에 Touch로 인한 Page 이동을 막고자 할 때 아래와 같이 Custom한 ViewPager를 사용 하세요. package com.namuon.ringq.widget.viewpager; import android.content.Context; import android.support.v4.view.MotionEventCompat; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; public class SwipeViewPager extends ViewPager { private boolean enabled; public SwipeViewPag.. 더보기
[Android] RadioButton에서 텍스트와 간격 넓히기 RadioButton을 Custom 화 시켜서 Icon을 변경해서 많이 씁니다. Icon 변경은 간단하게 button에 넣으면 끝인데요. 아래와 같이~btn_radio.xml 아이콘만 놓는 다면 문제가 없습니다. 하지만, 아이콘 과 텍스트를 같이 쓰고자 하시는 분들 중에 그 사이에 Margin을 넣고 싶을 경우가 있습니다.아무것도 하지 않으면 아이콘과 텍스트가 딱 붙어 있으니깐요. 그럼 어떻게 해야하느냐???구글링을 하다보면 button을 이용하지 말고 drawableRight나 Left를 이용해서 아이콘을 두고 Padding으로 조절하라고 합니다.참조 : http://stackoverflow.com/a/12568118/3534559 하지만, 제가 하고자 하는 것은 그냥 우측에 나오는 텍스트에 간격만 주.. 더보기
[Android] Edittext에 포커스 주기 Edittext에 포커스를 주고자 하시는 분은 아래 소스를 참고 해보세요. edittext.post(new Runnable() { @Override public void run() { edittext.setFocusableInTouchMode(true); edittext.requestFocus(); InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(edittext,0); } });여기서 꼭 참고할 사항은 edittext에 post runnable을 던진 것이다.edittext UI 변경 차례를 기다리는 것이다.준비가 되지 않은 상태에서 UI를 변경 시킬려고 .. 더보기
[Android] EditText에 NextFocus 설정 EditText에서 다음 포커스를 설정 할때 아래와 같이 id 값으로 xml에서 간단하게 설정 할 수 있습니다. 요렇게요. 하지만, 혹시 Java 소스 단에서 Programmatically 하게 제어 하고 싶으시다면 setOnEditorActionListener 리스너를 이용하시면 됩니다. edittext.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { if (actionId == EditorInfo.IME_ACTION_NEXT) { // 특정 동작 지정 return t.. 더보기