我正在用它在椭圆形路径中绕过一个视图,但是我的问题是,当视图到达中间时,速度会有所降低!
public class morbit extends Animation {
@Override
public boolean willChangeBounds() {
return true;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
float degg = interpolatedTime * 360;
float angleDeg = (degg) % 360;
double sino = Math.sin(degg * Math.PI / -180);
sino= Math.abs(sino);
double coso = Math.cos(degg * Math.PI / -180);
coso= Math.abs(coso);
double rrr = 40 + (sino * 150);
float angleRad = (float) Math.toRadians(angleDeg);
angleRad = angleRad;
float y = (float) (40 * Math.cos(angleRad));
float x = (float) (rrr * Math.sin(angleRad));
t.getMatrix().setTranslate((float)x, (float)y);
}
}
。 。
morbit an = new morbit();
an.setDuration(6000);
an.setRepeatMode(Animation.INFINITE);
an.setRepeatCount(9999);
an.setInterpolator(new LinearInterpolator());
((ImageView) findViewById(R.id.dottx)).startAnimation(an);
我使用了LinearInterpolator
,但对我没有帮助。
答案 0 :(得分:1)
我希望您仍然不会陷入困境,但对于其他任何人,请尝试交换:
sino和coso for
select *
from (
select
*,
row_number() over(partition by row1 order by row3 desc) as rn
from t
) x
where rn = 1
并将rrr交换为
double sino =Math.sin(Math.PI + 200);
double coso = Math.cos(Math.PI + 400);
我现在只是自己处理这个问题,所以我不确定interpolatedTime的用途是什么,尽管我猜测它可以确保动画均匀分布。没有它,我似乎没有任何问题,虽然也许是问题所在。