生活随笔
收集整理的這篇文章主要介紹了
让你的动画不再生硬 Android插值器Interpolator使用秘籍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有木有厭煩生硬的動畫效果,想不想讓你的動畫變得圓滑且
歡迎收看本期的走進科學。。。
停,停,別打了,(。﹏。*) 我錯了……
我們要達到的效果:
先來回顧一下普通動畫的用法吧。
* 縮放動畫
ScaleAnimation sa =
new ScaleAnimation(
0.1f,
1f,
0.1f,
1f);sa.setDuration(
1000);tx.startAnimation(sa);
相信大家都已經會了。這個動畫的效果是這樣的:
看起來就只是線性變化啊!!!! 好生硬啊!!!!! 有沒有一種方法可以讓動畫的變化不是線性的呢,看起來有彈性。
廢話。當然有啊…不然我還在這里嘰里呱啦什么捏。。那就是插值器Interpolator。
看標題就知道這不是一個具體講插值器的博文,而是講秘籍。。。到底是啥呢。。其實就是一個可以在線預覽插值器效果的網站啦。。
插值器預覽
這個網站可以預覽各種插值器的效果,并且內置了幾種常見的效果:
比如這個spring效果,他根據這條曲線進行插值的。。 那么我們對代碼進行一下改造,應用到安卓上。
轉載請注明出處:http://blog.csdn.net/wingichoy/article/details/50667025
新建一個Interpolator類,實現getInterpolation()方法
為動畫集添加動畫效果
public class MyInterpolator implements Interpolator {@Overridepublic float getInterpolation(
float input) {
float factor =
0.4f;
return (
float) (Math.pow(
2, -
10 * input) * Math.sin((input - factor /
4) * (
2 * Math.PI) / factor) +
1);}
float bounce(
float t) {
return t * t *
8;}}
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
final TextView tx = (TextView) findViewById(R.id.txt);tx.setOnClickListener(
new View.OnClickListener() {
@Overridepublic void onClick(View v) {ScaleAnimation sa =
new ScaleAnimation(
0.1f,
1f,
0.1f,
1f);sa.setDuration(
1000);RotateAnimation ra =
new RotateAnimation(
0,
360, Animation.RELATIVE_TO_SELF,
0.5f,Animation.RELATIVE_TO_SELF,
0.5f);ra.setDuration(
1000);AnimationSet as =
new AnimationSet(
true);as.setInterpolator(
new MyInterpolator());
as.addAnimation(sa);tx.startAnimation(as);}});}
}
此時縮放的動畫效果如下:
這個…… 呃~~ -__-” 這個helloworld在顫抖。。有點邪惡(懂得面壁五分鐘!)。。
改成旋轉動畫試試:
呃呃呃。。確實好看多了。很平滑的感覺
說了半天其實就是:你可以把自己寫好的插值器或者在網上找的在這個網站上預覽,然后進行微調,最后達到滿意的效果。
如果本文對你有幫助就點個頂吧~
轉載于:https://www.cnblogs.com/muyuge/p/6333531.html
總結
以上是生活随笔為你收集整理的让你的动画不再生硬 Android插值器Interpolator使用秘籍的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。