是否有一个普通的 Android SDK 动画器可以间隔执行任务?

蹲伏的小猫

我试图为一个简单的任务找到最简单的解决方案:在视图上闪烁项目(每秒隐藏/显示)。但是我找到的解决方案似乎有点过于复杂。

我不能使用 Timer/TimerTask 对,因为这会导致尝试从不同线程访问 View 的异常。

我找到的唯一解决方案是:

package com.my.package;

import android.animation.ValueAnimator;
import android.view.View;
... other imports ...

public class MyView extends View {
    private ValueAnimator myAnimator = ValueAnimator.ofInt(0, 2);
    private boolean itemVisible;

    ... all constructors are calling the init() method ...

    init() {
        myAnimator.setDuration(1000);
        myAnimator.addListener(new MyAnimatorListener(this));
        myAnimator.setRepeatCount(ValueAnimator.INFINITE);
        myAnimator.start();
    }

    private class MyAnimatorListener implements ValueAnimator.AnimatorListener {
        private MyView myView;

        MyAnimatorListener(MyView myView) {
            this.myView = myView;
        }

        @Override
        public void onAnimationStart(Animator animator) { }

        @Override
        public void onAnimationCancel(Animator animator) { }

        @Override
        public void onAnimationRepeat(Animator animator) {
            myView.toggleItemVisibility();
        }

        @Override
        public void onAnimationEnd(Animator animator) { }
    }

    public void toggleItemVisibility() {
        itemVisible = !itemVisible;

        invalidate();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        ...

        if (itemVisible) {
            ... draw item ...
        }

        ...
    }
}

这样做的问题是:

  • 我必须定义一个更改间隔,ValueAnimator.ofInt(0, 2)即使这不会用于任何事情。我只是点击repeat事件。(我不能使用该update事件,因为即使值没有改变,也会为每一帧调用它。)
  • 必须覆盖很多方法:开始/取消/结束,但只repeat使用了。

有没有更简单的解决方案?

克里斯文·杰姆

只需使用 aHandler发布 aRunnable然后使用postDelayed. 应该按照以下方式工作,

final Handler handler = new Handler();
final Runnable runnable = new Runnable() {
    @Override
    public void run() {
        myView.toggleItemVisibility();
        handler.postDelayed(this, 1000);
    }
};
handler.postDelayed(runnable, 1000);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android是否按顺序执行任务?

来自分类Dev

corona sdk 中的一个对象上是否可以有两个触摸事件侦听器?

来自分类Dev

是否可以在Namenode上执行任务?

来自分类Dev

是否可以在Namenode上执行任务?

来自分类Dev

是否可以从 doLast 中执行任务?

来自分类Dev

Android SDK:是否可以从CLI检索sdk工具的版本?

来自分类Dev

在张量流概率中,是否有一个普通的“密集”双射器?

来自分类Dev

创建一个可以执行多个任务的android Button

来自分类Dev

是否可以在 Jenkins 服务器上安装 Android SDK?

来自分类Dev

每当另一个应用程序中发生事件时,是否可以执行任务?

来自分类Dev

每当另一个应用程序中发生事件时,是否可以执行任务?

来自分类Dev

Android Studio:SDK更新站点中有一个感叹号

来自分类Dev

是否有一个程序可以从Android的矢量图像创建图标资源或所有分辨率?

来自分类Dev

是否可以从Android Wear SDK获取GPS位置?

来自分类Dev

是否可以在Linux上使用Android SDK的Windows版本?

来自分类Dev

Nativescript:是否可以通过Typescript访问android sdk函数/类?

来自分类Dev

是否可以使用@ azure / cosmos sdk创建一个新的CosmosDB帐户?

来自分类Dev

SDK管理器中是否不建议使用Android标准SDK API 20?

来自分类Dev

Android Studio 执行任务“:app:mergeDebugResources”失败,用户名中有特殊字符

来自分类Dev

有没有一种方法可以在../sdk/tools文件夹之外执行android命令?

来自分类Dev

分钟间隔(而不是一天)后,AlarmManager执行任务

来自分类Dev

是否有一个内置函数可以在每个间隔内执行此DOM操作?

来自分类Dev

如果我启动一个新的Android项目,是否可以将其作为对现有项目的更新推出?

来自分类Dev

是否可以安全地假设每个Android Phone都有一个DCIM文件夹?

来自分类Dev

我目前有在两台机器上运行的 cron 脚本来执行任务 - 我可以将它们组合成一个使用两台服务器的脚本吗?

来自分类Dev

在Android上将Chrome最小化时,Web应用程序可以执行任务吗?

来自分类Dev

是否可以在Google App Engine任务队列中执行任务?

来自分类Dev

Android-无法执行任务:任务已经执行

来自分类Dev

Android studio 有 android sdk 的问题

Related 相关文章

  1. 1

    Android是否按顺序执行任务?

  2. 2

    corona sdk 中的一个对象上是否可以有两个触摸事件侦听器?

  3. 3

    是否可以在Namenode上执行任务?

  4. 4

    是否可以在Namenode上执行任务?

  5. 5

    是否可以从 doLast 中执行任务?

  6. 6

    Android SDK:是否可以从CLI检索sdk工具的版本?

  7. 7

    在张量流概率中,是否有一个普通的“密集”双射器?

  8. 8

    创建一个可以执行多个任务的android Button

  9. 9

    是否可以在 Jenkins 服务器上安装 Android SDK?

  10. 10

    每当另一个应用程序中发生事件时,是否可以执行任务?

  11. 11

    每当另一个应用程序中发生事件时,是否可以执行任务?

  12. 12

    Android Studio:SDK更新站点中有一个感叹号

  13. 13

    是否有一个程序可以从Android的矢量图像创建图标资源或所有分辨率?

  14. 14

    是否可以从Android Wear SDK获取GPS位置?

  15. 15

    是否可以在Linux上使用Android SDK的Windows版本?

  16. 16

    Nativescript:是否可以通过Typescript访问android sdk函数/类?

  17. 17

    是否可以使用@ azure / cosmos sdk创建一个新的CosmosDB帐户?

  18. 18

    SDK管理器中是否不建议使用Android标准SDK API 20?

  19. 19

    Android Studio 执行任务“:app:mergeDebugResources”失败,用户名中有特殊字符

  20. 20

    有没有一种方法可以在../sdk/tools文件夹之外执行android命令?

  21. 21

    分钟间隔(而不是一天)后,AlarmManager执行任务

  22. 22

    是否有一个内置函数可以在每个间隔内执行此DOM操作?

  23. 23

    如果我启动一个新的Android项目,是否可以将其作为对现有项目的更新推出?

  24. 24

    是否可以安全地假设每个Android Phone都有一个DCIM文件夹?

  25. 25

    我目前有在两台机器上运行的 cron 脚本来执行任务 - 我可以将它们组合成一个使用两台服务器的脚本吗?

  26. 26

    在Android上将Chrome最小化时,Web应用程序可以执行任务吗?

  27. 27

    是否可以在Google App Engine任务队列中执行任务?

  28. 28

    Android-无法执行任务:任务已经执行

  29. 29

    Android studio 有 android sdk 的问题

热门标签

归档