Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解释Android动画上的坐标系?_Android_Animation_Coordinate Systems - Fatal编程技术网

如何解释Android动画上的坐标系?

如何解释Android动画上的坐标系?,android,animation,coordinate-systems,Android,Animation,Coordinate Systems,我们知道,android坐标系是从android屏幕的左上角开始的。x轴是向下生长的,y轴是向右生长的。但是我发现它不适合动画 例如,我使用构造的函数初始化了TranslateAnimation: TranslateAnimation ta = new TranslateAnimation(0.0f, 200, 0.0f, 200); 坐标系改变了吗?我发现它不是从左上角开始的 然后,我初始化了另一个translateAnimation以向上和向右移动: TranslateAnimatio

我们知道,android坐标系是从android屏幕的左上角开始的。x轴是向下生长的,y轴是向右生长的。但是我发现它不适合动画

例如,我使用构造的函数初始化了TranslateAnimation:

TranslateAnimation ta = new TranslateAnimation(0.0f, 200, 0.0f, 200);  
坐标系改变了吗?我发现它不是从左上角开始的

然后,我初始化了另一个translateAnimation以向上和向右移动:

TranslateAnimation ta = new TranslateAnimation(0.0f, 200, 0.0f, -200); 
ta.setReaptMode(Animation.REVERSE);
同样的行为也会被发现。
我对此感到困惑。

我认为TranslateImation的构造函数使用delta。看见或者查看构造函数的标志:<代码>(从xDelta开始浮动,从xDelta开始浮动,从ydelta开始浮动,从ydelta开始浮动)。所以如果你想要你的动画。若要首先跳转,可以使用负的第三个参数

更准确地说:

直到布局完成后,动画才能开始。除此之外,人们通常不必担心算法的工作原理,因为算法基本上是非常好的,您可以通过设置来控制其策略。简言之,当动画开始时,我们知道您希望视图在屏幕上的位置,因为您设置了布局参数

“平移”动画然后从该位置获取增量。因此,当前动画不应该从左上角开始,而应该从onMeasure评估这些布局参数的位置开始

有人会说——真烦人。即使你只想做一些简单的上下式动画,它也会变得复杂。。。嗯,这是一个明智的发展战略;它将使安卓动画开发成为一种娱乐。在每个动画上设置一个。在onAnimationEnd中,可能以参数化的方式,将动画视图上的布局参数重置为您期望的位置。这样,当您再次应用动画时,不会出现令人惊讶的“跳跃”。在某些情况下,您可能需要
使
无效,或者
clearAnimation
。这样做的原因是测量过程将再次出现,并且您的
TranslateAnimation
将有一个新的偏移量。最后,您可能希望使用侦听器中的
post(Runnable-Runnable)
执行所有这些重置发布到视图的消息队列中,这样您就可以结束动画绘制的最后一个过程

我也发现android动画有时会让你感到惊讶,并导致神经质的行为。但是,如果您这样做,那么使用delta参数的构造函数就不会再让人困惑了