본문 바로가기
반응형

Android 개발242

Android XML에서 Custom Font 사용하기(SupportLibrary26 이상) SupportLibrary26이 발표되면서, 드디어 XML에서 Font를 사용할 수 있게 되었습니다.(벌써 27버전이 발표되었고, AndroidStudio는 3.0릴리즈 버전으로 업데이트 되었습니다.)더이상 TypeKit은 사용할 필요가 없게 되었네요.오늘은 xml에서 CustomFont를 사용하는 방법에 대해서 정리해 보겠습니다. 1. SupportLibrary 추가하기 SupportLibrary 25.4.0부터는 Maven Repository를 이용하는데요.기존의 jcenter()밑에 maven { url "https://maven.google.com" } 만 추가해주면 됩니다. 26이상의 최신 Support Library를 추가해 주어야 하구요.build.gradle의 dependency에 supp.. 2017. 10. 31.
Facebook 이나 KakaoTalk연동위한 HashKey 생성하기 카카오톡이나 페이스북을 연동시에는 모두 HashKey를 요구하는데요.크게 두가지 방법이 있습니다.CommandLine툴과 Java코드를 직접 돌려서 구하는 방법이 있는데요.이 중 Java코드로 앱내에서 값을 추출하는 방법에 대해서 정리해 보겠습니다. 1. 앱내에서 Java코드로 구하기 아래 코드를 이용하면, Java코드로 Hashkey를 생성할 수 있습니다.getPackageInfo메소드의 첫번째 인자로 앱의 실제 package명을 적어주는 부분만,해당앱의 패키지 명으로 수정해 주시면 됩니다. 2. Debug용과 Release용의 HashKey 한가지 주의할 점은,Release할 때에는, Release버전을 빌드시켜 나온 HashKey로 꼭 사용해야 한다는 것입니다.그렇지 않으면, 해당 카카오톡이나 fa.. 2017. 9. 28.
RxJava로 구현하는 EventBus Event를 하나의 클래스에서 받아서 중개해주는 방식의 EventBus방식은,바로 연결되어 있지 않아서 Listener를 전달하기 힘들 Activity나 Fragment, Service들 사이에 Event를 전달하기 참 좋은데요.EventBus나 지금은 Deprecated된 Square사의 Otto도 있지만, RxJava로도 구현할 수 있습니다.(Otto가 Deprecated된 이유도 RxJava때문이지요.) 오늘은 이 방법에 대해서 정리해 보겠습니다. 1. 구현 방법 우선 간단하게 구현방법을 정리해 보겠습니다.먼저, Event의 중개자가 될 Singleton방식의 EventBus클래스를 생성하구요.이 EventBus를 이용해, EventSend와 EventGet을 할 수 있는 메소드를 만들어 줍니다. .. 2017. 9. 28.
GooglePlay 앱서명(app signing)으로 HashKey 만들기 최근에 플레이스토어에 앱을 새로 생성하였다면,GooglePlay 앱서명(app signing)이라는 것을 보게 됩니다. 개발자가 로컬에서 만든 키가아니라, 구글서버에서 만든키를 가지고 사용한다는 것인데요.릴리즈 빌드를 올리면 기존의 로컬 키는 삭제되고, 구글서버의 앱서명을 사용하게 됩니다. 카카오톡 같은 경우 카톡공유하기 같은 API를 이용할 경우,Hash키를 생성해서 제공하도록 되어있는데요.구글서버의 앱서명을 이용해서 Hash키를 생성해서 제공해주어야 합니다. 오늘은 이 방법에 대해서 정리해 보겠습니다. 1. PlayStore 앱서명 찾기 먼저, PlayConsole내에 앱서명을 먼저 찾아야 하는데요.왼쪽 네비게이션에서 찾을 수 있습니다.위치는 이미지와 같이,출시관리 > 앱서명에 들어가면 볼 수 있습니.. 2017. 9. 12.
정규 표현식 (Regular Expression) 과 응용 사례를 정리해 보자 정규표현식은 특정한 조건으로 문자를 검색하거나 바꿀 때 사용하는데요. 사용은 하지만, 자주 사용하지는 않아서, 정작 사용할 때가 되서는, 기억이 가물가물한 경우가 많습니다. 오늘은 자주 쓰이는 것들을 위주로, 정규 표현식과 응용 사례(이메일 형식체크 등)들을 정리해 보겠습니다. 1. 정규 표현식 아래는 자주 사용되는 정규식을 정리해 놓은 표입니다. 주의할 것은 "\"(역슬래쉬)는 Kotlin이나 Java에서는 Escape문자로, 코드에서 사용할 때는 "\\"(역슬래쉬 2개) 로 대신 표기해 주어야 합니다. ( ) 패턴들을 하나의 그룹으로 묶음 예> or연산자인 | 과 함께 써서, (txt|hwp|doc) 과 같이 txt, hwp,doc 세가지에 매치시킬 수 있음 + 기호 앞의 패턴이 1번 이상 발생하는 .. 2017. 9. 7.
[Android & Server] 행정동과 법정동 주소 데이터 얻어오기 안드로이드 앱 작업을 하다보면, 유저가 주소를 검색하도록 해야하는 경우가 생기는데요.이 때, 주소의 기준이 되는 것이 행정동과 법정동입니다. 오늘은 이둘의 차이와, 데이터를 얻어오는 방법에 대해서 정리해보겠습니다.평소와는 다르게 오늘글에는 코드가 없습니다. 1. 행정동과 법정동 먼저, 법정동은 무엇일까요?과거부터, 마을이 형성되고 혹은 신도시가 세워지고 계속 사용되어던 지역의 명칭인데요.지적도나 부동산의 등기에 올라가는 주소로서, 법률행사에 사용되는 주소입니다. 그럼, 행정동은 무엇일까요?법정동을 행정관리의 효율을 위해서 나누어 놓은 것이 행정동입니다.법정동마다 크기나 관리해야할 인구의 차이가 존재하는데요.아주 작은 법정동마다 주민센터를 설치하고 관리하자면 비효율이 발생하므로,인구가 작은곳은 합쳐서 관리.. 2017. 8. 26.
ViewPager 페이지 전환시, 추상클래스 또는 Interface로 Refresh구현하기 ViewPager를 사용하다보면, 페이지를 전환할 때, 부모 Activity에서 Fragment의 메소드를 콜 해야하는 경우가 있습니다.드물기는 하지만, Activity에서 refresh버튼을 클릭해서 fragment를 refresh 하는 경우도 그 중 하나인데요. 이를 구현하기 위해서는, Interface를 이용해서 콜백메소드를 실행하는 방법도 있을 거구요.BaseFragment를 추상클래스로 생성하고 추상메소드를 만든다음, 상속해서 사용하는 방법도 있을 것입니다. 오늘은 추상클래스와 interface사용하는 두가지 방법에 대해서 간단히 비교 및 정리해 보구요.실제로 두가지 방법으로 구현해 보도록 하겠습니다. 1. 추상클래스 vs Interface 먼저, 간단하게 추상클래스와 interface에 대해서.. 2017. 8. 4.
새로나온 Google Map API 이용해서 내 위치 지도에 표시하기 안드로이드 지도 화면 만드는 방법에 대해서 얼마전에 정리해봤었는데요.최근에, Google Play services SDK 11버전이 나오면서 API가 많이 바뀌었습니다. 새로 나온 API를 이용해서 지도 화면을 생성하는 방법에 대해서 정리해 보겠습니다. 이번 글은 지도 화면이 만들어진 상태에서 내 위치를 지도를 표시하는 방법을 추가하므로,구글맵 화면을 만드는 것에 대해서는 아래 링크의 글을 참조해주세요. >>> Google Map API 이용해 지도 화면 만들기 새로나온 Google Map API(ver11) 이용해 내 위치 얻어오기 Android 에서 동적 권한 얻기 2017. 8. 1.
View가 크기변화를 감지하도록 하는 방법 (addOnLayoutChangeListener) 리스트뷰가 들어간 앱을 만들다 보면, 키보드가 위로 올라오는 경우,화면사이즈가 줄어들어서 전체 리스트 뷰의 아이템이 다 보이도록 해야합니다. 대부분의 경우는 Manifest에서,android:windowSoftInputMode="adjustResize" 를 설정해줌으로 전체 화면사이즈가 줄어들어 해결되지만,경우에 따라서 키보드가 올라갈 경우에는 특정 View를 보이지 않도록 하는 경우도 있습니다. 이 때는 키보드가 올라가면서, 화면의 사이즈가 줄어들었다는 것을 감지하여,그 여부에 따라서, 특정 View의 visiblity를 조절해주면 됩니다. 오늘은, RecyclerView가 화면사이즈 변화를 감지하여서,그 변화에 따라서 특정 뷰를 보이지 않도록 하는 방법에 대해서 정리해 보도록 하겠습니다. 참고로 Vi.. 2017. 7. 26.
NavigationView를 이용한 Navigation Drawer 구현하기 오늘은 안드로이드에서 자주 쓰이는 UI중 왼쪽 상단의 햄버거 버튼을 누르면 왼쪽에서 슬라이딩되면서 나오는 메뉴UI가Navigation Drawer인데요. 보통은 이 UI를 ListView를 이용해서 구현하는데요.NavigationView를 사용하면서 굉장히 편리해 졌습니다. 그럼 하나씩 구현해 보도록 하겠습니다. 1. SupportLibrary NavigationDrawer는 SupportLibrary의 v4를 필요로 하는데요.우선 이 라이브러리먼저 추가하고 가겠습니다.app level의 build.gradle에 아래의 코드를 추가해 주면 됩니다. 2. DrawerLayout Navigation Drawer를 구현하기위해서,먼저 XML파일에서 DrawerLayout을 정의하고 가겠습니다. 우선 Drawe.. 2017. 7. 23.
Geocoder 클래스 이용해서 위치값으로 주소 얻어오기 안드로이드 앱을 개발하면서, 핸드폰의 위치를 얻어왔다면, 그것의 주소도 알아야 할 때가 있는데요.이 때, Geocoder클래스를 사용하면, 그것이 가능해집니다.이것을 GeoCoding이라고 하는데요. 반대로 주소를 가지고 위도경도를 알아내는 것을 ReverseGeocoding이라고 합니다. 오늘은 이 GeoCoding과 ReverseGeoCoding 대해서 정리해 보겠습니다. 1. Geocoder 클래스 제일 먼저 할일은 GeoCoder클래스의 객체를 얻어오는 일인데요.아래와 같이, context를 인자로 넣어주면 됩니다. 2. 위도, 경도 값으로 주소 얻어오기(GeoCoding) 먼저, 위도와 경도 값으로 주소를 얻어오는 것부터 알아보겠습니다.위치를 얻어오는 것은 아래링크를 참조해주시구요. >>> 새로.. 2017. 7. 21.
Drag해서 RecyclerView (listview) 순서 바꾸기 앱을 만들다보면, 리스트를 생성하는 것 뿐만이 아니라, 리스트 순서를 편집해야 하는 경우도 생기게됩니다. 특히, 모바일에서는 드래그를 통해서 위치를 바꾸어야 해서 조금 까다로운 편인데요. 오늘은 이 방법에 대해서 정리해 보겠습니다. 1. Model Class와 RecyclerView 먼저 아래 모델 데이터와 같은 데이터 클래스를 가지고, RecyclerView를 생성하겠습니다. recyclerView를 생성하는 구체적인 방법은 아래 링크에서 참조해주세요. >> RecyclerView 로 listview 정복 Part1 우선, 위와 같은 데이터 모델을 가지고아래와 같은 리스트와 아이템을 가진 리스트를 우선 만들어 놓습니다. 2. ItemTouchHelperCallback 구현하기 먼저, StudentIte.. 2017. 7. 20.
새로나온 Google Map API(ver11) 이용해 내 위치 얻어오기 안드로이드 지도 화면 만드는 방법에 대해서 예전 글에서 정리했었는데요.최근에, Google Play services SDK 11버전이 나오면서 API가 많이 바뀌었습니다. 오늘은 새로운 API를 이용해서, 내 위치를 얻어오는 방법을 정리해보겠습니다. 1. 이전 버전API와 달라진 점 예전 API는 GoogleApiClient객체를 만들어서 connection콜백을 붙인다음,connection이 생성되면 내 위치를 찾는 메소드를 이용했었는데요.이 때, connection Fail이라든가 suspend에 대해서도 구현을 해줬어야 했습니다. 하지만 이번 11.0.0 release버전 부터는 위와 같은 connection logic을 다 알아서 해준다고 합니다.더 이상 googleApiClient객체를 생성할 .. 2017. 7. 20.
Android에서 Google Map API 이용해 지도 화면 만들기 안드로이드에서 구글에서 제공해주는 API를 이용해지도화면을 만들기는 매우 쉽습니다. 안드로이드 스튜디오만 잘 이용하고 주석만 잘 읽으면 되는데요,오늘은 이것에 대해서 정리해 보려고 합니다. 1. 구글이 만들어 주는 지도 Activity 생성하기 안드로이드 스튜디오의 네비게이션에서 마우스 오른쪽 커서를 눌러서 컨텍스트 메뉴를 띄워New>Google>GoogleMapsActivity를 하시면 됩니다. 2. 구글이 만들어 주는 지도 Activity 생성하기 앱을 최초에 생성했을때 만나는 열리는 파일은 Resource파일인데요.실제 이 파일은 res> values > google_maps_api.xml 파일에 있습니다. Todo주석이 보이시나요?하단에 안내된 사이트로 이동해서 GoogleMapsApiKey를 받.. 2017. 7. 19.
PlayStore 출시전에 Log 제거하기 안드로이드 앱을 다 만들고, 출시를 하려고 하는데 잊지말아야 하는 것이 있습니다.바로 Log를 제거하는 것인데요. 이것을 제거하지 않은 앱의 로그는, 안드로이드 스튜디오의 Logcat에서 볼 수 있게 되는데요.민감한 정보나, 네트워크상의 중요한 정보들이 나오면 않되므로,중요한 정보와 관련된 Log는 꼭 제거해야 합니다. 오늘은 직접 모든 줄을 찾아서 제거하지 않고 안드로이드 스튜디오를 이용해서 제거하는 방법에 대해서 정리해 보도록 하겠습니다. 1. ProguardFiles 설정 제일 먼저 할 것은, minifyEnabled 를 true로 해서, proguard를 사용할 수 있도록 하구요.'proguard-android.txt' 로 되어있는 getDefaultProguardFile을,'proguard-an.. 2017. 7. 13.
ProGuard Rules 정리 (Retrofit & OkHttp, JSoup, GSon, RxJava, Glide etc) 다양한 라이브러리를 사용하는 만큼, 다양한 ProGuard를 사용해야 합니다.그런데, 어떤 라이브러리는 이 부분에 대해서 명확히 정리하고 있고,또 어떤 라이브러리는 그렇지 못합니다. 오늘은 제가 주로 사용하는 라이브러리들의 Proguard세팅과 링크들을 정리해 보겠습니다. 1. Retrofit & OkHttp 안드로이드 앱에서 네트워크를 사용한다면 대부분이 사용하는 라이브러리일 것 같은데요.라이브러리도 잘 만들었지만, Proguard룰도 홈페이지에 잘 정리해 두었습니다. 역시 믿고 의지하는 Square네요.아래 링크의 페이지에서, 하단부에 Proguard-Rule을 소개하고 있구요.더불어 Retrofit이 사용하는 OkIo의 Proguard-Rule의 링크도 제공해 주고 있습니다. http://squar.. 2017. 7. 8.
TextView에 글자가 흐르게 하는 marquee 안드로이드 앱을 만들다 보면, 공간에 비해서 텍스트가 많아서 텍스트가 흐르도록 해야하는 경우가 있는데요이 때 어떻게 하면 텍스트가 흐르도록 할 수 있는지 정리해보도록 하겠습니다. 1. TextView 설정 아래와 같이 화면크기보다 글자가 많도록 TextView를 설정해 주었구요.그리고 singleLine을 true로 주어서 1줄로만 나타나도록 해 주었습니다.(MaxLines나 lines = 1로 주는 것은 동작하지 않더군요)이제, 글자가 흐르지 않으면 화면에서 잘려보일 텐데요. 아래와 같이 화면이 잘려보입니다. 이제, 화면에서 글이 흐르도록 옵션을 설정해 보겠습니다. 2017. 7. 6.
com.android.dex.DexIndexOverflowException 대처하기 안드로이드 앱을 만들고 출시준비를 하기 위해서 SignedAPK를 만들려고 하면,DexIndexOverflowException이 나는 경우가 있습니다. 65536개로 메소드 숫자를 제한해 놓았기 때문인데요.라이브러리를 많이 쓰다보면, 라이브러리에 들어있는 많은 메소드들 때문에 생각보다 많은 메소드가 App안에 존재하게 되는 것이지요. 많은 메소드를 제공하는, Google Play Service 가 원인이 되는 경우가 많은데요.오늘은 그 해결 방법을 정리해겠습니다. 1. Google Play Service 에서 필요한 라이브러리만 추가 구글 맵을 사용하여 앱을 만들려고, Google의 개발자 사이트를 참조하다 보면,아래와 같이 play-services 전체 라이브러리를 추가하라고 나오는데요.https://.. 2017. 7. 5.
EditText의 ImeOptions 로 키보드의 Action 설정하기 사용자에게 입력을 받을 때, 키보드 우측 하단에 검색 같은 Action명령어를 본 적이 있으실 텐데요.오늘은 이것을 설정하는 방법에 대해서 정리해 보겠습니다. 1. EditText 우선, 사용자에게 입력을 받을 수 있는 EditText를 설정해 줍니다. 그럼 아래와 같은 키보드를 볼 수 있는데요.화살표가 가르키는 방향에 여러가지 액션들을 정의하고 실행시킬 수 있습니다. 그럼. 이것을 검색으로 바꿔 보도록 하겠습니다.imeOptions의 값을 actionSearch로 해주면 됩니다. 아래와 같이 변경 된 것을 볼 수 있습니다. 참고로 imeActionLabel의 값을 주면, 텍스트로 버튼을 대신할 수 있습니다. 2017. 7. 5.
notifyDataSetChanged 실행시에 깜박이는 현상 해결 안드로이드의 리스트뷰는 전부 RecyclerView로 한다고 해도 될 정도로,RecyclerView는 정말 많이 사용됩니다. RecyclerView를 사용하다가 때로는, intialize된 후에 각 아이템의 데이터가 수정되어서, 다시 notifyDataSetChanged()를 해줘야 하는 경우가 생깁니다. 보통은 한번만 해주면 되는 notifyDataSetChanged()를 두번 혹은 그 이상 해야되는 경우가 있는 것인데요.이렇게 하면 깜박임 현상이 발생하는 것을 볼 수 있습니다. 오늘은, 이 문제를 해결 하려면 어떻게 해야 하는지 정리해보겠습니다. 참고로, 이글에서는 RecyclerView의 구현과 기본적인 내용에 대해서는 생략합니다.RecyclerView의 기본적인 내용은 아래 링크를 참조해 주세요... 2017. 7. 2.
앱 설치시 바로가기 아이콘 설치 구현 안드로이드 앱을 설치하다 보면, 설치가 끝나고 바로가기를 홈에 바로 만들어주는 앱을 볼 수 있습니다.이런것들이 항상 일어나는 것이 아닌 것을 보면, 개발자가 구현을 한 것으로 생각할 수 있는데요.어떻게 한 것일까요? 오늘은 이 방법을 정리해 보도록 하겠습니다. 1. Manifest 설정 역시 안드로이드 기능을 구현하면, permission을 설정하지 않으면 뭔가 허전해지네요.가장 먼저 할일은 Manifest를 아래와 같이 설정해 주는 것입니다. 2. 중복을 방지하기 위해 SharePreference사용 이번 기능은 복잡하지는 않지만, 설치할 때 마다 바로가기를 만들수는 없으니,SharedPreference를 사용해서 한 번 설치되면 더 이상 하지 않도록 설정해 줍니다. 참고로 SharedPreferenc.. 2017. 7. 2.
WeakReference <약한 참조> 에 대해서 정리해보자 앱 개발이 마무리 단계에 들어서서, 테스트하면서 부딪히는 문제가 바로 MemoryLeak입니다.MemoryLeak(메모리 누수)가 나는데는 여러가지 문제가 있습니다만.해결책으로 종종 제시되는 것이 WeakReference(약한 참조)인데요.이것은 StrongReference(강한참조)와 어떻게 다르고, 어떻게 구현하는 것일까요?오늘은 그 방법에 정리해 보겠습니다. 1. WeakReference vs StrongReference WeakReference와 StrongReference에 대해서 간단히 정리해 보도록 하겠습니다.(SoftReference나 Phantom도 있지만 이 부분은 다음에 글로 정리해 보도록 하겠습니다.) 우리말로 하면 약한 참조 vs 강한 참조가 되는데요.무언가가 약하고 강하다는 것인.. 2017. 6. 30.
미리 작성된 Realm 데이터베이스를 앱에 넣어서 사용하기 Realm은 여러가지 API를 제공해주어서 참 편리하다고 생각하는데요.오늘은, 미리 만들어진 데이터베이스 파일을 앱을 출시하면서 넣어서 사용할 때 어떻게 해야 하는지 정리해 보도록 하겠습니다. 이 API를 알기전에는, 최신버전인지 확인해서 assets폴더나 raw폴더에 들어있는 DB파일을 다시 앱내 디렉토리로 저장했었던 적이 있습니다.하지만 assetFIle()메소드만 잘 사용한다면 이런작업도 더 이상 필요없어졌네요.하나하나 보도록 하겠습니다. 1. assetFile() 기존에 RealmConfiguration을 build해 줄 때,name()메소드의 인자로, 해당 RealmDB의 파일명을 아래와 같이 지정해 주었었는데요.(참고로 지정해주지 않으면, default.realm으로 저장이 되지요.) 위와 같.. 2017. 6. 19.
Splash (로딩화면) 화면 만들기 | Android 앱을 만들 때, 스플래쉬 화면이 들어가는 경우가 많은데요. 오늘은 스플래쉬 화면을 만드는 방법에 대해서 정리해 보겠습니다. 1. Google의 SplashScreen 가이드 구글의 SplashScreen 가이드는 아래의 링크를 보면 되는데요. https://material.io/guidelines/patterns/launch-screens.html 로딩시간이 짧은 앱에 적합하다고 되어 있네요. SplashScreen은 다음과 같이 두가지로 나누어 지는데요. 로딩전까지 핵심 UI들을 PlaceHolder로서 미리 보여주는 PlaceHolder UI 브랜드를 홍보하기위한 Branded launch screens 아무래도, 두번째인 Branded launch screen의 경우가 많을 것 같습니다. 그럼 어떻.. 2017. 6. 18.
Keyboard 가 보이는지 알수 있게 해주는 ViewTreeObserver 앱을 만들다 보면, 키보드(softKeyboard)가 화면에 올라가 있는지 아닌지 알아야 할 때 가 있는데요.오늘은 어떻게 하면 화면을 측정해서, 키보드가 올라가는지 내려가 있는지 알 수 있는지에 관해서 정리해 보도록 하겠습니다.(언젠가 구글에서 Keyboard의 show/hide 상태를 얻어올 수 있는 API가 생기면 좋겠다는 바람이 있네요) 1. XML 작업 먼저 EditText를 넣어서 키보드를 올릴경우에 어떻게 되는지 보도록 하겠습니다.EditText를 넣어주고, 추가적으로 최상단 부모View에 id를 아래이미지와 같이 넣어줍니다. 또한 manifest파일에서 keyboard 가 올라갈 경우에 화면에 resize되도록 해주기 위해 adjustResize와, 앱시작후에 키보드가 나타나있지 않도록 s.. 2017. 6. 10.
AdMob 구현 방법 총정리 # Android 앱 배너 광고 안드로이드 앱을 만들어서 배포할 수준이 되었다면, 마지막으로 광고를 붙이는 작업을 추가 할 수 있는데요. 오늘은 Admob를 이용하여서, 광고배너를 앱에 붙이는 방법에 대해서 정리해 보도록 하겠습니다. 참고로 Firebase가 현재 앱과 연결되어 있지 않다면, 먼저 아래 링크를 참조해서 firebase에서 프로젝트를 생성하고 google-services.json 파일을 저장해주어야 합니다. (https://firebase.google.com/docs/android/setup) 1. Admob 모듈 implement 하기 1-1. project level의 build.gradle project 레벨의 build.gradle에 다음과 같이 google-services를 추가해 줍니다. buildscript .. 2017. 6. 9.
ScrollView 에서 하단에 뷰를 붙일 때 필요한 fillViewport 안드로이드 앱을 만들다 보면, 스크롤 뷰 가장 하단에 광고라든가, 확인 취소 버튼을 넣어야 하는 경우가 있습니다.그런데, 디폴트로 스크롤 뷰의 자식뷰가 항상 View의 전체 면적을 차지하지 않고 있기 때문에,가장 하단에 위치해야 하는 광고 혹은 확인 취소 버튼이 위로 올라가 붙어있습니다. 물론, RelativeVIew를 사용해서 하단에 항상 위치시킬 수 도 있지만,원하지 않는 결과가 나올수도 있으므로 항상 Relative로 해결할 수는 없습니다. 이럴 때 어떻게 해야할지 실제로 구현해 보면서 정리하겠습니다. 1. 기본 UI 구현 먼저 스크롤 뷰의 ChildLayout에 LinearLayout을 넣고, 그 안에 주황색 View와 입력을 받을 수 있는 EditText를 위치시킵니다.이 때, layout_we.. 2017. 6. 7.
RetryWhen 으로 다시 시도 (Retry) 구현하기 #RxJava 네트워크를 한다던지, 서버 클라이언트 관계를 만들경우,연결이 되어있지 않거나, 원하는 정보를 아직 받지 못할 경우가 있습니다.이럴 때, RxJava의 Operator인 RetryWhen을 사용하면 한결 쉽게 이러한 처리를 할 수 있는데요. 오늘은 이 retryWhen에 대해서 정리해보도록 하겠습니다. 1. RetryWhen 오퍼레이터 RxJava의 Retry 오퍼레이터는 error가 생기면, 자동으로 다시 subscribe해주는 메소드인데요.이 retry에 조건 when을 붙인것이 retryWhen 입니다. 우선 마블다이어그램 먼저 보시죠.굉장히 복잡하지만, 조금씩 정리해 보겠습니다. 참고로 마블 다이어그램에 대해서는 아래 글을 참조해주세요.>>> RxJava (RxAndroid) 의 마블 다이어그램을 .. 2017. 5. 25.
RxJava (RxAndroid) 의 마블 다이어그램을 이해해보자. RxJava의 공식문서를 보면, 다양한 Operator들을 마블 다이어그램을 중심으로 설명하고 있습니다. 아래의 이미지는 reactivex.io사이트에 나와있는, Observable에 대한 설명인데요.역시 마블 다이어그램으로 설명되어 있네요. 아무것도 모르는 상태에서 보면, "이게 뭐지?" 싶지만, 하나하나 잘 살펴보면, 이해를 도와주는 좋은 툴이 될 수도 있습니다.오늘은 이 마블 다이어그램에 대해서 하나하나 뜯어보면서, 정리해 보도록 하겠습니다. 참고로, RxAndroid의 기본적인 사항에 대한 것은 아래 글을 참조해주세요. >>> RxAndroid 이해하기 Part1 2017. 5. 24.
Wifi / 3G 네트워크 연결 상태를 확인하는 ConnectivityManager 안드로이드 앱을 만들면서, Wifi나 3G를 사용해서 인터넷에 연결되어야 할 경우,사용자의 스마트폰이 연결되어 있는지 체크해야 할 필요가 있습니다. 오늘은 이 경우에 어떻게 해야 하는지 정리해 보도록 하겠습니다. 1. Permission 설정 안드로이드에서 코딩을 하면서, 항상 체크해봐야 할 것이 이 API가 Permission이 필요한 것인가 인데요.네트워크 상태를 알아볼 때에도 역시나 permission이 필요합니다.다행인 것은 동적 permission을 요구하지는 않으므로,Manifest에서 android.permission.ACCESS_NETWORK_STATE 에 대해서 uses-permission태그를 추가해주면 됩니다.(네트워크 사용에 대한 것이므로 internet 사용permission을 요.. 2017. 5. 23.