屬性動畫的基本使用
阿新 • • 發佈:2018-11-19
動畫分為:幀動畫,補間動畫,屬性動畫
屬性動畫實現的效果與補間動畫非常相似,
最大的區別:屬性動畫真實的改變了控制元件的屬性,而補間動畫只是幻影
屬性動畫是在Android3.0以後才出現,所以要高於API11的情況下
下面是一些按鈕的點選事件:佈局就不寫了,比較簡單
@Override public void onClick(View v) { switch (v.getId()) { case R.id.tranlate: //平移 ObjectAnimator translationY = ObjectAnimator.ofFloat(image, "translationY", new float[]{10f, 20f, 50f}); //時長 translationY.setDuration(2000); //執行模式 translationY.setRepeatMode(ObjectAnimator.RESTART); //重複次數 translationY.setRepeatCount(1); //開始 translationY.start(); break; case R.id.rotate: //旋轉 ObjectAnimator rotationX = ObjectAnimator.ofFloat(image, "rotationX", 90f, 180f, 360f); rotationX.setDuration(3000); rotationX.setRepeatMode(ObjectAnimator.REVERSE); rotationX.setRepeatCount(2); rotationX.start(); break; case R.id.alpha: //漸變 0.0是完全透明 ObjectAnimator alpha = ObjectAnimator.ofFloat(image, "alpha", 0.0f, 1.0f); alpha.setDuration(2000); alpha.setRepeatCount(3); alpha.setRepeatMode(ObjectAnimator.REVERSE); alpha.start(); break; case R.id.scale://伸縮 ObjectAnimator scale = ObjectAnimator.ofFloat(image, "scaleX", 1f,4f,5f); scale .setDuration(2000); scale .setRepeatCount(3); scale .setRepeatMode(ObjectAnimator.REVERSE); scale .start(); break; case R.id.animatorset://動畫集合 AnimatorSet animatorSet = new AnimatorSet(); ObjectAnimator sc = ObjectAnimator.ofFloat(image, "scaleX", 1f,4f,5f); sc.setDuration(2000); ObjectAnimator rotation = ObjectAnimator.ofFloat(image, "rotationX", 90f, 180f, 360f); rotation.setDuration(2000); animatorSet.playTogether(sc,rotation); animatorSet.start(); break; } }