개발/Android
-
layer-list 사용하여 이미지 합치기개발/Android 2021. 8. 2. 00:32
layer-list 최근 토이프로젝트를 진행하면서 원모양 안에 아이콘이 필요하여 vector icon들을 합칠 필요가 있었다. 안드로이드에서는 해당 기능을 지원하기 위해 layer-list를 제공해주고 있었는데 사용방법을 정리하고자 한다. 사용방법은 위 소스코드와 같이 layer-list로 wrap 해준 후 item 태그에 합칠 아이콘들을 차례대로 나열해주면 된다. 여백이 필요할 경우 위와 같이 top bottom left right에 필요한 만큼 마진을 주어 조절할 수 있다. 결과 위 아이콘 처럼 원 vector 이미지와 음소거 이미지가 합쳐진걸 볼수 있다.
-
UI 커스텀 할때 유용한 사이트개발/Android 2021. 7. 21. 01:27
UI 커스텀 할때 유용한 사이트 앱을 구현하는 중에 checkbox를 커스텀 하여 구현할 일이 있었는데, ui를 커스텀 하는데 유용한 사이트를 발견해서 공유하고자 합니다. 다른 UI 컴포넌트에서도 적용 가능하나 저같은 경우 checkbox에 적용했기 때문에 checkbox 커스텀으로 예시를 들겠습니다. 안드로이드 checkbox를 커스텀 하기 위해서는 xml로 디자인하여 직접 만드는 경우와 이미지를 구하여 checkbox를 커스텀 할 수 있습니다. logo marker 위의 사이트에 가면 직접 UI 로고를 만들 수도 있고, 아래그림과 같이 검색하여 원하는 디자인의 로고를 얻을 수 있습니다. 그리고 얻은 이미지를 아래 사이트를 통해서 해상도별로 얻으면 끝! App Icon Maker - Resize App..
-
Android Room TypeConverters개발/Android 2021. 7. 19. 01:01
Room TypeConverters 안드로이드 로컬 데이터베이스인 Room 같은 경우 컬럼에 List나 Data class를 사용하려 하면 에러가 발생하게 됨. 기본적으로 Room은 원시타입(int, short, long ....)과 wrapping 타입만 지원함. 왜 객체 참조를 허용하지 않을까? 클라이언트 측에서는 이 유형의 지연 로드가 일반적으로 UI 스레드에서 발생하기 때문에 실행 가능하지 않으며 UI 스레드에서 디스크에 관한 정보를 쿼리하면 상당한 성능 문제가 발생하기 때문에 객체참조를 허용하지 않음 때문에 개발자가 직접 TypeConverters를 구현해주어 Room database에 data class를 사용할 수 있게 해주어야 한다. 예시) ChatRoom data class ChatRoo..
-
(jetpack) LiveData개발/Android 2021. 7. 16. 22:15
LiveData란? LiveData는 Data의 변경을 관찰 할 수 있는 DataHolder 클래스 일반적인 Observable과는 다르게 LiveData는 안드로이드 생명주기를 알고있음 즉 액티비티나, 프레그먼트, 서비스 등과 같은 안드로이드 컴포넌트의 생명주기를 인식하며 그에 따라 LiveData는 활성상태(active)일때만 데이터를 업데이트 함 LiveData는 Observer 객체와 함께 사용 가능 LiveData가 가지고 있는 데이터에 어떠한 변화가 일어날 경우, LiveData는 등록된 Observer 객체에 변화를 알려주고, Observer의 onChanged() 메소드가 실행되게 됨. LiveData의 장점 Data와 UI간의 동기화 LiveData는 Observer 패턴을 따름, 그에 ..
-
Android 데이터 직렬화개발/Android 2021. 7. 15. 18:56
데이터 직렬화 직렬화란? 직렬화란 메모리 내에 존재하는 data를 보다 쉽게 전송 및 전달 하기 위하여 byte 형태로 나열하는 것을 직렬화라 한다. Android에서 컴포넌트간의 데이터 전달을 할때는 intent를 사용하여 data를 전달하는데 이때 객체형태의 데이터를 보낼때 직렬화가 필요하다. Serializable Serializable 은 자바의 표준 인터페이스로 데이터 클래스에서 해당 인터페이스를 상속하여 사용한다 장점 Serializable 인터페이스만 상속받으면 자동으로 직렬화를 해주기 때문에 간편하게 사용할 수 있다. 단점 속도가 굉장히 느림 (성능 이슈) Parcelable Parcelable은 자바 기반이 아닌 Android Sdk에서 직렬화를 지원해주는 인터페이스로 안드로이드에서 사용..
-
android notification 즉시응답개발/Android 2021. 7. 15. 18:44
# android 7.0 부터 위와 같이 notification이 올경우 즉시 답장을 보낼수 있도록 direct reply action을 지원하고 있습니다. remoteInput 객체를 아래와 같이 만듭니다. KEY_TEXT_REPLY는 원하시는 id값으로 만드시면 됩니다. DirectReplyReceiver라는 브로드캐스트를 저는 만들어 두었는데, 아래와 같이 intent를 만들게 되면 즉시 답장을 할시 해당 리시버의 onReceiver 콜백으로 가게 됩니다. 보낼 데이터가 있다면 replyIntent에 putExtra하여 보내면 됩니다. 전체 코드 replyaction 을 만들고 만들어 두신 notification builder에 addAction을 하시면 정상적으로 작동하게 됩니다. 메신저앱에 해당..
-
android 이미지 다중선택개발/Android 2021. 7. 13. 20:51
현재 메신저 앱을 만들고 있는중인데, 이미지를 다중 선택하여 전송하는 기능을 구현하여 한번 정리해 보려한다. intent 부분 val intent = Intent() intent.type = "image/*" intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); intent.action = Intent.ACTION_PICK requestActivity.launch(intent) intent에 Intent.EXTRA_ALLOW_MULTIPLE 해당 값을 true로 넣어주어야 멀티초이스를 지원하게 됨. requestActivity 부분 private val requestActivity = registerForActivityResult(ActivityResultContr..
-
(jetpack) ROOM 사용 방법개발/Android 2021. 7. 12. 18:09
(jetpack) ROOM 사용 방법 Android에서 로컬로 데이터베이스를 사용하는 고전적인 방법으로는 sqlLite가 있다. 더 간단하게 메모장처럼 사용하는 방식은 sharedPreference가 있다. android develop 사이트에서 sqlLite에 대한 설명 현재는 위와같은 이유로 jetpack 라이브러리에서 Room 라이브러리를 만들고 sqlite대신 사용하기를 권장하고 있음 Room DB 의 장점 Room은 SQLite에 대한 추상화 레이어를 제공하여 원활한 데이터베이스 액세스를 지원하는 동시에 SQLite를 완벽히 활용가능. 상당한 양의 구조화된 데이터를 처리하는 앱은 데이터를 로컬로 유지하여 이점을 얻을 수 있다.. 가장 일반적인 사용 사례는 관련 데이터를 캐싱하는 것. 이런 방식으..