今天我们再一起学习另一个功能更强大的视图切换组件 ViewFlipper,它可以在任意视图和视图组合之间切换。在学习之前我们有必要看一下ViewAnimator 对象。
我们制作视图动画时会发现有个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"> </viewflipper> </linearlayout> |
这里用到了include标签,学过javaweb的同学很容易理解,这和jsp页面里的include没啥区别。使用include我们可以把一个大的布局文件拆成多个小的文件,使用include,我们可以复用一些常用布局组合
3、另外两个layout1.xml 和 layout2.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"> </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"> </linearlayout> |
4、MainActivity.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 { } |
5、编译并运行代码,查看结果:
附:
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
//设置ImgaeSwitcher的为IamgeView的变化并且设置其属性,除此之外可以设置第一次加载的时候ImageSwitcher显示的图片默认第一张
}
//frameworks\base\core\res\res\anim\fade_in.xml
- <alpha
xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@anim/accelerate_interpolator" -
android:fromAlpha="1.0" -
android:toAlpha="0.0" -
android:duration="@android:integer/config_mediumAnimTime" - />
//frameworks\base\core\res\res\anim\fade_out.xml
- <alpha
xmlns:android="http://schemas.android.com/apk/res/android" -
android:interpolator="@anim/decelerate_interpolator" -
android:fromAlpha="0.0" android:toAlpha="1.0" -
android:duration="@android:integer/config_longAnimTime" />
显示效果
总结
TextSwitcher与ImageSwitcher差不多,不过ImageSwitcher规定的view为ImageView,而TextSwitcher为TextView。(这个在publicViewmakeView()这个里面设置)。若是ImageSwitcher则在makeView()里面定义的是IamgeView并且将其返回给IamgeSwitcher,而TextSwitcher则在makeView里面定义的是TextView并且将其返回给TextSwitcher.