一、縮放動畫介紹
Android縮放動畫,是改變控制項大小的一種動畫效果。通常會配合其他動畫效果,例如位移動畫、旋轉動畫等等,來實現更加生動的界面效果。
下面是一個簡單的縮放動畫示例:
mAnimateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AnimationSet animationSet = new AnimationSet(true);
animationSet.setInterpolator(new AccelerateDecelerateInterpolator());
animationSet.addAnimation(new ScaleAnimation(1, 1.5f, 1, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f));
animationSet.setDuration(1000);
animationSet.setFillAfter(true);
mImageView.startAnimation(animationSet);
}
});
以上代碼實現了當用戶點擊按鈕時,圖片控制項會從原大小縮放到1.5倍的大小。
二、縮放動畫屬性
縮放動畫的實現依靠了ScaleAnimation類。以下是ScaleAnimation類提供的屬性:
- fromX:動畫起始時 X軸的伸縮尺寸
- toX:動畫結束時 X軸的伸縮尺寸
- fromY:動畫起始時Y軸的伸縮尺寸
- toY:動畫結束時Y軸的伸縮尺寸
- pivotXType:縮放中心點的X軸坐標的類型
- pivotXValue:縮放中心點的X軸坐標的相對位置
- pivotYType:縮放中心點的Y軸坐標的類型
- pivotYValue:縮放中心點的Y軸坐標的相對位置
其中,伸縮尺寸的值必須在0~1之間,且0表示完全收縮,1表示完全伸展。縮放中心點的相對位置是以控制項的大小為基準的,取值範圍在0~1之間。
三、縮放動畫示例
1. 點擊時縮放
實現效果:當用戶點擊按鈕時,按鈕控制項會從原大小縮放到1.2倍的大小再縮放回原大小。
mScaleBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AnimationSet animationSet = new AnimationSet(true);
animationSet.setInterpolator(new AccelerateDecelerateInterpolator());
animationSet.addAnimation(new ScaleAnimation(1, 1.2f, 1, 1.2f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f));
animationSet.setDuration(300);
animationSet.addAnimation(new ScaleAnimation(1.2f, 1f, 1.2f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f));
animationSet.setDuration(300);
mScaleBtn.startAnimation(animationSet);
}
});
2. 逐漸縮小
實現效果:控制項開始時大小為填充父布局,逐漸減小到原大小。
mScaleLayout.post(new Runnable() {
@Override
public void run() {
float fromX = (float) mScaleLayout.getWidth() / mScaleLayout.getParent().getWidth();
float fromY = (float) mScaleLayout.getHeight() / mScaleLayout.getParent().getHeight();
float toX = 1.0f;
float toY = 1.0f;
ScaleAnimation scaleAnimation = new ScaleAnimation(fromX, toX, fromY, toY, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setDuration(500);
mScaleLayout.startAnimation(scaleAnimation);
}
});
3. 逐漸放大
實現效果:控制項開始時大小為原大小,逐漸增大到填充父布局。
mScaleLayout.post(new Runnable() {
@Override
public void run() {
float fromX = 1.0f;
float fromY = 1.0f;
float toX = (float) mScaleLayout.getWidth() / mScaleLayout.getParent().getWidth();
float toY = (float) mScaleLayout.getHeight() / mScaleLayout.getParent().getHeight();
ScaleAnimation scaleAnimation = new ScaleAnimation(fromX, toX, fromY, toY, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setDuration(500);
mScaleLayout.startAnimation(scaleAnimation);
}
});
四、總結
縮放動畫是一種常見的動畫效果,可以讓界面變得更加生動。android縮放動畫可以很方便地通過ScaleAnimation類來實現,並且可以根據需求進行自定義。在實際開發應用中,需要根據界面效果的要求來選擇不同的動畫實現方法,以達到最佳的用戶交互效果。
原創文章,作者:ZMYGH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/331423.html
微信掃一掃
支付寶掃一掃