如何在android中连续动画?

时间:2017-06-02 12:54:47

标签: android xml android-animation

我希望我的图像按钮从屏幕顶部开始到达屏幕的末端,然后是其后面的另一个图像按钮,这就像道路上的白色条带一样永远。当一个按钮到达屏幕的末端时,屏幕顶部必须显示不可见的部分,这应该适用于每个按钮。

查看最后一个图像按钮的图像以获得清晰视图。

Screenshot

这是我的XML文件的代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="com.ash432.itguesses.options"
android:background="#040404">

<ImageButton
    android:layout_width="5dp"
    android:layout_height="40dp"
    android:id="@+id/im1"
    android:layout_marginLeft="29dp"
    android:layout_marginStart="29dp"
    android:background="#f9f6f6"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layoutAnimation="@anim/layout_anim"
    />

<ImageButton
    android:layout_width="5dp"
    android:layout_height="40dp"
    android:id="@+id/im2"
    android:background="#f9f6f6"
    android:layout_marginTop="26dp"
    android:layout_below="@+id/im1"
    android:layout_alignLeft="@+id/im1"
    android:layout_alignStart="@+id/im1" />

<ImageButton
    android:layout_width="5dp"
    android:layout_height="40dp"
    android:id="@+id/im3"
    android:background="#f9f6f6"
    android:layout_marginTop="26dp"
    android:layout_below="@+id/im2"
    android:layout_alignLeft="@+id/im2"
    android:layout_alignStart="@+id/im2" />

<ImageButton
    android:layout_width="5dp"
    android:layout_height="40dp"
    android:id="@+id/im4"
    android:background="#ffffff"
    android:layout_marginTop="26dp"
    android:layout_below="@+id/im3"
    android:layout_alignLeft="@+id/im3"
    android:layout_alignStart="@+id/im3" />

<ImageButton
    android:layout_width="5dp"
    android:layout_height="40dp"
    android:id="@+id/im5"
    android:background="#ffffff"
    android:layout_marginTop="26dp"
    android:layout_below="@+id/im4"
    android:layout_alignLeft="@+id/im4"
    android:layout_alignStart="@+id/im4" />

<ImageButton
    android:layout_width="5dp"
    android:layout_height="40dp"
    android:id="@+id/im6"
    android:background="#ffffff"
    android:layout_marginTop="26dp"
    android:layout_below="@+id/im5"
    android:layout_alignLeft="@+id/im5"
    android:layout_alignStart="@+id/im5" />

<ImageButton
    android:layout_width="5dp"
    android:layout_height="40dp"
    android:id="@+id/im7"
    android:background="#ffffff"
    android:layout_marginTop="26dp"
    android:layout_below="@+id/im6"
    android:layout_alignLeft="@+id/im6"
    android:layout_alignStart="@+id/im6" />

<ImageButton
    android:layout_width="5dp"
    android:layout_height="40dp"
    android:id="@+id/im8"
    android:background="#ffffff"
    android:layout_marginTop="26dp"
    android:layout_below="@+id/im7"
    android:layout_alignLeft="@+id/im7"
    android:layout_alignStart="@+id/im7" />

这是java代码

public class options extends AppCompatActivity
{
private ImageButton im1,im2,im3,im4,im5,im6,im7,im8;
private Animation mAnimation;
//private Button b;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_options);


    im1 = (ImageButton)findViewById(R.id.im1);
    im2 = (ImageButton)findViewById(R.id.im2);
    im3 = (ImageButton)findViewById(R.id.im3);
    im4 = (ImageButton)findViewById(R.id.im4);
    im5 = (ImageButton)findViewById(R.id.im5);
    im6 = (ImageButton)findViewById(R.id.im6);
    im7 = (ImageButton)findViewById(R.id.im7);
    im8 = (ImageButton)findViewById(R.id.im8);

    mAnimation = new TranslateAnimation(
            TranslateAnimation.ABSOLUTE, 0f,
            TranslateAnimation.ABSOLUTE, 0f,
            TranslateAnimation.RELATIVE_TO_PARENT, 0.0f,
            TranslateAnimation.RELATIVE_TO_PARENT, 1.0f);
    mAnimation.setDuration(2000);
    mAnimation.setRepeatCount(-1);
    mAnimation.setRepeatMode(Animation.INFINITE);
    mAnimation.setInterpolator(new LinearInterpolator());
    mAnimation.getStartTime();
    im1.setAnimation(mAnimation);
    im2.setAnimation(mAnimation);
    im3.setAnimation(mAnimation);
    im4.setAnimation(mAnimation);
    im5.setAnimation(mAnimation);
    im6.setAnimation(mAnimation);
    im7.setAnimation(mAnimation);
    im8.setAnimation(mAnimation);
}
}

UPDATE -

对于那些无法正确理解问题的人。

1)起初我在屏幕上只想要背景。

2)然后在一段时间后,应该看到从屏幕顶部出现的白色条带。

3)然后当它完全到来时,经过一段时间后应该看到第二个白色条带。

4)所有八个图像按钮的相同程序。

5)现在,当第一个图像按钮到达屏幕底部时。它的大小应该减小,而在屏幕的顶部,它的大小应该增加。同样适用于所有按钮到达屏幕底部时

6)条带之间的间隙应常数

以下是显示步骤的图像 -

Image

我希望我的问题清楚明了。

1 个答案:

答案 0 :(得分:0)

您的问题不是很明确,但我认为您想要回收这些白色条纹。

您应该使用RecyclerView。

compile 'com.android.support:recyclerview-v7:23.1.1'
XML中的

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="com.ash432.itguesses.options"
android:background="#040404">

<android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical" />

</RelativeLayout>

然后为这些条带创建另一个xml布局,并使用Adapter连接它们。

编辑:

RecyclerViewListView的高级版本,具有更好的性能。它是一个视图,以前用于显示特定适配器位置的数据,可以放在缓存中以便以后重复使用以显示以后再次使用相同类型的数据

Adapter是RecyclerView.Adapter的子类,负责提供表示数据集中项目的视图。

here是一个很好的资源,您可以学习如何实施recyclerview。