Android 用动画连续移动背景

2024-02-29

我想做的是水平移动背景并让它无限重复。

我尝试使用ImageSwitcher用动画来实现这种效果,但无法使其正常工作。这是我到目前为止的代码L

public class MainActivity extends AppCompatActivity implements ViewSwitcher.ViewFactory {

    private Animation animSlide;
    private ImageSwitcher image;
    private ImageView imagePop;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        image = (ImageSwitcher) findViewById(R.id.image_switcher);

        image.setFactory(this);
        image.setImageResource(R.drawable.zc06);
        Animation in = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);
        in.setDuration(10000);
        Animation out = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right);
        out.setDuration(10000);
        image.setInAnimation(in);
        image.setOutAnimation(out);
        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {

            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        image.setImageResource(R.drawable.zc06);
                    }
                });
            }

        }, 0, 10000);

        Animation mZoomInAnimation = AnimationUtils.loadAnimation(this, R.anim.zoom_in);

        Animation mZoomOutAnimation = AnimationUtils.loadAnimation(this, R.anim.zoom_out);
        imagePop.startAnimation(mZoomInAnimation);
        imagePop.startAnimation(mZoomOutAnimation);

    }

    @Override
    public View makeView() {
        ImageView myView = new ImageView(getApplicationContext());
        return myView;
    }
}

为什么你不尝试自己制作背景动画而不是使用ViewSwitcher?您所需要的只是一个简单的ValueAnimator:

首先添加两个相同的ImageViews到您的布局并为它们设置相同的背景图像:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/background_one"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/background"/>

    <ImageView
        android:id="@+id/background_two"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/background"/>

</FrameLayout>

然后使用一个ValueAnimator为它们的translationX属性设置动画,但按它们的宽度偏移它们:

final ImageView backgroundOne = (ImageView) findViewById(R.id.background_one);
final ImageView backgroundTwo = (ImageView) findViewById(R.id.background_two);

final ValueAnimator animator = ValueAnimator.ofFloat(0.0f, 1.0f);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setInterpolator(new LinearInterpolator());
animator.setDuration(10000L);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        final float progress = (float) animation.getAnimatedValue();
        final float width = backgroundOne.getWidth();
        final float translationX = width * progress;
        backgroundOne.setTranslationX(translationX);
        backgroundTwo.setTranslationX(translationX - width);
    }
});
animator.start();

这会产生一个连续的动画,无限地重复背景,并且应该看起来像这样:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 用动画连续移动背景 的相关文章

