Android

SDK 버전을 높이기 위해 변경된 사항과 수정해야 할 사항들 중 중요하다 판단되는 것들을 알아보고 정리 Performance and battery Foreground Services (FGS) 작업 관리자 Android 13(API 33)에서는 타겟 SDK 버전과 관계없이 사용자가 "알림 창"에서 "포그라운드 서비스"를 중지할 수 있다. FGS 작업 관리자라고 하는 새로운 기능에는 현재 포그라운드 서비스를 실행 중인 앱 목록이 표시된다. 이 목록에는 활성 앱이라는 라벨이 적용되어 있다. 각 앱의 옆에는 중지 버튼이 있다. 아래 그림은 Android 13을 실행하는 기기에서 FGS 작업 관리자 워크플로를 보여준다. JobScheduler를 사용한 작업 미리 가져오기 처리 개선 JobScheduler는 앱이..
어느 순간 잘 뜨던 구글맵이 뜨지 않아 Logcat을 보았다. Authorization failure과 Ensure that the "Google Maps Android API v2" is enabled. 인증키 오류의 Log들이 찍힌 걸 확인 관련 검색을 해보면 Api가 활성화되어있나 확인해 보고 제한사항을 줄 때 패키지 이름을 제대로 주라는 말들이 대부분이다. 하지만 API도 다 활성화되어있고 제한사항의 패키지 이름과 Api 제한사항도 다 맞춰서 해놓았는데도 같은 오류가 반복되었다.. Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()..
프로젝트를 진행하다 아래 사진처럼 하단에 존재하면서 스크롤을 하거나 터치할 때 올라오는 뷰가 필요해 BottomSheet를 찾아보았다. Bottom Sheet BottomSheet의 종류로는 Persistent BottomSheet와 Modal BottomSheet 이 있다. Persistent는 특정 화면의 레이아웃에 속해있고, Behavior를 설정해 주면 동작시킬 수 있다. 즉, 특정한 컨텐츠에 속해있는 또 다른 화면. Modal은 안드로이드의 Toast처럼 어디에서나 띄울 수 있다. 프래그먼트(BottomSheetDialogFragment) 이용 Persistent BottomSheet 프로젝트에 사용한 구현 방법으로는 Persistent BottomSheet이다. CoordinatorLayout..
프로젝트 중 리스트가 처음 항목들이 나타날 때 우측에서 차례대로 등장하는 모션을 구현해야 해서 layoutAnimation을 이용해 RecyclerView의 Item에 동작 모션을 주었다. 각 Item들에 지정할 Animation 생성 res/anim/anim_list_slide_in_right.xml //위치 //투명도 //크기 RecyclerView에 지정할 LayoutAnimation 생성 res/anim/anim_slide.xml RecyclerView에 LayoutAnimation 지정 Programmatically val anim = AnimationUtils.loadLayoutAnimation(requireContext(), R.anim.anim_quiz_slide) recentRecycle..
프로젝트 개발 중 RecyclerView로 리스트를 구성 후 각 Item의 간격을 조정해 줄 일이 있어 ItemDecoration을 사용하여 구현하였다. RecyclerView의 ItemDecoration Class를 생성 outRect의 left속성에 값을 지정해 주었다. class HorizontalSpaceDecoration(private val leftSpace: Int) : RecyclerView.ItemDecoration() { override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) { outRect.left = leftSpace } } RecyclerView에 I..
개발을 하다 보면 동적으로 View들의 위치를 옮겨주거나 크기를 변경하는 등 Layout이나 View들을 코드에서도 바꿔야 할 경우가 생긴다. 코드에서 지정하기 위해 LayoutParam을 사용한 것을 포스팅한다. LayoutParam은 부모 레이아웃 안에서 View(뷰)가 어떻게 배치될지를 정의하는 속성 구체적으로 레이아웃 XML파일에서 앞에 layout_""이 붙는 속성들을 말하며, LayoutParams 클래스의 필드값과 매핑된다. 따라서 코드 상에서 LayoutParams객체를 통해 뷰의 레이아웃 파라미터 속성을 다룰 수 있다. 위와 같은 xml파일에서 andorid:layout_width, andorid:layout_height 가 레이아웃 파라미터이다. LayoutParams 클래스 구조 Vi..
프로젝트를 진행하다 TextView의 text에 원하는 컬러로 외곽선을 그리게 구현해야 할 일이 생겼다. CustomView를 생성해 속성을 추가하여 Canvas로 그려 Text의 외곽선을 그리는 방법이 있어 구현해보았다. attrs.xml 생성 ... //외곽선 사용유무 속성 //외곽선 두께 - dp 사용위해 dimension //외곽선 컬러 CustomTextView 생성 class OutlineTextView : AppCompatTextView { private var stroke = false private var strokeWidth = 0.0f private var strokeColor = 0 constructor(context: Context?) : super(context!!) {} con..
프로젝트를 진행하다 webp 이미지 파일을 표현하기 위해 Fresco의 SimpleDraweeView를 사용하여 동적 Image를 표현하였다. 사용하는 속성들을 알아보기 위해 구글링을 좀 해보았는데 레퍼런스가 다른 것들에 비해 적어 한눈에 보기 위해 포스팅한다. Fresco는 Facebook에서 공개한 이미지로딩 라이브러리 2.3(진저브레드) 이상 버전의 안드로이드를 지원 Fresco의 장점 간편한 이미지 변환 Fresco의 단점 ImageView가 아닌 DraweeView를 사용해야 함 DraweeView가 wrap_content를 지원하지 않아 요청할 이미지의 정확한 사이즈를 지정해야 함 특이사항 SimpleDraweeView는 ImageView를 부모 클래스로 가지고 있다 하지만, 절대로 setIm..
안드로이드 개발을 하다 보면 Context를 자주 사용하게 된다. Context에 대해 정확히 알아보지도 않고 당연스레 사용하다가 이번에 찾아보았다. Context Application 환경에 대한 전역 정보를 접근하기 위한 인터페이스 추상 클래스이며 실제 구현은 Android 시스템에 의해 제공 이를 통해 application 특화 리소스나 클래스 뿐만 아니라 Activity 런칭, 브로드캐스팅, intent 수신 등과 같은 application-level operation을 위한 up-call에 접근이 가능 Context의 중요 핵심 애플리케이션의 현재 상태를 나타냄 Activity와 Application의 정보를 얻기 위해 사용할 수 있음 Resource, Database, Shared Prefer..
bumjae
'Android' 카테고리의 글 목록 (2 Page)