一、縮放動畫介紹
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/331093.html