码迷,mamicode.com
首页 > 移动开发 > 详细

Android动画(1)——ViewAnimator

时间:2015-05-14 23:27:14      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

ViewAnimator是一个ViewGroup视图容器,它的父类是FrameLayout。因此简单的来讲它的布局方式同FrameLayout,但是能对它的子视图的进入和隐藏用动画实现。

作用:动画实现一些简单的分层视图。

它的XML实现如下:

    <ViewAnimator
        android:id="@+id/viewAni"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:inAnimation="@android:anim/slide_in_left"
        android:outAnimation="@android:anim/slide_out_right" >

        <TextView
            android:id="@+id/firstFrame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/holo_blue_light"
            android:text="@string/frame1" 
            android:gravity="center"/>

        <TextView
            android:id="@+id/secondFrame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/holo_green_light"
            android:text="@string/frame2" 
            android:gravity="center"
        android:visibility="gone"
    /> </ViewAnimator>

 它的布局方式同FrameLayout,不同点是设置子视图消失和隐藏的动画属性:

android:inAnimation

android:outAnimation

这两个xml属性对应的代码函数是:

public void setInAnimation(Context context, int resourceID)

public void setOutAnimation(Context context, int resourceID)

 

FrameLayout是通过设置子视图的Visibility属性来控制子视图的显示和隐藏,而ViewAnimator则只能通过下面三个函数控制子视图的显示和隐藏:

public void showNext():显示下一个视图。调用该函数时,当前子视图通过outAnimation隐藏,下一个子视图通过inAnimation显示。

public void showPrevious():显示前一个视图。调用该函数时,当前子视图通过outAnimation隐藏,前一个子视图通过inAnimation显示。

public void setDisplayedChild(int whichChild):显示指定的子视图。调用该函数时,当前子视图通过outAnimation隐藏,指定的子视图通过inAnimation显示。

previous和next由子视图添加到ViewAnimator中的顺序决定,whichChild的取值区间为[0, getChildCount()]。getChildCount()为ViewAnimator的所有子视图的数量。

除此之外,在代码中添加和移除子视图的函数addView和removeView也是通过动画进行的。

 

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_view_animator_example);
		firstFrame = this.findViewById(R.id.firstFrame);
		secondFrame = this.findViewById(R.id.secondFrame);
		mViewAni = (ViewAnimator)this.findViewById(R.id.viewAni);
		mSwitchBtn = (Button)this.findViewById(R.id.switchBtn);
		mSwitchBtn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				if(firstShow){
					mViewAni.showPrevious();
					firstShow = !firstShow;
				}else{
					mViewAni.showNext();
					firstShow = !firstShow;
				}
			}
		});
		
	}

 

ViewAnimator并不常用,我们更通常使用到的是实现特定功能的它的子类:

技术分享

Android动画(1)——ViewAnimator

标签:

原文地址:http://www.cnblogs.com/fordreamxin/p/4504771.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!