Serialization 이란?- 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정. 자바에서 정의하는 Serialization 이란 ?- 자바 언어에서 사용되는 Object 또는 Data를 다른 컴퓨터의 자바 시스템에서도 사용 할 수 있도록 바이트 스트림 형태로 변환하는 포맷 변환 기술을 말한다.- 반대 개념인 역직렬화(Deserialization)는 바이트 스트림으로 변환된 데이터를 자바 시스템의 Object 또는 Data로 변환하는 기술이다. 너무 깊이 가지 말고 간단하게 정리하자면... Android 에서는 컴포넌트간의 Bundle을 통한 데이터 전달이나 서버통신을 할 때 필수적으로 하는 것이 데이터의 직렬화/역직렬화다.보통 Ja..

프로젝트 진행을 하다보면 많은 라이브러리를 참조하게 된다. "그런 라이브러리를 나도 한번 만들어보자" 란 생각을 가진 사람이라면 일단 만들어보자. 널리 사용되는 원격 저장소에는 Maven central과 Bintray jcenter가 있지만 실제로 배포하기까지는 많은 과정을 거쳐야 된다. 하지만 Jitpack을 이용하면 쉽게 등록할 수 있다. Jitpack으로 간단하게 Open Source Library를 배포해보자 1. Android Project 생성한다. - Android Studio를 실행시켜서 프로젝트르 생성한다. 2. Module을 추가한다. - File -> New -> Module -> Android Library 3. Project gradle 설정 classpath "com.github..

목표 : RecyclerView의 Item을 선택할 경우 확장 축소 동작 구현 1. Item layout에 Exapnd View 추가 2. Custom Adapter에 아이템 선택에 따른 확장 축소 관련 부분 추가 SparseBooleanArray를 사용하여 [position, select]에 대한 데이터 처리 // 선택 데이터 리스트 private var selectedItems: SparseBooleanArray = SparseBooleanArray() onBindViewHolder 함수의 TaskViewHolder 부분에 확장 뷰 관련 처리 추가 // 아이템 데이터를 사용하여 각 아이템 값 설정 holder.itemView.apply { tv_item_default_name.text = item.n..

목표 : RecyclerView의 상단에 Header Item, 하단에 Footer Item 을 추가 1. header, footer item layout 추가 - 둘 다 간단하게 텍스트 뷰를 중앙에 위치시킴 2. Custom Adapter에 Header, Footer에 대한 처리 구현 getItemCount에 헤더,풋터 갯수를 포함 getItemViewType에 position에 따른 타입 반환 추가 각 타입에 따른 ViewHolder Class 추가 onCreateViewHolder에서 각 타입에 따른 ViewHolder Class 반환 추가 onBindViewHolder에 각 ViewHolder에 따른 처리 추가 class RvExampleDefaultAdapter : RecyclerView.Ada..
1. Custom Adapter에 삭제를 위한 함수를 추가한다. #1 을 통해 제작된 코드에 추가 // 내부 데이터 값 제거 fun removeTask(position: Int) { tasks.removeAt(position) notifyDataSetChanged() } 2. ItemTouchHelper 클래스 구현 ItemTouchHelper.SimpleCallback 구현 (드래그 방향과 스와이프 방향 설정) attachToRecyclerView를 통해 RecyclerView와 연동 onSwiped에서 Adapter에 삭제에 대한 처리 함수 호출 fun initRecyclerView() { // Recycler View에 Custom Adapter 설정 rv_example_recyclerview.ad..

