Android中的全景背景动画

5

全景背景

我有一个作为天空的全景背景,我想将其从左到右移动,然后从右到左以模拟移动的云彩动画作为屏幕背景。

这应该无限重复,在到达最右边后返回到最左边。

我尝试了以下内容:

  Animation left = AnimationUtils.loadAnimation(MainActivity.this, com.icare.kids.R.anim.view_transition_out_right);
  left.setRepeatCount(Animation.INFINITE);
  left.setRepeatMode(Animation.REVERSE);
  left.setDuration(3000);

  findViewById(id.cloud).startAnimation(left);

但这似乎不起作用...有什么解决方法吗?
我目前将图像设置为ImageView,如下所示:
<ImageView
    android:id="@+id/cloud"
    android:layout_width="3000dip"
    android:layout_height="wrap_content"
    android:layout_below="@id/topbar"
    android:scaleType="matrix"
    android:src="@drawable/bgpan" />

如何将图片设置到屏幕最左侧,如下图所示,以帮助实现全景动画效果: enter image description here

1
为什么不移动位图而不是文本视图?我的意思是,如果你已经将背景(3000像素)加载到内存中,那么你真的浪费了很多内存,而这些内存甚至都看不见...你应该在每个动画帧中只剪切一小部分位图,然后获取x+OFFSET等等,每个帧必须检查边界以查看是否需要从左侧重新开始... - Martin Marconcini
1
Stackoverflow有一些相关的答案,可以看看:http://stackoverflow.com/a/17275163/2684 - Martin Marconcini
2个回答

3
最好的解决方案是只对云朵进行动画处理,同时保持背景静态,以确保在所有手机范围内实现高效且快速的渲染。您还可以添加一些变量来控制云朵的速度,从而使云朵的速度不呈单调循环趋势。
该实现方案和细节参考了此答案

0

你可以尝试使用带有虚拟拖动的Viewpager对象,不断将背景重新添加到新生成的视图中,同时禁用用户输入。

这将给出你想要实现的效果。

假设你的适配器中有4个视图,每个视图只包含一个填充整个屏幕的图像资源,Viewpager的虚拟拖动从视图A到视图B,绘制视图C和绘制视图D,然后它从视图B到视图C进行虚拟拖动,并再次绘制视图A。

我很好奇这对你是否有效。


嗯,这是个不错的想法,我认为可以在 ImageView 上使用简单的动画技巧,而不需要使用 Viewpager。但如果这是我的最后选择,我会研究一下 Viewpager。感谢您的建议。 - N Jay
你是对的,应该有@Nader,但我在动画类方面遇到了很多问题。 - CQM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接