前面说到了 Viewpager ,当然还有 除了 Viewpager 的 还有 ViewFilpper 和 ViewFlow

现在说下 ViewFipper 的简单使用,

首先说一下, ViewPager 继承 ViewGroup Viewpager 有自己的adapter 可以和 fragment ,view 各种配合 ,适合动态的 复杂的交互。

ViewFilpper 继承 ViewAnimation 这个呢,就适合一些简单的页面 比如引导,欢迎页面 那种的静态页面 比较适合。


看下效果图。



public class MainActivity extends Activity {private ViewFlipper      viewFlipper;private List<View>       views = new ArrayList<View>();private Timer  timer =new Timer();private LinearLayout  linear_all_point; // 存储点的容器private int offset;              // 位移量private ImageView curDot;private int nowPosition;          // 记录当前的位置private int  aa = 0;private Handler han  = new Handler(){public void handleMessage(android.os.Message msg) {if(aa!= 3){viewFlipper.showNext();moveCursorTo(aa);aa++;}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);linear_all_point = (LinearLayout)this.findViewById(R.id.dot_contain);curDot = (ImageView) findViewById(R.id.cur_dot);viewFlipper = (ViewFlipper)this.findViewById(R.id.view_flipper);// 早堆假数据View v1 = LayoutInflater.from(this).inflate(R.layout.aa1, null);//v1.setId(1);View v2 = LayoutInflater.from(this).inflate(R.layout.aa2, null);//v2.setId(2);View v3 = LayoutInflater.from(this).inflate(R.layout.aa3, null);//v3.setId(3);views.add(v1);views.add(v2);views.add(v3);for (int i = 0; i < views.size(); i++) {viewFlipper.addView(views.get(i));}Animation inAnimation =  AnimationUtils.loadAnimation(this, R.anim.right_in);Animation outAnimation =  AnimationUtils.loadAnimation(this, R.anim.left_out);// animation 里面得到当前的View 然后改变引导界面下面的指示器图片outAnimation.setAnimationListener(new AnimationListener(){@Overridepublic void onAnimationStart(Animation animation) {System.out.println("start= =================");// 这里是 左边图片自动划出去的时候  animation start 调用 }@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {System.out.println("viewFlipper.getCurrentView().getId()=="+ viewFlipper.getCurrentView().getId());}});viewFlipper.setInAnimation(inAnimation);          viewFlipper.setOutAnimation(outAnimation);       // 一些方法   // viewFlipper.startFlipping();   开始滑动   // viewFlipper.stopFlipping();    停止滑动   // viewFlipper.showNext();      下一个   // viewFlipper.showPrevious();    上一个   // viewFlipper.isFlipping();   // viewFlipper.isAutoStart();        /**         * 1. 设置自动播放功能  这个注掉了  我用的是定时器,自动播放的话 在上面的         *          *   onAnimationStart  中 切换指示器的图片就好了         *          *    viewFlipper.setAutoStart(true);     *    viewFlipper.setFlipInterval(3000); //隔3秒           *          *          */           //初始化点 每个底部小点的指示器 for(int i=0; i< views.size() ; i++){ImageView dotView = new ImageView(this);dotView.setImageResource(R.drawable.dot1_w);dotView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT,1.0f));linear_all_point.addView(dotView);}                //当curDot的所在的树形层次将要被绘出时此方法被调用    curDot.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {public boolean onPreDraw() {// 获取ImageView的宽度也就是点图片的宽度offset = curDot.getWidth();return true;}});               /**      * 2.  还可以用 定时器 控制自动滑动  这个和 handler配合 然后更改指示器    */timer.schedule(new TimerTask() {@Overridepublic void run() {han.sendMessage(new Message());}}, 1 , 2000);      }//指示器 移动private void moveCursorTo(int position) {AnimationSet animationSet = new AnimationSet(true);TranslateAnimation tAnim = new TranslateAnimation(offset* nowPosition, offset * position, 0, 0);animationSet.addAnimation(tAnim);animationSet.setDuration(10);animationSet.setFillAfter(true);curDot.startAnimation(animationSet);}}

animation

right_in 和 left_out 配合 (右边的图片进来,现在的图片 往左边出去 - -)

首先,right_in

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="1500"        android:fromXDelta="100%p"        android:toXDelta="0" />    <alpha        android:duration="1500"        android:fromAlpha="0.1"        android:toAlpha="1.0" /></set>

left_out

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="1500"        android:fromXDelta="0"        android:toXDelta="-100%p" />    <alpha        android:duration="1500"        android:fromAlpha="1.0"        android:toAlpha="0.1" /></set>


left_in和 right_out 配合 (向右边滑动的时候, 左边的图片进来 ,现在的图片从右边出去)

首先,left_in

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="1500"        android:fromXDelta="-100%p"        android:toXDelta="0" />    <alpha        android:duration="1500"        android:fromAlpha="0.1"        android:toAlpha="1.0" /></set>


right_out

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" >    <translate        android:duration="1500"        android:fromXDelta="0"        android:toXDelta="100%p" />    <alpha        android:duration="1500"        android:fromAlpha="1.0"        android:toAlpha="0.1" /></set>


xml。指示器那个也是从 前面说的 viewpager中复制过来的

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity" >     <ViewFlipper          android:id="@+id/view_flipper"          android:layout_width="fill_parent"          android:layout_height="fill_parent"        />         <FrameLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:gravity="center"         android:layout_marginBottom="22.0dip">        <LinearLayout            android:id="@+id/dot_contain"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:gravity="center"            android:orientation="horizontal" >                   </LinearLayout>        <ImageView            android:id="@+id/cur_dot"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@drawable/dot2_w" />     </FrameLayout></RelativeLayout>

好了,就是这些了。







更多相关文章

  1. 博文目录 | 杰瑞教育原创系列文章目录一览
  2. 【Android】 ImageView.ScaleType设置图解
  3. Android(安卓)Bitmap详解
  4. android滑动事件监听
  5. Android系统详解之获取图片和视频的缩略图
  6. Android(安卓)如何更换屏幕上锁界面背景图片
  7. Android中实现圆角图片的几种方法
  8. android在XML配置seekbar时最好不要设置progress的初始值
  9. Android自定义组件系列【11】——实现3D立体旋转效果

随机推荐

  1. APP切图那点事儿–详细介绍android和ios
  2. Android(安卓)画板(简单的自定义控件)
  3. Android(安卓)monkey介绍
  4. android MVP——mvp架构的应用和优化
  5. 【Android】手撸抖音小游戏潜艇大挑战
  6. 对Android屏幕知识的学习总结
  7. 《Android开发艺术探索》读书笔记----第
  8. 史上最新最全的Android培训机构大揭秘
  9. Android双屏驱动Service架构实现
  10. Android:Service知识总结