📜  Android中的ViewAnimator示例(1)

📅  最后修改于: 2023-12-03 14:59:17.224000             🧑  作者: Mango

Android中的ViewAnimator示例

ViewAnimator是Android提供的一个View容器,它可以容纳多个子View并进行平滑的切换。在此篇文章中,我们将介绍如何使用ViewAnimator来创建一个基本的轮播图。

创建ViewAnimator

要使用ViewAnimator,我们需要在布局文件中定义一个ViewAnimator控件。下面是一个简单的示例:

<ViewAnimator
    android:id="@+id/view_animator"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
添加子View

ViewAnimator是一个容器,因此它必须包含一个或多个子View。要添加子View到ViewAnimator,我们可以使用addView方法。下面是一个添加ImageView作为子View的示例:

ViewAnimator viewAnimator = findViewById(R.id.view_animator);
ImageView imageView1 = new ImageView(this);
imageView1.setImageResource(R.drawable.img1);
ImageView imageView2 = new ImageView(this);
imageView2.setImageResource(R.drawable.img2);
viewAnimator.addView(imageView1);
viewAnimator.addView(imageView2);
切换子View

我们可以使用ViewAnimator提供的几种方法来切换子View。例如,我们可以使用setDisplayedChild方法来切换到指定的子View。下面是一个切换到第二个子View的示例:

viewAnimator.setDisplayedChild(1);

我们还可以使用showNext和showPrevious方法来展示下一个或上一个子View。下面是一个展示下一个子View的示例:

viewAnimator.showNext();
添加动画

ViewAnimator提供了多种默认动画,以使子View的切换更加平滑。例如,我们可以使用setInAnimation方法来设置子View进入屏幕时的动画,使用setOutAnimation方法来设置子View离开屏幕时的动画。下面是一个设置动画的示例:

Animation inAnimation = AnimationUtils.loadAnimation(this, R.anim.slide_in_right);
Animation outAnimation = AnimationUtils.loadAnimation(this, R.anim.slide_out_left);
viewAnimator.setInAnimation(inAnimation);
viewAnimator.setOutAnimation(outAnimation);
完整代码
public class MainActivity extends AppCompatActivity {

    private ViewAnimator viewAnimator;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        viewAnimator = findViewById(R.id.view_animator);

        ImageView imageView1 = new ImageView(this);
        imageView1.setImageResource(R.drawable.img1);
        ImageView imageView2 = new ImageView(this);
        imageView2.setImageResource(R.drawable.img2);

        viewAnimator.addView(imageView1);
        viewAnimator.addView(imageView2);

        Animation inAnimation = AnimationUtils.loadAnimation(this, R.anim.slide_in_right);
        Animation outAnimation = AnimationUtils.loadAnimation(this, R.anim.slide_out_left);
        viewAnimator.setInAnimation(inAnimation);
        viewAnimator.setOutAnimation(outAnimation);
    }

    public void showNext(View view) {
        viewAnimator.showNext();
    }

}
结论

ViewAnimator是一个非常有用的控件,它可以为我们提供轻松切换子View的功能。通过添加动画,我们可以让视图切换更加平滑。