2014年5月22日 星期四

Android 開發 (四十七) rebound animation library

想要客製出順暢的動畫,對RD來說其實算是一大考驗,
必須花很多額外的時間去tune才能得到不錯的效果,
今天要來介紹一個library,使用他之後就可以讓我們輕鬆達到動態的效果,
 先看一下效果吧..





 接著看一下該如何實做出這麼神奇的功能吧

使用rebound library

			mSpring = SpringSystem.create().createSpring()
					.setSpringConfig(ORIGAMI_SPRING_CONFIG)
					.addListener(new SimpleSpringListener() {
						@SuppressLint("NewApi")
						@Override
						public void onSpringUpdate(Spring spring) {
							doUpdate();
						}
					});

這邊是先做init的動作,設定參數,當 mSpring的value更改時 listener就會被trigger,


				@Override
				public void onClick(View v) {
					Log.d("Ted", "val " + mSpring.getEndValue());
					if (mSpring.getEndValue() == 0) {
						mSpring.setEndValue(1);
					} else {
						mSpring.setEndValue(0);
					}
				}

當我在click時執行 setEndValue 1 或 0 ,
就會trigger  listener, 接著我可以利用下面的function 取得動畫所需要的數值,並且執行動畫效果


			double val = mSpring.getCurrentValue();
			float Translate = (float) SpringUtil
					.mapValueFromRangeToRange(val, 0, 1, 300, 0);
			float Scale = (float) SpringUtil
					.mapValueFromRangeToRange(val, 0, 1, 3, 1);
			mImg.setTranslationX(Translate);
			mImg.setTranslationY(Translate);
			mImg.setScaleX(Scale);
			mImg.setScaleY(Scale);

如果仔細去看 Translate的值,以及Scale的值,可以發現他並不是線性的在變化,利用這些數值的變化,就可以產生特別的動畫效果,簡單的說 Spring其實只不過是個數值產生器(當然實作起來是有一定難度的),利用這個數值產生器,我們就可以輕易的製作出動畫效果。


沒有留言:

張貼留言