【问题标题】:Image animation move and scale together图像动画一起移动和缩放
【发布时间】:2016-07-27 15:29:08
【问题描述】:

我有 4 个图像视图我想通过移动和缩放动画将图像 1 移动到图像 2 的位置。 [

我尝试过的缩放

ObjectAnimator scaleX = ObjectAnimator.ofFloat(img1, "scaleX", (float) img2.getWidth());
    ObjectAnimator scaleY = ObjectAnimator.ofFloat(img1, "scaleY", (float) img2.getHeight());
    scaleX.setDuration(2000);
    scaleY.setDuration(2000);
    AnimatorSet scale = new AnimatorSet();
    scale.play(scaleX).with(scaleY);
    scale.start();

【问题讨论】:

    标签: android android-layout android-animation


    【解决方案1】:

    ViewPropertyAnimator 可以节省大量代码,并且可以在一行中组合多个动画:

    img1.animate()
        .scaleX(toX)
        .scaleY(toY)
        .translationX(toX)
        .translationY(toY)
        .setDuration(2000);
    

    还有方法:

    .scaleXBy(byX)
    .translationYBy(byY)
    

    给定值缩放/翻译方法

    对于翻译,您必须记住:

    img2.getX();
    img2.getY();
    

    只为您提供视图 img2 左上角的坐标。

    你可能想要动画到 img2 的中心,这将是

    img2.getX() / 2;
    img2.getY() / 2;
    

    这样的组合应该可以工作:

    img1.animate()
        .scaleX(...)
        .scaleY(...)
        .translationX(img2.getX() / 2)
        .translationY(img2.getY() / 2)
        .setDuration(2000);
    

    编辑:我在开发人员培训网站上找到了此页面,您可以查看:

    Zooming a view

    【讨论】:

    • 感谢您的解决方案。但它不起作用。我刚刚检查了文档 - 缩放的意思是“设置视图围绕枢轴点以 x 为单位缩放的量,作为视图未缩放宽度的比例。值 1 表示不应用缩放。”
    • 那么您只需要 scaleX() 和 scaleY() 的其他值,例如 scaleX(2) 缩放到原始大小的两倍。
    • 但是我怎样才能赋予其他图像视图高度和宽度的价值。
    猜你喜欢
    • 1970-01-01
    • 2013-07-02
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 2013-05-31
    • 1970-01-01
    • 2014-12-05
    相关资源
    最近更新 更多