안드로이드 페이스북홈 앱에 적용된 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

“안드로이드 페이스북홈 앱에 적용된 Rebound SpringSystem 기술 오픈소스로 공개”에 대한 1개의 생각

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

댓글 남기기