【发布时间】:2016-09-05 22:35:02
【问题描述】:
我是 android 新手,想玩一点动画。 我想做什么:
每个小圆圈都应该是可点击的,目前只有数字 2 可以代替 1,反之亦然。我想我知道如何绘制圆圈并定位它周围的小圆圈(我正在研究它:P),但我不知道如何实现动画。有任何想法吗?提前致谢!
【问题讨论】:
我是 android 新手,想玩一点动画。 我想做什么:
每个小圆圈都应该是可点击的,目前只有数字 2 可以代替 1,反之亦然。我想我知道如何绘制圆圈并定位它周围的小圆圈(我正在研究它:P),但我不知道如何实现动画。有任何想法吗?提前致谢!
【问题讨论】:
哇……这是一个广泛的主题。
根据您打算如何绘制圆圈(我会使用自定义的View),您可能需要创建某种Animation(可能是AnimationTranslation)。
您甚至可以在 XML 中定义这些动画,很可能在 Animation Set 中定义,这样您就可以并行执行各种操作。
这可能是一个起点:)
【讨论】:
创建一个值动画变量作为全局变量
ValueAnimator mValueAnimator = new ValueAnimator();
然后将动画监听器添加到 valueanimator。
mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int angle = Integer.parseInt(animation.getAnimatedValue().toString());
}
});
每当您想旋转绘图或自定义视图时,我假设您已使用角度来旋转它们。
所以给动画师设置从角和到角。
mValueAnimator.setIntValues(fromAngle, toAngle);
开始动画。最好检查一下 animator 是否已经在运行。
if (mValueAnimator.isRunning()) {
mValueAnimator.end();
}
mValueAnimator.start();
现在您将在 AnimatorUpdateListener 的 onAnimationupdate() 方法中获取您设置为动画器值的动画值。
在这种情况下,该值是动画角度。使用角度为旋转设置动画。
没有人喜欢线性动画。所以尝试使用插值器。
mValueAnimator.setInterpolator(new DecelerateInterpolator());
您可以使用 AccelerateInterpolator、OvershootInterpolator 等等。
【讨论】: