목록안드로이드/안드로이드 개발 (64)
우찬쓰 개발블로그
공유하기 기능은 크게 두가지로 나눌 수 있다. 1. 각 SNS별 SDK를 이용하는 방법 (카카오톡 등) 2. 인텐트로 action을 보내는 방법 이 외에도 공유하기는 메일이나 문자가 될 수도 있다. 1번으로 구현을 하려고 한다면 주의할 점은, 모든 SNS플랫폼이 SDK를 가지고 있는 것은 아니다. 각 SNS마다 공유하기 버튼을 직접 만들어 주어야하고 각 SNS마다 공유하기 로직을 해당 SNS플랫폼에 맞게 구현해 주어야 한다. 하지만 2번의 인텐트로 action을 보내는 방식은 OS에서 공유하기 System UI를 띄워주므로 작업량을 많이 줄일 수 있다. (아래는 코드 예시) val intent = Intent(Intent.ACTION_SEND) intent.type = "text/plain" intent..
안드로이드의 이미지뷰는 다양한 scaleType 옵션이 있다. 하지만 이 옵션만으로 모든 디자인 요구사항을 맞추기는 힘든데, 대표적으로 이미지 비율을 맞춰달라는 요구사항이 있다. 이 부분에 대해서는 scaleType 옵션이 아니라 adjustViewBounds 옵션을 사용해야 된다. 아래 코드는 width를 match_parent로 두고 높이값을 비율에 맞게 조절하는 예시이다.
Viewpager에서 마지막 page에 스크롤을하면 추가적으로 더 스크롤 할 페이지가 없다는 효과가 나타나게 된다. 이 색상을 없애려면 xml에서 Viewpager의 한가지 옵션을 추가해 주면 된다. 테스트 해보면 더이상 해당 효과가 나타나지 않는 것을 볼 수 있다.
안드로이드 개발을 하다보면 URL을 정의해야 하는 경우가 생긴다. 어떤 개발자들은 하드코딩으로 코드상에 URL을 넣어버리고 test, staging, real 서버를 주석을 풀어가면서 붙는 서버를 바꿔주기도 하는데 이는 굉장히 구리고, 실수의 여지가 있는 안좋은 방법이다. 그래서 우리는 Gradle에서 각 URL 세팅을 명시하고 세팅해 보도록 하자. 먼저 app 수준의 gradle로 가보자. android { compileSdkVersion 28 defaultConfig { applicationId "test.test.test" minSdkVersion 19 targetSdkVersion 28 versionCode 34 versionName "1.1.0" testInstrumentationRunner "..
앱을 개발하다보면 현재 앱이 Foreground 상태인지 Background 상태인지 체크해야 하는 상황이 온다. 예전에는 이러한 상태를 각 엑티비티 마다 체크하는 로직을 넣어서 종합하여 현재 앱이 백그라운드인지 포어그라운드 인지 결정해야 했는데 구글이 AAC 라이브러리를 발표하면서 훨씬 간단한 방법이 생겼다. 먼저 app.gradle에 라이브러리를 추가한다. implementation 'android.arch.lifecycle:extensions:1.1.1' 그다음 구현해놓은 Application에 다음과 같은 코드를 추가한다. class TestApplication: Application(), LifecycleObserver { override fun onCreate() { super.onCreate..
기존 자바에서 Parcelable을 만드려면 잡다한 보일러 코드들을 추가해야 했다. 하지만 코틀린은 역시 친절하게도 이 작업을 줄일 수 있는 방법을 고안해 주었는데, 아직 실험단계라고 하니 코틀린을 믿는자만 쓰도록 하자.(믿숩니다!) 먼저 실험적 문법을 사용하기 위해서는 앱 수준의 gradle에 다음을 추가하자. androidExtensions { experimental = true } 실험적 코드의 사용 여부를 true로 바꾼것이다. gradle sync를 한 다음 만들어둔 data class로 가보자 data class Test(val test1: Int, val test2: String, val test3: Float) 여기서 다음과 같이 어노테이션과 상속을 추가하자. @Parcelize data ..
안드로이드가 오레오, 파이로 넘어가면서 백그라운드 서비스를 다루기가 점점 어려워지고 있다. 사실 어려워진다는 얘기도 백그라운드에서 서비스를 돌리면서도 Notification을 띄우지 않는 기술에 대한 꼼수(?)가 어려워 지고 있는거지 Notification이 뜨든 말든 상관없는 초보자들은 더 혼동이 오기 마련이다. 그래서 안드로이드 초보자의 기준에서, 안드로이드의 백그라운드 서비스를 공식적인 방법으로 띄우는 방법에 대해 알아보자. 여기서 용어를 정의하고 넘어가야 하는데, 앱이 죽든 말든 백그라운드에서 서비스를 죽지않게 하고 싶다면 이것을 포어그라운드 서비스 라고 한다. 따라서 이하 포어그라운드 서비스 라고 부르겠다. 먼저 서비스를 만들어야 하는데 생각보다 간단하다. 서비스를 상속받은 예제 서비스를 만들자..
요구사항에 따라 앱을 만들다보면 간단한 달력을 구현할 일이 생긴다. 기본 calendar view를 사용할 수도 있지만, 대게 디자이너의 요구사항은 많은 커스텀이 들어간 상태이다. 필요한 캘린더를 위해 github의 수많은 라이브러리를 둘러보는 시간이 아까우니 캘린더 로직을 직접 만들어 보자. java는(kotlin도) Calendar 추상 클래스가 기본적으로 존재하기 때문에 RecyclerView의 GridLayout와 함께 사용하면 매우 간단하게 달력을 구현할 수 있다. 필자는 종속성을 줄이기 위해 아래와 같이 BaseCalendar를 구현하였다. /** * Created by WoochanLee on 25/03/2019. */ class BaseCalendar { companion object { ..
정리할 예정. 참고 https://www.androidhuman.com/lecture/kotlin/2017/11/26/kotlin_android_extensions_on_viewholder/
RecyclerView를 다룰때 padding을 그냥 주게되면 스크롤시 아래처럼 padding 공간만큼 가려지게 된다. 하지만 만약 원하는 요구사항이 RecyclerView 내부에서의 padding이고 스크롤시에는 padding이 없는 것이라면 방법이 있다. RecyclerView에 android:clipToPadding="false"로 옵션을 바꿔주면 다음과 같이 변한다. 스크롤시에는 padding이 사라진 것을 볼 수 있다.