목표 : Recycler View 기본 타입 구현 1. 레이아웃 파일에 RecyclerView 추가 2. RecyclerView에서 사용할 Item 레이아웃 파일 생성 - 여기에서는 이름, 세부내용, 이미지로 구성 3. Data Class 생성 Item 레이아웃과 맞춤 data class Task(val name: String, val details: String, val image: Uri) 4. Adapter Class 생성 내부 데이터 구현(list) ViewHolder 클래스 구현 onCreateViewHolder, getItemCount, onBindViewHolder 구현 내부 데이터 처리를 위한 함수 구현 (set, add, remove) class RvExampleDefaultAdapter..
이번에는 원형으로 움직이는 버튼을 구현해보겠습니다. 위의 그림은 화면 상에 위치한 슬라이드 버튼이 터치의 움직임에 따라 각도를 계산하여 원형으로 움직이는 모습입니다.간단하게 말하면 중심 위치를 기준으로 터치된 좌표의 각도를 구하여 슬라이드 버튼을 위치시키고 배경색을 칠하는 것입니다.그 중에서 슬라이드 버튼의 좌표를 구하는 공식은 다음과 같습니다.x = radius * cos(angle) + centerX y = radius * sin(angle) + centerY위의 식으로 간단하게 원을 따라 움직이는 슬라이드 버튼을 구현하였습니다. 여기에서 각 좌표의 값에 슬라이드 버튼의 절반 사이즈를 빼줘야 슬라이드 버튼의 중심이 원을 따라 움직이게 됩니다.이런 슬라이드 버튼은 이동 가능 각도를 조절하거나 백그라운드..
이번에는 다음과 같이 드래그해서 view를 올리고 내리는 컨셉으로 구현해보겠습니다. 첫번째 뷰는 사용자가 드래그 할 수 있는 뷰 컨트롤 버튼 이고 두번째는 첫번째 확장 세번째는 두번째 확장입니다.슬라이드 layout xml 파일에서 ImageView를 세개 두어 다음과 같이 컨트롤 버튼 부분과 확장 뷰 2개를 두었습니다.이동은 다음과같이 animation을 적용하여 absolute position으로 이동하고 있습니다. yBy(0)은 현재 뷰의 위치에서 시작하는 것이고 y(...)은 도착하는 위치를 표시합니다. getView().clearAnimation();getView().animate().setDuration(ANI_MOVE_DELAY).yBy(0).y(destination to move).setL..
Eclipse에서 안드로이드 프로젝트를 새로 만들게 되면 appcompat_v7이라는 library가 기본적으로 붙는 것을 확인 할 수 있다.이로 인해 귀찮은 에러들이 발생하는 일이 있기에 appcompat_v7 library의 의존성을 제거합니다. 다음과 같이 프로젝트의 Properties->Android를 선택하게 되면 library의 존재를 확인할 수 있습니다. 1. appcompat_v7을 선택 후 remove를 합니다.2. res/values/styles.xmlAppBaseTheme의 Theme.AppCompat.Light를 @android:style/Theme.Light로 변경합니다.3. res/values-v11/styles.xmlAppBaseTheme의 Theme.AppCompat.Ligh..
오늘은 gridView나 listView같이 item이 여러개 들어있는 뷰에서 drag & drop을 하는 부분에 대해 간단하게 설명하겠습니다. before Item drag // item의 bitmap을 얻어오기 위해 setDrawingCacheEnagled()을 통해 drawing cache에 업데이트 된 뷰의 정보를 저장하게 됩니다. 그리고 getDrawingCache()를 통해 캡쳐된 bitmap을 가져오게 됩니다. 이 부분은 WindowManager로 FloatingView를 만들고 bitmap을 가져오는 부분을 보면 됩니다. setDrawingCacheEnabled(true) 후에 setDrawingCacheEnabled(false)를 하지 않게 되면 floatingView에 잘못된 비트맵 이..
- Total
- Today
- Yesterday
- auto depoly
- data transfer
- qtwebengine
- Git
- C++
- kotlinx serialization
- android open source
- 자동 배포
- Parcelable
- weak_ptr
- remove item
- git hook
- Apache
- security.ubuntu.com
- jitpack
- build server
- 리사이클러뷰 확장
- RecyclerView
- kotlin
- swip
- Jenkins
- 오픈 소스 배포
- android serialization
- serializable
- publish opensource
- type inference
- delete item
- git server
- ubuntu 16.04
- expandable recyclerview
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |