首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在android中使用平移动画连续上下移动图像?

如何在android中使用平移动画连续上下移动图像?
EN

Stack Overflow用户
提问于 2011-09-02 17:01:47
回答 4查看 34K关注 0票数 21

我已经成功地使用Translate Animation完成了单面动画,这意味着图像从上到下。代码如下:

代码语言:javascript
复制
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);
}

现在,我希望当图像到达屏幕底部时,它应该开始移回顶部。我该怎么做呢?

注:做了反向模式。请看代码。但现在的问题是,当从下到上移动时,它会留下线条。就像附加的图像一样。如何删除这些行?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-12 20:00:03

根据以下内容修改代码:

代码语言:javascript
复制
   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源文件中。

代码语言:javascript
复制
<?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>

我希望它能对你有所帮助。

票数 46
EN

Stack Overflow用户

发布于 2011-09-02 17:44:04

您需要设置repeat属性

android:repeatMode

整型。动画到达动画末尾时的行为方式。android:repeatCount必须设置为正整数或"-1“,此属性才会生效。设置为" reverse“可使动画在每次迭代时反转方向,或设置为"repeat”可使动画每次循环从头开始。

代码语言:javascript
复制
Animation a;
a.setRepeatMode(Animation.REVERSE);
票数 7
EN

Stack Overflow用户

发布于 2011-09-02 17:22:34

我认为你必须删除mAnimation.setFillAfter(true);,因为这意味着它将永久停留在它停止的地方。

为了返回到初始位置,您可以为上下移动创建一个完整的动画集,或者在第一个完成时创建两个单独的动画集,然后开始第二个动画集,尽管没有理由遵循这种方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7281276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档