본문 바로가기
반응형

Android 개발231

BuildConfig 와 ProductFlavor 정리 # BuildTypes BuildConfigField 오늘은 BuildConfig와 ProductFlavor에 대해서 정리해 보고자 하는데요. 이 두가지 클래스들은 각각 빌드별로 다른 값을 가지거나, 기본앱과는 다른 타입의 앱을 출시해서 사용하도록 하는데 사용할 수 있는데요. 먼저 빌드별로 다른 값을 가지도록 할 때 사용하는, buildConfig클래스의 buildConfigField에 대해서 알아보도록 하겠습니다. 1. buildConfig 클래스 1-1. BuildConfigField 구현 빌드가 될 때, 안드로이드의 빌드 시스템인 Gradle은 BuildConfig클래스를 생성합니다. 이는 현재 빌드에 대한 정보를 확인할 수 있도록 하기 위함인데요. BuildConfig클래스의 buildConfigField()메소드를 이용하면, 인자에 원하는 값을 넣.. 2019. 8. 13.
멀티덱스 적용없이 디버그를 위한 Proguard(프로가드) 설정 방법 안드로이드의 여러 라이브러리를 사용하다보면, 단순히 디버깅을 위해 앱을 빌드할 때 조차도, 메소드 카운트가 6.5K를 넘기는 경우가 발생하게 되는데요. 이때 안드로이드 스튜디오가 알려주는데로 무심코 MultiDex를 사용하는 것 보다는, 디버깅할 때에도 사용하지 않는 메소드를 줄여주는 minify과정을 통해서 Multidex를 사용하지 않도록 해야하는 것을 먼저 시도해 보아야 합니다. 그렇게 해도 해결이 않될정도로 앱이 거대하고 큰 규모라면 Multidex를 사용해야 할 테구요. 문제는 minify(리소스를 축소)를 하는 과정에서 난독화도 같이 하게 되면서 테스트를 위한 빌드를 하는데도 엄청난 시간이 걸릴 수 있는 것 인데요. 이는 개발동기 저하와 생산성하락으로 이어질 테구요. 오늘은 이를 어떻게 해결해.. 2019. 7. 26.
AndroidX 로 SupportLibrary 마이그레이션(Migration) 하기 기존의 SupportLibrary를 사용하시는 분들에게는AndroidX로 마이그레이션 해야한다는 사실은 정말 피곤한 일이 아닐 수 없습니다.하지만, 구글의 SupportLibrary Revision을 보면 이젠 더이상 업그레이드를 하지 않는다고 명시되어 있기도 하고,계속 SupportLibrary를 고수할 수 없는일이지요. 오늘은 마이그레이션 하는 과정에 대해서 정리해보겠습니다. 1. AndroidX로 변경하기 참고로 AndroidX의 변경사항에 대해서는 아래 링크를 참고해 볼 수 있습니다.>> https://developer.android.com/jetpack/androidx/releases/archive/androidx 2019. 7. 15.
업그레이드 된 안드로이드 개발 이미지 추가 방법 #Resource Manager 안드로이드 개발하면서 은근히 피곤한 것 하면 빼놓을 수 없는 것이 바로 이미지 추가하는 것입니다. 서로 다른 해상도마다 이미지를 추가해 주어야 하는데요. 그래서 벡터이미지를 사용하기도 하는데, 개인적으로는 호환성문제도 있고 속도 문제가 발생하는 경우도 있어서 다시 이미지를 사용하는 경우도 있었습니다. 그런데 안드로이드 스튜디오가 업그레이드 되면서, 너무도 쉽게 해상도별로 다른 이미지들을 한번에 추가하는 방법이 생겼는데요. 오늘은 이 방법에 대해서 알아보도록 하겠습니다. 참고로 이 글은 최신버전의 업그레이드 안드로이드 스튜디오에만 적용가능하므로, 혹시 업그레이드가 않되어있는 상태라면 하시기를 추천드립니다. 1. Resource Manager 안드로이드 스튜디오가 업그레이드 되면서 Resource Manag.. 2019. 7. 14.
PhoneStateListener 로 안드로이드폰 전화 상태 알아내기 #통화중 음악재생 알람기능이 들어간 앱을 만들경우에, 전화를 하고 있다면,알람소리를 잠시 멈추었다가 통화가 끝나면 다시 재생해주는 등의 처리를 해주어야 합니다.이러한 처리를 하기 위해서는 사용자가 전화를 받고 있다는 것을 알아야 하는데요.이를 위해서 TelephonyManager와 PhoneStateListener가 필요한 데요.오늘은 이들을 이용해서 대응하는 방법에 대해서 정리해 보도록 하겠습니다. 1. TelephonyManager 안드로이드 폰의 전화서비스에 대한 정보에 접근하기 위해서는 TelephonyManager객체가 필요한데요.이를 위해서 getSystemService메소드를 통해서 객체의 레퍼런스를 얻어옵니다. 그리고 전화와 관련된 정보를 얻을 때는 Manifest에서 permission을 얻는다고 명시해주.. 2019. 7. 13.
Android 버튼 UI에 Ripple효과 넣기 안드로이드에 UI작업을 하다보면, 머티리얼 디자인에서 흔히 볼 수 있는, 버튼을 누르면 퍼지는 Ripple효과가 요구되는 경우가 있습니다. 워낙 사용자들도 저 효과를 많이 보다 보니, 그냥 컬러만 바뀌는 경우는, 밋밋하게 생각하는 경우가 많고 디자이너들도 요구하는 부분이기도 하지요. 백그라운드에 특정한 이미지를 쓰지 않는 투명버튼이나, 이미지버튼의 경우 상대적으로 이 효과를 적용하기 쉬운데, 배경색이나 이미지가 적용된 경우는 이 효과를 적용하는데 있어서 하위호환성문제가 발생합니다. 우선은 투명버튼의 경우부터, 어떻게 하면 리플 효과를 적용할 수 있는지 정리해 보도록 하겠습니다. 1. Button UI 아래와 같이 배경이 없는 투명 버튼의 경우를 먼저 보도록 하겠습니다. 이 버튼을 누르면 약간 연한 톤의 .. 2019. 6. 16.
Notification Channel (알림 채널) 생성해서 적용하는 방법 안드로이드 Oreo (API26 , Android8.0) 버전부터는 노티채널을 만들어 주어야 하는데요. 채널을 만드는 것부터 하나씩 보도록 하겠습니다. 1. Notification Channel 노티피케이션 채널은 노티를 할 때마다 만들어야 하는 것은 아니구요. 앱에서 한번만 생성하면 되므로, android.app.Application을 상속받은 Applicaiton.class에서 하도록 하였습니다. 코드를 보면서 정리해 보겠습니다. NotificationChannel을 생성할 때는 다음의 사항들을 인자로 넣어주어야 합니다. id: 임의의 채널 id name: 알람 이름 importance level: 알람의 중요도 id와 이름은 임의의 문자로 정해주면 되지만, importance level은 정해진 상.. 2019. 6. 12.
CoordinatorLayout과 Behavior CoordinatorLayout을 앱에 많이 적용하게 되는데요.안드로이드 특유의 UI이기도 하고, 유연성도 커서 종종 사용하게 되는 것 같습니다. CoordinatorLayout의 Behavior로 appbar_scrolling_view_behavior를 NestedScrollView나 RecyclerView에 자주 사용해 왔는데요. Header영역에 있는 View의 경우, 원하는데로 동작하기 위해서는Custom한 Behavior Class를 생성해주고 사용해야 합니다. 오늘은 이 방법에 대해서 정리해 보겠습니다. 1. Behavior Class CoordinatorLayout은 자신에 속해있는 ChildView들에게 다른 View의 스크롤 변화값을 전달해 주는 역할을 합니다.이 값에 따라서 어떻게 행동.. 2019. 5. 30.
부팅 혹은 재 부팅시 실행되는 Android Service 개발 폰이 부팅 혹은 재부팅될 때 실행되어야 하는 경우가 있습니다. 예를 들면, 알람앱 같은 경우가 될 텐데요. 알람을 설정하고 나서, 폰이 재부팅된 이후에도, 실행되도록 부팅시 DB를 조회해서 알람을 다시 등록해야 하겠습니다. 오늘은 이 방법에 대해서 정리해 보도록 하겠습니다. 1. 부팅 시기 알림받기 부팅이 되었을 때 앱이 안드로이드로부터 알림을 받아야 할 텐데요. 이를 위해서는 Receiver가 필요합니다. 그런데 Receiver를 작성하기 전에, 권한을 하나 추가해야 하는데요. android.permission.RECEIVE_BOOT_COMPLETED 권한을 AndroidManifest.xml에 추가해 주어야 합니다. 2. Receiver 추가하기 RebootReceiver를 생성한 다음, Androi.. 2019. 5. 26.
Firebase의 CrashLytics를 Slack과 연동해서 알림받기 Crash가 발생할 때 가장 중요한 것은 빠르게 알림을 받는 것인데요. 이메일을 통해서도 알람을 받지만, Slack과 같은 메신저를 통해서 하나의 채널에서만 모아서 받는 다면, 관리하기도 더욱 좋아질텐데요. 오늘은 이 방법에 대해서 정리해 보도록 하겠습니다. 참고로 CrashLytics가 Fabric에서 Firebase로 이사가게 됩니다. 2020년초까지는 계속 Fabric으로 지원을 한다고 하지만, 지금부터 만드는 앱에서는 Firebase기준으로 하는 것이 좋겠지요. 이 글도, Firebase의 CrashLytics를 Slack과 연동하는 방법에 대해서 정리해 보도록 하겠습니다. 1. Firebase 콘솔에서 설정 Firebase의 콘솔에서 좌측상단의 설정> 통합에 들어가면 아래와 같이 Slack과 연.. 2019. 5. 23.
Google Ads(구글 애드워즈)에 광고 게재하는 비용과 팁 구글 애드(예전명칭은 구글 애드워즈)에 광고를 내야할 경우가 있는데요.아무래도 구글의 매출에 영향을 많이 주는 서비스라 그런지,전체적으로 친절하게 잘 되어 있는 편입니다.그래도 역시 비용부분에 들어가면,뭔가 조금 궁금증이 남게되는 것이 사실인데요.오늘은 광고를 붙일 때 책정해야 되는 비용과 광고관련 팁 들에 대해서 정리해 보도록 하겠습니다. 1. 비용 애드워즈에 광고를 내보낸 적이 없다면,가장 걱정스러운 부분이 비용인데요.설정화면중에 아래 화면을 볼 수 있는데요.여기서 이와 관련된 부분들을 설정할 수 있습니다. 이 중 중요한 것은 '예산> 일일평균 희망 지출액' 과 '입찰 > 목표설치당' 비용입니다.하나씩 보도록 하겠습니다. 1-1. 일일 평균 희망 지출액 이 부분은 하루에 얼마를 지출할지를 정하면 되는.. 2019. 3. 19.
Android 에서 Vector(벡터) 이미지 사용하기 안드로이드 개발하는데 있어서 Vector를 사용하는 것은 너무나 편리합니다.hdpi, xhdpi, xxhdpi, xxxhdpi등 이미지를 몇개나 만들어야 했었는데,벡터파일 하나면 되니 소스관리도 편하고,이미지를 만들어서 주는 디자이너들도 좋아합니다.sketch같은 프로그램으로 export시켜 사용하면 이보다 더 편리한 것은 없죠. supportLibrary에서 벡터사용을 지원하기 때문에, 사용하는 방법도 쉬운데요.아쉽게도 안드로이드 개발을 하면서 항상 만나게 되는 하위버전 호환문제가 있습니다.경우에 따라서, API21미만에서는 리소스를 못찾아서 nullPointerException을 발생시킬 수 있어요. 그럼 어떻게 벡터그래픽을 사용하고, API21미만에서는 어떻게 대응해야 하는지 정리해 보도록 하겠습니.. 2019. 1. 18.
FragmentDialog 로 대화상자(팝업) 구현하기 안드로이드에서 유저에게 특정한 이벤트를 소개하거나 경고를 하는데 있어서,AlertDialog를 사용하는 경우도 있지만, FragmentDialog도 많이 사용하는데요. 오늘은 이 FramentDialog를 사용하여서 대화상자를 구현하는 방법에 대해서 정리해 보겠습니다. 1. Dialog XML 정의 먼저 보여줄 Dialog의 UI를 XML을 정의하겠습니다.간단하게 이미지와 텍스트 그리고, 확인 버튼을 보여주는 UI를 생성할께요. 2. Fragment Java Code 이제 위의 레이아웃을 inflate할 fragment의 java code를 구현해 보겠습니다.(참고로 DialogFragment는 v4 support library로부터 import 해왔습니다.)onCreateView에서 아래와 같이 버튼을.. 2019. 1. 8.
애드워즈 사용하는 방법 정리 제품을 출시했다면, 이를 광고하는 방법도 알아야 하는데요.손쉽게 온라인으로 광고할 수 있는 방법중 하나가,바로 애드워즈를 이용하는 방법입니다. 앱을 출시해 놓은 경우 종종 구글에서 무료 크레딧도 나오므로,이를 사용하는 것도 도움이 될 것 같습니다. 1. 애드워즈(Adwords) 애드워즈 사이트에 들어가시면 아래와 같은 화면을 볼 수 있는데요. 2018. 12. 31.
Java, Android 에서 날짜 표현할 때 Calendar, Date 그리고 SimpleDateFormat 안드로이드 앱을 만들다 보면, 날짜를 알아와야 할 때가 종종 있습니다. 이 때, 자바의 클래스중 어떤 걸 써야했는지 가물가물 할 때가 있는데요, SimpleDateFormat 클래스와 Date클래스에 Calendar클래스 까지 있는데요. 이들을 이용해서 날짜를 얻어와 보겠습니다. 1. 클래스 소스보기 SimpleDateFormat과 Date, Calendar클래스의 소스 코드 설명을 보면서 어떤 클래스들인지 한번 쓰윽 보도록 하겠습니다. SImpleDateFormat은 DateFormat클래스를 상속받고 있네요. 흥미로운 점은, 다른쓰레드에서는 다른 객체를 사용하라고 되어있네요. Thread-Safe하지 못하다는 점이 마음에 좀 걸리지요. 주의해서 써야할 것 같습니다. SimpleDateFormat의 p.. 2018. 12. 11.
안드로이드 애드몹(Admob)광고배너 무효 혹은 부정 클릭 방지하기 앱을 처음 만들고, admob을 붙여서 광고를 넣고 출시하는 과정은 너무나 즐겁습니다.특히 자신이 만든 앱에 광고가 들어가 있는 것이 그런데요.하지만, 자칫 잘못해 QA나 사용성테스트 등의 과정에서 실수하여광고를 눌러버리게 되는 경우, 구글에 의해서 더이상 광고를 붙일수 없게되거나 광고가 정지 될 수 있습니다.항상 걸린다고 보증할 수는 없지만, 처음 출시하여서 사용자가 적은경우,더더욱 실수에 대해서 민감하게 됩니다. 이는 혼자서 앱을 관리하는 개발자들에게는 정말 치명적인 일이 아닐 수 없는데요.오늘은 이러한 일을 미연에 방지하는 방법에 대해서 정리하도록 하겠습니다. 참고로 Admob광고를 구현하는 방법은 아래링크를 참조해주세요>>Admob으로 앱에 광고 달기 2018. 9. 17.
안드로이드 스튜디오3에서 Gradle Sync 이슈 해결하기 안드로이드 스튜디오3로 업그레이드를 해주고,빌드를 돌려보면, 아래와 같이 Gradle Sync Issues를 볼 수 있습니다.이러한 이슈들은 build.gradle의 Module:app레벨에서 일어나는 이슈들인데요. 자세히 보면 아래와 같이 나와있습니다..지금 쓰고 있는 configuratoin의 설정은 이제 더이상 쓰지 않고,2018년도 이후에는 사용할 수 없다고 되어 있네요. 다행이 관련 해서 정보를 얻을 수 있는 링크를 제공해 주고 있네요.https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration?utm_source=android-studio#new_configurations 5가지나 바뀌었으니 조금 피곤하게 되었네요.하지만 유.. 2018. 8. 20.
Enum값에 대해서 알아보겠습니다 오늘은 Enum에 대해서 무엇인지 정리해 보고,그 특징들에 대해서 알아보도록 하겠습니다. 1. Enum enum은 Enumerated Type의 줄임말인데요.열거형 타입이라는 의미입니다. 선택할 수 있는 관련되어 있는 상수들을 모아서,하나의 집합으로 정의한 상수인데요. 이것을 좀더 쉽게 풀어보도록 하겠습니다.요일은 월요일부터 일요일까지만 존재하는데요.따라서, 요일에 관해서는 월요일~일요일 이 7가지만 쓰도록 하면,좀 더 안전하게 코딩을 할 수 있을텐데요.enum을 사용해서 열거되는 아이템들을 정해놓고 그 안에서만 선택하도록 할 수 있습니다. 2. Enum의 특징 2-1. 명확하다 키워드인 enum을 사용하므로,명확하게 열거형 상수를 의미할 수 있구요.의도하지 않게, enum이 객체화 하거나 상속되는 것을.. 2018. 4. 10.
RxJava2 (RxAndroid2) 로 업그레이드 하기 RxJava2(RxAndroid)가 나온지도 시간이 많이 흘렀네요.RxJava개발진영에서도 2018년 3,4월경부터는 더이상 지원을 하지 않는다고 하니,이제는 업그레이드를 위한 준비를 해서 테스트 일정까지 생각해보아야 할 때가 되었는데요. 오늘은 RxJava1에서 RxJava2(RxAndroid)로 업그레이드 하면서 알아야 하는 것에 대해서 정리해 보도록 하겠습니다.혹시 RxJava1에 관해서는 아래 링크를 참조해 주세요ㅋ>>RxAndroid 이해하기 1. dependency설정 RxAndroid2를 사용하기 위해서는 dependency부터 변경해야 겠지요.이미지에서 하이라이트된 두줄을 추가해 주어야 합니다. 참고로 retrofit을 사용하고 있다면, adapter-rxjava2로 adapter도 변경해.. 2018. 4. 3.
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.