ViewFlipper and ViewAnimator

今天我们再一起学习另一个功能更强大的视图切换组件 ViewFlipper,它可以在任意视图和视图组合之间切换。在学习之前我们有必要看一下ViewAnimator 对象。

我们制作视图动画时会发现有个ViewAnimator类,这个类的价值我画一个图给大家看就行了:
ViewFlipper <wbr>and <wbr>ViewAnimator
下面我们来看例子:

1、新建一个项目Lesson46_ViewFlipper

2、在main.xml写入下面代码:

1

2

3

4

5

6

7

<?xml version="1.0" encoding="utf-8"?>

<linearlayoutandroid:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">

<viewflipper android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/viewFlipper1">

         <include android:id="@+id/layout1"layout="@layout/layout1"></include>

         <include android:id="@+id/layout2"layout="@layout/layout2"></include>

</viewflipper>

</linearlayout>

这里用到了include标签,学过javaweb的同学很容易理解,这和jsp页面里的include没啥区别。使用include我们可以把一个大的布局文件拆成多个小的文件,使用include,我们可以复用一些常用布局组合

3、另外两个layout1.xmllayout2.xml的代码分别如下:

1

2

3

4

5

<?xml version="1.0" encoding="utf-8"?>

<linearlayoutandroid:layout_height="wrap_content" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/linearLayout1">

         <textview android:layout_height="wrap_content"android:layout_width="fill_parent"android:id="@+id/textView2"android:gravity="center"android:text="apple"android:textsize="20sp">

         </textview>

</linearlayout>

1

2

3

4

5

6

7

<?xml version="1.0" encoding="utf-8"?>

<linearlayoutandroid:layout_height="wrap_content" android:layout_width="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/linearLayout2">

 

         <imageview android:layout_height="wrap_content"android:layout_width="fill_parent"android:id="@+id/imageView1"android:src="@drawable/apple"></imageview>

         <textview android:layout_height="wrap_content"android:layout_width="fill_parent"android:id="@+id/textView2"android:gravity="center"android:text="苹果" android:textsize="20sp">

         </textview>

</linearlayout>

4MainActivity.java的代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

package basic.android.lesson46;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.animation.AnimationUtils;

import android.widget.ViewFlipper;

 

public class MainActivity extends Activity {

         @Override

         public void onCreate(BundlesavedInstanceState){

                   super.onCreate(savedInstanceState);

                   setContentView(R.layout.main);

 

                   // 定义ViewFlipper

                   final ViewFlipper vf = (ViewFlipper)findViewById(R.id.viewFlipper1);

 

                   // 设置点击监听器

                   vf.setOnClickListener(newView.OnClickListener(){

                              @Override

                              public void onClick(Viewv){

                                        // 点击读取下一个视图元素

                                        vf.showNext();

                              }

                   });

 

                   // 设置切入动画

                   vf.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(),android.R.anim.slide_in_left));

                   // 设置切出动画

                   vf.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(),android.R.anim.slide_out_right));

 

         }

}

5、编译并运行代码,查看结果:
ViewFlipper <wbr>and <wbr>ViewAnimator


附:

ImageSwitcher AndTextSwitcher 


packagecom.example.android.apis.view; 

importcom.example.android.apis.R; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.Window; 
importandroid.view.animation.AnimationUtils; 
importandroid.widget.AdapterView; 
importandroid.widget.BaseAdapter; 
import android.widget.Gallery; 
importandroid.widget.Gallery.LayoutParams; 
importandroid.widget.ImageSwitcher; 
import android.widget.ImageView; 
importandroid.widget.ViewSwitcher; 


