-1
我想爲片段過渡創建自定義動畫。動畫呈圓形,從特定尺寸增加其半徑直至等於窗口高度。我可以使用ScaleAnimation,但是我會失去可繪製的質量。有人有任何想法可以做到這一點。提前致謝。Android片段過渡自定義視圖
我想爲片段過渡創建自定義動畫。動畫呈圓形,從特定尺寸增加其半徑直至等於窗口高度。我可以使用ScaleAnimation,但是我會失去可繪製的質量。有人有任何想法可以做到這一點。提前致謝。Android片段過渡自定義視圖
好的。我會回答我自己的問題:)。要使用我的自定義過渡(一個增加其大小的彩色圓圈)對片段過渡進行動畫製作,我做了以下操作: - 創建一個自定義視圖,繪製一個圓並添加增加其半徑的可能性; - 將此視圖置於我的FragmentActivity xml layout; - 當目標按鈕被點擊並且片段應該改變時我調用ValueAnimator來改變圓的半徑;
最終代碼會是這個樣子:
public class MainScreenActivity extends AppCompatActivity {
private Button targetButton;
private CircleView circleView;
public void targetButtonClick(View view) {
AnimationHandler handler = new AnimationHandler(view.getX(),view.getY());
handler.animate();
}
private class AnimationHandler implements Animator.AnimatorListener, ValueAnimator.AnimatorUpdateListener {
private static final int TRANSITION_ANIM_DURATION = 500;
private final float centerX;
private final float centerY;
private ValueAnimator valueAnimator;
public AnimationHandler(float x, float y) {
this.centerX = x;
this.centerY = y;
init();
}
private void init() {
Point point = new Point();
getWindowManager().getDefaultDisplay().getSize(point);
valueAnimator = ValueAnimator.ofFloat(0, point.y);
valueAnimator.setDuration(TRANSITION_ANIM_DURATION);
valueAnimator.addUpdateListener(this);
valueAnimator.addListener(this);
}
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
@Override
public void onAnimationUpdate(ValueAnimator animation) {
circleView.setRadius((float) animation.getAnimatedValue());
}
public void animate() {
circleView.setXCenter(centerX);
circleView.setYCenter(centerY);
int color = getResources().getColor(android.R.color.dark_red);
circleView.setStrokeWidth(getResources().getDimensionPixelSize(R.dimen.trans_circle_width));
valueAnimator.start();
}
}
}