草庐IT

Android动画,同时移动和旋转

coder 2023-12-25 原文

我正在制作 ImageView 的动画,它向右移动并同时旋转。我可以使用

移动项目
    animation = new TranslateAnimation(0, level, 0, 0);
animation.setDuration(1000);
animation.setRepeatCount(0);
animation.setFillAfter(true);

Level是我当时定义的变量。我知道旋转的代码是

RotateAnimation rotate = new RotateAnimation(0,rotate,0,0);
    rotate.setDuration(1000);
    rotate.setRepeatCount(0);
    animation.setFillAfter(true);
    bPick.setAnimation(rotate);

再次旋转是我在顶部定义的变量。

我的问题是,如何将这两者结合起来?我试过使用线程

    private Runnable myThread = new Runnable() {

    @Override
    public void run() {
        while (level < 100) {
            try {
                myHandle.sendMessage(myHandle.obtainMessage());
                Thread.sleep(15);
            } catch (Throwable t) {
            }
        }

    }

    Handler myHandle = new Handler() {

        @Override
        public void handleMessage(Message msg) {

            level++;
            animation = new TranslateAnimation(0, level, 0, 0);
            animation.setDuration(1000);
            animation.setRepeatCount(0);
            animation.setFillAfter(true);
            bPick.setAnimation(animation);

        }
    };
};

这将使它向右移动,但是如果我也尝试添加旋转,它不起作用,或者它会崩溃。

任何帮助将不胜感激,干杯

编辑

我需要这个的原因是我有一个带镐的量规。

我要求量规拨片向右移动,同时慢慢向右旋转。它向右移动多少取决于 int 变量设置。它将从 0 - 100 开始。0 是起始位置,100 将向右移动,如下所示

最佳答案

您需要使用 AnimationSet .

我制作的一个 XML 示例,它同时从左到右、上下移动和旋转图像。

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Rotate -->
    <rotate android:fromDegrees="30" android:toDegrees="0"
        android:pivotX="50%" android:pivotY="50%" android:repeatCount="4"
        android:repeatMode="reverse" android:duration="2000"
        android:interpolator="@android:anim/linear_interpolator" />
    <!--  Left to right -->
    <translate android:fromXDelta="-50%p" android:toXDelta="150%p"
        android:fromYDelta="100%p" android:toYDelta="0" android:duration="10000"
        android:interpolator="@android:anim/linear_interpolator" />
    <!--  Up and down bob -->
    <translate android:fromXDelta="0" android:toXDelta="0"
        android:fromYDelta="30" android:toYDelta="-30" android:repeatMode="reverse"
        android:repeatCount="4" android:interpolator="@android:anim/linear_interpolator"
        android:duration="2000" />
</set>

代码示例(以上不重复):

AnimationSet animationSet = new AnimationSet(true);

TranslateAnimation a = new TranslateAnimation(
        Animation.ABSOLUTE,200, Animation.ABSOLUTE,200,
        Animation.ABSOLUTE,200, Animation.ABSOLUTE,200);
a.setDuration(1000);    

RotateAnimation r = new RotateAnimation(0f, -90f,200,200);
r.setStartOffset(1000);
r.setDuration(1000);

animationSet.addAnimation(a);
animationSet.addAnimation(r);
imageView.startAnimation(animationSet)

(摘自here)

关于Android动画,同时移动和旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8418501/

有关Android动画,同时移动和旋转的更多相关文章

  1. ruby - 多次弹出/移动 ruby​​ 数组 - 2

    我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby​​数组,我们在StackOverflow上找到一

  2. ruby-on-rails - 如何重命名或移动 Rails 的 README_FOR_APP - 2

    当我在我的Rails应用程序根目录中运行rakedoc:app时,API文档是使用/doc/README_FOR_APP作为主页生成的。我想向该文件添加.rdoc扩展名,以便它在GitHub上正确呈现。更好的是,我想将它移动到应用程序根目录(/README.rdoc)。有没有办法通过修改包含的rake/rdoctask任务在我的Rakefile中执行此操作?是否有某个地方可以查找可以修改的主页文件的名称?还是我必须编写一个新的Rake任务?额外的问题:Rails应用程序的两个单独文件/README和/doc/README_FOR_APP背后的逻辑是什么?为什么不只有一个?

  3. 旋转矩阵的几何意义 - 2

    点向量坐标矩阵的几何意义介绍旋转矩阵的几何含义之前,先介绍一下点向量坐标矩阵的几何含义点:在一维空间下就是一个标量,如同一条直线上,以任意某一个位置为0点,以一定的尺度间隔为1,2,3...,相反方向为-1,-2,-3...;如此就形成了一维坐标系,这时候任何一个点都可以用一个数值表示,如点p1=5,即即从原点出发沿着x轴正方向移动5个尺度;点p2=-3,负方向移动3个尺度;     在一维坐标系上过原点做垂直于一维坐标系的直线,则形成了二维坐标系,此时描述一个点需要两个数值来表示点p3=(3,2),即从原点出发沿着x轴正方向移动3个尺度,在此基础上沿着y轴正方向移动两个尺度的位置就是点p3。

  4. Unity 3D 制作开关门动画,旋转门制作,推拉门制作,门把手动画制作 - 2

    Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u

  5. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  6. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  7. ruby - 使用 ruby​​ gem net-ssh-multi 同时在多个服务器上执行 sudo 命令 - 2

    在previousquestion中我想出了如何在多个服务器上启动经过密码验证的sshsession来运行单个命令。现在我需要能够执行“sudo”命令。问题是,net-ssh-multi没有分配sudo需要运行的伪终端(pty),导致以下错误:[127.0.0.1:stderr]sudo:sorry,youmusthaveattytorunsudo根据documentation,可以通过调用channel对象的方法来分配伪终端,但是,以下代码不起作用:它会生成上面的“notty”错误:require'net/ssh'require'net/ssh/multi'Net::SSH::Mul

  8. LVGL V8动画 - 2

    动画/*INITIALIZEANANIMATION 初始化一个动画*-----------------------*/lv_anim_ta;lv_anim_init(&a);/*MANDATORYSETTINGS 必选设置*------------------*//*Setthe"animator"function 设置“动画”功能*/lv_anim_set_exec_cb(&a,(lv_anim_exec_xcb_t)lv_obj_set_x);/*Setthe"animator"function*/lv_anim_set_var(&a,obj);/*Lengthoftheanim

  9. Ruby:net/http 可以同时发起 GET 和 POST 请求吗? - 2

    是否可以同时传递GET和POST参数?uri=URI.parse("http://www.example.com/post.php?a=1&b=2")req=Net::HTTP::Post.new(uri.path,{'Referer'=>"http://www.example.com/referer",'User-Agent'=>"Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1)",'Cookie'=>$cookie})req.set_form_data({'foo'=>'bar','bar'=>'foo'})http=Net::HTTP.ne

  10. ruby - 在 ruby​​ Selenium 中移动鼠标(move_to) - 2

    我正在尝试使用Ruby中的SeleniumWebDriver2.4模拟鼠标移动如果我运行测试,是否应该看到鼠标在我的屏幕上移动?我很困惑。我试过很多不同的方法示例代码:require'selenium-webdriver'driver=Selenium::WebDriver.for:firefoxdriver.navigate.to'http://www.google.com'element=driver.find_element(:id,'gbqfba')那我试过了driver.action.move_to(element).performdriver.mouse.move_to(e

随机推荐