如何在android中使用translate动画连续上下移动图像?
我已经成功地使用如何在android中使用translate动画连续上下移动图像?,android,animation,Android,Animation,我已经成功地使用平移动画制作了单面动画表示图像从上到下。代码如下: private ImageView mScanner; private Animation mAnimation; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mScanner = (Imag
平移动画制作了单面动画
表示图像从上到下。代码如下:
private ImageView mScanner;
private Animation mAnimation;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mScanner = (ImageView)findViewById(R.id.Scanner);
mAnimation = new TranslateAnimation(0, 0, 0, 500);
mAnimation.setDuration(10000);
mAnimation.setFillAfter(true);
mAnimation.setRepeatCount(-1);
mAnimation.setRepeatMode(Animation.REVERSE);
mScanner.setAnimation(mAnimation);
mScanner.setVisibility(View.VISIBLE);
}
现在我希望当图像到达屏幕底部时,它应该开始移回顶部。我该怎么做
注意:在反向模式下完成。请看代码。但现在的问题是,它在从下到上移动时会留下线条。喜欢附加的图像。如何删除此行?
我认为您必须删除
mAnimation.setFillAfter(true)代码>因为这意味着它将永久停留在停止的位置
要返回到初始位置,您可以为上下移动创建一个完整的动画集,或者在第一次完成时创建两个单独的动画集,然后开始第二个动画集,尽管没有理由遵循这种方法。您需要设置repeat属性
android:重复模式
int.动画到达动画末尾时的行为。android:repeatCount必须设置为正整数或“-1”才能使此属性生效。设置为“reverse”(反转)可使动画在每次迭代时反向,或设置为“repeat”(重复)可使动画在每次迭代开始时循环
Animation a;
a.setRepeatMode(Animation.REVERSE);
根据以下内容修改代码:
mScanner.setVisibility(View.VISIBLE);
mAnimation = new TranslateAnimation(
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.ABSOLUTE, 0f,
TranslateAnimation.RELATIVE_TO_PARENT, 0f,
TranslateAnimation.RELATIVE_TO_PARENT, 1.0f);
mAnimation.setDuration(10000);
mAnimation.setRepeatCount(-1);
mAnimation.setRepeatMode(Animation.REVERSE);
mAnimation.setInterpolator(new LinearInterpolator());
mScanner.setAnimation(mAnimation);
而且使用xml而不是图像。请查看下面的代码并将其放入您的ImageView
src
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<solid android:color="#0000FF"/>
<size android:width="480dp"
android:height="10dp"/>
<corners android:radius="1dp"/>
<stroke android:width="3dp"
android:color="#000000"/>
</shape>
我希望它能对您有所帮助。这对连续上下移动图像效果更好。
TranslateAnimation mAnimation = new TranslateAnimation(TranslateAnimation.ABSOLUTE, 0f, TranslateAnimation.ABSOLUTE, 0f, TranslateAnimation.RELATIVE_TO_PARENT, -1f, TranslateAnimation.RELATIVE_TO_PARENT, 1.0f);
mAnimation.setDuration(10000);
mAnimation.setRepeatCount(-1);
mAnimation.setRepeatMode(Animation.INFINITE);
mAnimation.setInterpolator(new LinearInterpolator());
imgeview.setAnimation(mAnimation);
它可以工作,但在反向移动时留下一条线意味着从下到上。如何删除该行,使其看起来像正在扫描。我已经更新了我的代码并附上了图片。谢谢,我已经做了我想要的,但是现在我得到了一个新的问题,我已经附上了一张图片。我已经更新了我的问题。请看一看。谢谢你。我包含xml并删除mAnimation.setFillAfter(true)代码>行,它按照我的要求工作。谢谢你的帮助。@sandy我在2.1到4.2之间检查了这段代码,并且在我的所有设备中都能正常工作。请不要尝试使用图像,因为我对图像有问题,然后我使用基于XML
的创建行替换项目中使用的图像。请检查您的代码并再试一次。ThanksIt显示了它应该显示的内容,但正如您所知,如果您在摄影机视图上使用它,它会对性能产生很大影响。例如,在Nexus3上,相机会有1秒的时间lag@KKO你需要注意表现。就我使用而言,我没有发现任何延迟。我不记得我确实做了什么,但我认为在我禁用硬件加速后,它开始平稳运行查看我的解决方案: