Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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_Image_Animation_Translation - Fatal编程技术网

Android 使用运行时计算的变量在屏幕上移动图像

Android 使用运行时计算的变量在屏幕上移动图像,android,image,animation,translation,Android,Image,Animation,Translation,我想做一个简单的活动,在屏幕的一侧有一条船和一个按钮。按下一个按钮,我希望飞船向上移动X距离到顶部。该值X由运行时定义的值计算得出 我读过的关于动画和图像翻译的其他堆栈溢出帖子中,谈到了如何使用TranslationAnimation对象和其他类似类在屏幕上移动图像,但我尝试过的所有操作都需要给出文本值或最终变量 我需要帮助让我的图像通过动态变量在屏幕上移动。这可能吗?不要使用动画,使用Animator,这是一种新的做事方式 您可以设置视图的任何属性的动画。在这种情况下,ImageView可以容

我想做一个简单的活动,在屏幕的一侧有一条船和一个按钮。按下一个按钮,我希望飞船向上移动X距离到顶部。该值X由运行时定义的值计算得出

我读过的关于动画和图像翻译的其他堆栈溢出帖子中,谈到了如何使用TranslationAnimation对象和其他类似类在屏幕上移动图像,但我尝试过的所有操作都需要给出文本值或最终变量

我需要帮助让我的图像通过动态变量在屏幕上移动。这可能吗?

不要使用动画,使用Animator,这是一种新的做事方式

您可以设置视图的任何属性的动画。在这种情况下,ImageView可以容纳您的飞船。在这种情况下,可以设置边距动画以获得所需的效果。您希望将布局_marginTop从某个值设置为0

View shipView = ...;
ValueAnimator animator = ValueAnimator.ofInt(100, 0);
animator.setDuration(1000);
animator.addUpdateListener(new AnimatorUpdateListener() {

    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) shipView.getLayoutParams();
        lp.setMargins(0, (Integer) animation.getAnimatedValue(), 0, 0);
        shipView.setLayoutParams(lp);      
    }
});
animator.start();

注意,这假设您的shipView处于相对位置

我试了一段时间,但还是没有运气。我最终进入了画布方法。到目前为止,它看起来很有希望。