안드로이드 페이스북홈 앱에 적용된 Rebound SpringSystem 기술 오픈소스로 공개

안드로이드 페이스북 홈 앱에 적용한 Rebound기술을 오픈소스로 공개 했다. 페이스북 홈의 설정화면이나 메인화면에서 바운드되는 기술이다.

View가 확대되거나 축소될때 또는 화면에서 보이지거나 사라질때 바운드되는 기술이다. 물리적으로 바운드되며 공을튀기면 재바운드되면서 천천히 멈추는것과 같다고 생각하면 된다.  

https://github.com/facebook/rebound

http://facebook.github.io/rebound/

SpringSystem은 0~1사이의 값에 대한 바운드되는 값들(아래)이 Listener를 통해 전달 받게 되는데, 이 값을 통해서 View의 scale, translate등 처리를 통해 애니메이션효과를 발생 할 수 있다. 이 Listener는 16ms간격으로 1초에 60프레임을 그릴 수 있도록 설계 된것 같다.  

12-13 12:58:55.739: D/(2546): val:1.1420746E-4
12-13 12:58:55.755: D/(2546): val:0.032622237
12-13 12:58:55.775: D/(2546): val:0.10306651
12-13 12:58:55.791: D/(2546): val:0.20331186
12-13 12:58:55.807: D/(2546): val:0.31625307
12-13 12:58:55.823: D/(2546): val:0.43169475
12-13 12:58:55.839: D/(2546): val:0.5361902
12-13 12:58:55.855: D/(2546): val:0.63830405
12-13 12:58:55.875: D/(2546): val:0.72852045
12-13 12:58:55.891: D/(2546): val:0.80141103
12-13 12:58:55.907: D/(2546): val:0.8693137
12-13 12:58:55.923: D/(2546): val:0.9177083
12-13 12:58:55.939: D/(2546): val:0.9578768
12-13 12:58:55.955: D/(2546): val:0.9863299
12-13 12:58:55.975: D/(2546): val:1.0070162
12-13 12:58:55.987: D/(2546): val:1.0219182
12-13 12:58:56.007: D/(2546): val:1.0309607
12-13 12:58:56.023: D/(2546): val:1.0354728
12-13 12:58:56.039: D/(2546): val:1.0366261
12-13 12:58:56.055: D/(2546): val:1.0355092
12-13 12:58:56.075: D/(2546): val:1.0329735
12-13 12:58:56.091: D/(2546): val:1.0293281
12-13 12:58:56.107: D/(2546): val:1.0252013
12-13 12:58:56.123: D/(2546): val:1.0212176
12-13 12:58:56.139: D/(2546): val:1.0169034
12-13 12:58:56.155: D/(2546): val:1.0133799
12-13 12:58:56.175: D/(2546): val:1.0102406
12-13 12:58:56.187: D/(2546): val:1.0073712
12-13 12:58:56.207: D/(2546): val:1.0049903
12-13 12:58:56.223: D/(2546): val:1.0030769
12-13 12:58:56.239: D/(2546): val:1.0015907
12-13 12:58:56.255: D/(2546): val:1.0005933
12-13 12:58:56.275: D/(2546): val:0.99976826
12-13 12:58:56.291: D/(2546): val:0.9992134
12-13 12:58:56.307: D/(2546): val:0.9988751
12-13 12:58:56.323: D/(2546): val:0.99871063
12-13 12:58:56.339: D/(2546): val:1.0

간단한 셈플코드

// Create a system to run the physics loop for a set of springs.
SpringSystem springSystem = SpringSystem.create();

// Add a spring to the system.
Spring spring = springSystem.createSpring();

// Add a listener to observe the motion of the spring.
spring.addListener(new SimpleSpringListener() {

  @Override
  public void onSpringUpdate(Spring spring) {
    // You can observe the updates in the spring 
    // state by asking its current value in onSpringUpdate.
    float value = (float) spring.getCurrentValue();
    float scale = 1f - (value * 0.5f);
    myView.setScaleX(scale);
    myView.setScaleY(scale);
  }

});

// Set the spring in motion; moving from 0 to 1
spring.setEndValue(1);

SpringSystem을 이용한 무한 확장가능한 뷰 개발이 가능 할 것으로 보여지며 사용하기가 쉽다. 뷰 자체를 만들기보다 이런 System을 통해 다양한 뷰를 개발 할 수 있도록 설계 했다는것에 아이디어도 괜찮은 것 같다. 

<

p style=”text-align: center;”>v3ab5jpndEXnmJJjrIQndQd

One thought on “안드로이드 페이스북홈 앱에 적용된 Rebound SpringSystem 기술 오픈소스로 공개”

  1. 안녕하세요 예제를 돌려 보고 싶은데요 프로젝트에서 어느 것을 받아서 실행해야 할까요? ㅜㅡ

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.