随机推荐

  • python 中的一行 ftp 服务器

    python 中是否可以使用一行命令来创建一个简单的 ftp 服务器 我希望能够以快速 临时的方式将文件传输到 Linux 机器 而无需安装 ftp 服务器 最好是使用内置 python 库的方法 这样就不需要安装任何额外的东西 强制性的T
  • Windows 应用商店应用程序使用自签名 SSL 证书连接到 HTTPS

    我有一个 Windows 应用商店应用程序 Metro 应用程序 我想连接我通过 HTTPS 构建的 Web 服务 我正在为我的网络服务使用自签名证书 但是当我尝试通过 System Net HttpClient PostAsync 从我的
  • 多处理的好例子实现?

    我正在尝试将我的程序之一转换为使用多处理 最好是多处理池 因为这些似乎更容易做到 概括地说 该过程是根据图像创建补丁数组 然后将它们传递到 GPU 进行对象检测 CPU和GPU部分各耗时约4秒 但CPU有8核 不需要等待GPU 因为数据经过
  • 仅冻结 html 表格的顶行(固定表格标题滚动)

    我想制作一个顶行冻结的 html 表格 这样当你垂直向下滚动时你总是可以看到它 有没有一种聪明的方法可以在不使用 JavaScript 的情况下实现这一点 请注意 我不需要冻结左列 我知道这有几个答案 但这些都没有真正帮助我 我发现本文 h
  • 如何使用 JavaPOS 通过 Epson 打印机打印收据?

    如何开发 Java 软件来使用 Epson 收据打印机打印收据 从 Epson 网站获取 Epson JavaPOS ADK 您需要注册才能下载 确保您安装了 32 位 JVM Install the Epson JavaPOS ADK 选
  • 在Java中反转大量文本文件

    反转异步上传到 servlet 的大型文本文件 以可扩展且高效的方式反转该文件 的最佳方法是什么 文本文件可能很大 千兆字节长 可以假设多个服务器 集群环境以分布式方式执行此操作 鼓励开源图书馆考虑 我正在考虑使用 Java NIO 将文件
  • 页脚位于底部但不粘

    我试图让页脚齐平到页面底部 但不一定是粘性的 只需位于底部 以防用户向下滚动 这 有效 但页脚出现后底部似乎有一些空白 看起来有点尴尬 有谁知道CSS将页脚刷新到底部并保持在最底部而不使其粘着的最佳方法吗 如果您希望我发布我的 html c
  • 如何在 django Rest 框架中将多个变量传递给 modelViewSet?

    我在用http www django rest framework org http www django rest framework org 我有一个场景 我想根据需要从数据库获取数据来传递两个或多个变量 在下面的代码中 只有 pk 存
  • Wicket @SpringBean 不创建可序列化代理

    SpringBean PDLocalizerLogic loc 当使用上面时 我收到 java io NotSerializedException 这是因为 loc 不可序列化 但这不应该成为问题 因为 spring bean 是可序列化的
  • 将切片扩展到其容量的最简单方法是什么?

    我有一个程序 它使用缓冲池来减少代码中一些性能敏感部分的分配 像这样的事情 播放链接 https play golang org p c gsqBcbE some file or any data source var r io Reade
  • Internet Explorer 无法识别 SVG 元素的 CSS

    我有一个 SVG 图像地图 链接上带有悬停样式 有关 SVG 图像映射的更多信息here http thenewcode com 760 Create A Responsive Imagemap With SVG 我测试过的所有受人尊敬的浏
  • ChartJS 仅显示特定刻度的大字体大小

    我试图强调 X 轴上的特定值 如果它满足特定条件 例如 在我的codepen https codepen io nuclearslug pen NJGmmy我只想更改 蓝色 栏的字体大小 这对于 Chart js 来说是可能的吗 var c
  • 将文件添加到销售订单行项目

    I want to add files to salesorder line items in Acumatica using web services What endpoint should be used 我想使用 Web 服务端点添
  • 如何为 Closure 编译器设置 language_in 选项?

    我需要在 Closure 编译器上设置 language in 选项以防止 IE8 解析错误 错误 解析错误 IE8 及更低版本 将错误地解析数组和对象文本中的尾随逗号 如果您的目标是较新版本的 JS 请设置适当的 language in
  • RavenDb - 远程服务器返回错误:(403) Forbidden

    当我尝试在 RavenDb 上创建 database people 集合时 出现以下错误 远程服务器返回错误 403 禁止 我在 IIS 上热了 Raven 但我不确定发生了什么 在 raven Management Studio 上 当我
  • 单击按钮时手动触发 HTML 验证

    我正在尝试处理按钮单击时的表单验证 它正在验证表单但未显示错误 有人可以帮我吗
  • 如何在 React 上正确地将 onclick 处理程序绑定到 `this`

    解释为什么这不是重复的 我的代码已经可以工作 我已将其作为评论包含在内 问题是为什么this当我将其包含到单击处理程序函数时 上下文会发生变化 我正在尝试 React 中的计算器项目 目标是将 onclick 处理程序附加到数字按钮 以便数
  • Excel VBA将字符串的特定文本粗体设置到单元格中?

    我想将字符串中的一些文本设置为粗体 我该怎么做 通过使用角色 Range A1 Characters 8 5 Font Bold True
  • 以斜线为背景的形状

    可以画一个Shape http msdn microsoft com en us library system windows shapes v VS 95 aspx其背景是由斜线构成的 一个例子Rectangle 抱歉图像质量 如果我想要
  • Android 用动画连续移动背景

    我想做的是水平移动背景并让它无限重复 我尝试使用ImageSwitcher用动画来实现这种效果 但无法使其正常工作 这是我到目前为止的代码L public class MainActivity extends AppCompatActivi