Android

    [Android] Retrofit2

    안드로이드에서 API 서버와 통신을 하기 위한 라이브러리로 Retrofit2, Volley, HttpUrlConnection, OKHttp 등이 있다. 그중에서 가장 많이 사용되고 있는 라이브러리는 'Retrofit2'이고 이 라이브러리에 대해 자세히 알아보자. Retrofit2는? - Android에서 REST API 통신을 지원하기 위해 만들어진 라이브러리. - 전달받는 데이터를 Client가 필요한 형태로 가공하여 전달받는 Type-Safe 한 HTTP 클라이언트 라이브러리. - AsyncTask 없이 Background에서 작업을 수행하고 Callback을 통해 메인 스레드에서 동작. - OkHttp 라이브러리의 상위 구현체. Retrofit2의 장점 빨라진 성능 복잡하지 않은 구현 반복되는 작업..

    [Android] Shape에 margin 속성 추가하기

    외부 라이브러리를 사용하는 과정에서 화면에서 보일 TextView를 인자로 넘겨주는 경우가 생겼다. 설상가상으로 TextView 자체의 디자인도 복잡하고 margin 값 적용이 필요한 경우였는데, WindowManager.LayoutParams만 layoutparams로만 정의해야 하는 제약까지 있었다. 만약 LinearLayout이나 RelativeLayout으로도 layoutParams 정의가 가능하면 아래처럼 쉽게 끝낼 수 있다. layoutParams = LinearLayout.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT ).apply { setMargins(1,2,3,4)..

    [Android] 디바이스 화면 해상도 구하기

    fun getDeviceMetric(): ScreenSizeInfo = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { val displaySize = Point() context.getSystemService(WindowManager::class.java).defaultDisplay?.getRealSize(displaySize) ScreenSizeInfo( screenWidth = displaySize.x, screenHeight = displaySize.y ) } else { val metrics = context.getSystemService(WindowManager::class.java).maximumWindowMetrics ScreenSizeInfo..

    [Android] CameraX

    개요 Android Jetpack에 속해있는 CameraX는 카메라 기능을 적용하는데 작업 비용을 줄이고, 더 쉽게 접근할 수 있도록 고안되었다. 대부분의 안드로이드 기기에서 동작하도록 일관성 있고 사용하기 쉬운 API들을 제공한다. (안드로이드 5.0 즉, API level 21까지 호환된다.) CameraX는 Camera2의 기능을 활용하지만, LifeCycle를 인식하여 리소스를 보다 효율적이고 쉽게 관리할 수 있다. 마지막으로, 카메라X는 개발자들이 두 줄의 코드만으로 미리 설치된 카메라 앱이 제공하는 것과 동일한 카메라 기능을 활용할 수 있게 해 준다. CameraX Extensions는 지원되는 장치에 한하여 효과를 추가할 수 있는 선택적 추가 기능(Bokeh(Portrait), HDR, Ni..

    [Android] JitPack 안드로이드 라이브러리 모듈 배포하기

    개인적으로 사용하고 싶은 라이브러리를 제작하는 과정에서 어디서든지 사용할 수 있도록 JitPack을 통해 배포하는 방법을 알아보았다. Step 1. 배포 환경 만들기 먼저 app gradle을 아래와 같이 수정한다. plugins { id 'com.android.application' // 제거 id 'com.android.library' // 추가 id 'kotlin-android' id 'maven-publish' //추가 } android { defaultConfig { applicationId "com.mj.beautycal" //제거 minSdk 21 targetSdk 31 versionCode 1 versionName "1.0.0" testInstrumentationRunner "android..

    [Android] 안드로이드 스튜디오 GradleView Tasks 미노출시

    Gradle View의 Tasks 기능을 사용할 기능이 있어서 봤더니 아무리 찾아봐도 Tasks가 없었다. 4.2 이후 버전에서는 성능 향상때문에 task 리스트들이 숨겨지는 게 기본값으로 설정되어 있다고 한다. Preferences -> Experimental로 가서 'Do not build Gradle task list during Gradle sync' 체크박스를 해제하면 된다. 해제 후에는 'Sync Project with Gradle Files'를 한번 실행해주자.