-
Notifications
You must be signed in to change notification settings - Fork 39
1. Propose 개요
웹환경이든 모바일 환경이든 사용자 터치에 의한 동적인 인터렉션 화면을 구현하려면
상당히 까다로울 것이다. 적어도 Android에서는 Propose를 사용하면 쉽게 해결 할수 있을 것이다.
Propose는 Animation 객체를 재료로 사용하기 때문에 개발자는
기본적으로 Animation을 구현을 잘해야 한다. 하지만 걱정하지 마라.
Animation 객체는 Android의 표준 Animation API를 사용하기 때문이다.
Animation API는 입문 서적에서 간단히 다루어질 만큼 쉽다.
Propose는 Animation에 터치 인터렉션을 부여해주는 API를 제공한다.
개발자는 Animation을 작성하고 Propose에 등록만 하면 터치 인터렉션이 부여된다.
Propose는 기존에 어렵게 개발해 왔던 터치 좌표에 대한 물리적 연산을 내부적으로 처리해준다.
연산된 좌표는 Animation과 동기화 되어 손가락을 따라 Animation이 움직이는 놀라움을 안겨준다.
이처럼 Propose와 Animation은 깊은 연관관계를 가지고 있다.
안드로이드 3.0 이후 Property Animation(ValueAnimator,ObjectAnimator) 이라는
강력한 애니메이션 클래스들이 추가되었다.
Google에서 ValueAnimator 소개 영상을 처음 접했을때 실로 놀랐웠다.
나이스한 어떤 애니메이션이든 표현이 가능했고 단순하며 쉽게 구현되는 모습보고
앞으로는 모든 앱들이 굉장히 다이나믹해질꺼라 여겨졌다.
그런데 현실은 조금 달랐다. 앱은 가만히 보고만 있는 비디오가 아니기 때문이다.
사용자에 의해 반응하고 서로 소통을해야 의미가 있었다.
Drag, Fling 등 사용자의 제스처를 소화못하는 애니메이션은 반쪽짜리에 불과했다.
실제 SlidingMenu가 유행했을때에도 개발자들은 CustomView를 제작하거나
인터넷을 뒤져 오픈소스를 찾기 바빴다. 단순 클릭만으로 슬라이딩을 하는것이라면
ObjectAnimator를 써서 코드 몇줄이면 되지만 사용자들은 Drag나 Fling도 되길 원했다.
그리하여 애니메이션의 갑 of 갑인 ValueAnimator,ObjectAnimator는
개발자들에게 많이 쓰여지질 않았다.
Web이 그랬듯이 사람들은 점점 액티브한 앱을 선호할것이다
아직은 대부분 앱들이 정적이고 표현되는 모션들이 거의 비슷하여 특색을 찾기 힘들다.
메이저급 앱에서 좋은 모션이 있다면 그에 관련되서 찾기 바쁠뿐
스스로 만들수 있다는 생각을 하지 못하는것 같다.
아니면 Touch관련 입력은 매우 어렵고 오래걸리는 작업이라 여겼을지도 모른다.
이런 생각은 나를 비로서 알수 있었다. 나한테는 모션이 어렵고 힘든 작업이었다.
또한 CustomView는 재활용이 힘들었고 매번 다시 재작하는 느낌이었다.
나는 이것을 "CustomView Hell" 이라 불렀다.
Hell에서 벗어나기 위해 많은 오픈소스로 눈을 돌렸지만 이것도 해결책이 되지는 못했다.
오프소스를 이해하는데 많은 시간이 걸렸고 요구사항에 맞게 수정도 힘들었다.
이젠 "OpenSource Hell" 이 되어버렸다.
처음 Propose는 이야기책을 만들어 청혼하기 위한 개인 프로젝트였다.
생각처럼 제대로 되는건 하나도 없었고 청혼도 못하였다.
물론 청혼도 Hell이 되어버렸다.
Propose 초창기 버전의 시작은 CustomView의 재활용이라는 컨셉으로 시작되었다.
CustomView를 재활용하기 위해 애니메이션 영역과 모션영역을 분리했다.
모듈을 분리함으로써 새로운 Interaction을 만들고 재활용했다.
하지만 CustomView 형식의 애니메이션모듈은 제작하기 힘들었고 제공되는 종류가 적었다.
또한 애니메이션의 필수 구현요소인 Thread는 안정성을 위해 많은 테스트를 거쳐야했다.
이 문제들을 해결하기 위해 애니메이션 모듈의 개선이 필요했고 기존에 잘쓰고 있던
Android의 Property Animation에 눈길을 돌렸다.
무엇보다도 Property Animation은 Android 표준이며 애니메이션의 다양한 종류와 구현이 매우 쉬웠다. 그리하여 Propose는 Property Animation과 함께 재탄생 했다.
- Android의 순수 Java로 개발이 가능합니다.
- 기존의 몇 백, 몇 천 줄의 소스코드로 작성했던 부분을 단 몇줄의 소스코드로 개발이 가능합니다.
- 게임엔진이 아닌 Android SDK 기반하에 동작하기 때문에 SDK의 모든 리소스가 사용가능합니다.
- 간단한 애니메이션 작성만으로 동작하기 때문에 개발이 쉽고 빠릅니다.
- View를 커스텀하지 않고 Touch속성을 부여하는 방식으로 확장성 및 재사용성이 쉽습니다.
- Thread와 라이프 사이클을 Android에서 관리하여 안정성을 보장받는다.
- Android 표준 Animation으로 개발자의 접근성이 높다.
- Animation들 간의 조합과 Motion을 복합 조합함으로 자유도 높은 고품질의 표현이 가능하다.
이렇게 Propose는 View의 customize 한계를 극복하기 위해 시작되었고 안전하고, 쉽고, 익숙한 방법으로 고품질의 Interaction을 구현할수 있게 도와준다.