public class ImageSwitcher1 extends Activityimplements 
       AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory{ 

   @Override 
    public voidonCreate(Bundle savedInstanceState){ 
       super.onCreate(savedInstanceState); 
       requestWindowFeature(Window.FEATURE_NO_TITLE); 

       setContentView(R.layout.image_switcher_1); 

       mSwitcher = (ImageSwitcher)findViewById(R.id.switcher); 
       //提供显示图片的地方 
        mSwitcher.setFactory(this); 

      //系统的anim中的fade_in.xml 
       mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, 
               android.R.anim.fade_in)); 
       //系统的anim中的fade_out.xml 
       mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, 
               android.R.anim.fade_out)); 

       Gallery g = (Gallery)findViewById(R.id.gallery); 
       g.setAdapter(newImageAdapter(this)); 
       g.setOnItemSelectedListener(this); 
   

    public voidonItemSelected(AdapterView parent, View v, int position, long id){ 
       mSwitcher.setImageResource(mImageIds[position]); 
   

    public voidonNothingSelected(AdapterView parent){ 
   

//设置ImgaeSwitcher的为IamgeView的变化并且设置其属性,除此之外可以设置第一次加载的时候ImageSwitcher显示的图片默认第一张 
    public ViewmakeView() { 
       ImageView i = newImageView(this); 
       i.setBackgroundColor(0xFF000000); 
       i.setScaleType(ImageView.ScaleType.FIT_CENTER); 
       i.setLayoutParams(newImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT, 
               LayoutParams.FILL_PARENT)); 
       return i; 
   

    privateImageSwitcher mSwitcher; 

    public classImageAdapter extends BaseAdapter{ 
       public ImageAdapter(Context c) { 
           mContext = c; 
       

       public int getCount() { 
           return mThumbIds.length; 
       

       public Object getItem(int position){ 
           return position; 
       

       public long getItemId(int position){ 
           return position; 
       

       public View getView(int position, View convertView, ViewGroupparent) { 
           ImageView i = newImageView(mContext); 

           i.setImageResource(mThumbIds[position]); 
           i.setAdjustViewBounds(true); 
           i.setLayoutParams(newGallery.LayoutParams( 
                   LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
           i.setBackgroundResource(R.drawable.picture_frame); 
           return i; 
       

       private Context mContext; 

   

    privateInteger[] mThumbIds = { 
           R.drawable.sample_thumb_0,R.drawable.sample_thumb_1, 
           R.drawable.sample_thumb_2,R.drawable.sample_thumb_3, 
           R.drawable.sample_thumb_4,R.drawable.sample_thumb_5, 
           R.drawable.sample_thumb_6,R.drawable.sample_thumb_7}; 

    privateInteger[] mImageIds = { 
           R.drawable.sample_0, R.drawable.sample_1,R.drawable.sample_2, 
           R.drawable.sample_3, R.drawable.sample_4,R.drawable.sample_5, 
           R.drawable.sample_6,R.drawable.sample_7}; 





//frameworks\base\core\res\res\anim\fade_in.xml 

Java代码  " quality="high"type="application/x-shockwave-flash"pluginspage="http://www.macromedia.com/go/getflashplayer">  收藏代码
  1. <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@anim/accelerate_interpolator"   
  2.     android:fromAlpha="1.0"  
  3.     android:toAlpha="0.0"  
  4.     android:duration="@android:integer/config_mediumAnimTime"   
  5. />  


//frameworks\base\core\res\res\anim\fade_out.xml 
Java代码  " quality="high"type="application/x-shockwave-flash"pluginspage="http://www.macromedia.com/go/getflashplayer">  收藏代码
  1. <alpha xmlns:android="http://schemas.android.com/apk/res/android"  
  2.         android:interpolator="@anim/decelerate_interpolator"  
  3.         android:fromAlpha="0.0" android:toAlpha="1.0"  
  4.         android:duration="@android:integer/config_longAnimTime" />  


显示效果 
ViewFlipper <wbr>and <wbr>ViewAnimator  

总结 
TextSwitcher与ImageSwitcher差不多,不过ImageSwitcher规定的view为ImageView,而TextSwitcher为TextView。(这个在publicViewmakeView()这个里面设置)。若是ImageSwitcher则在makeView()里面定义的是IamgeView并且将其返回给IamgeSwitcher,而TextSwitcher则在makeView里面定义的是TextView并且将其返回给TextSwitcher.
 
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、5资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值