目标效果:
一共四个导航页面,程序运行自动播放,当手指向左翻或者向右翻,也能对应显示导航页面。
1.activity_main.xml页面放置ViewFlipper控件。
activity_main.xml页面:
<LinearLayout 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/flipper" android:layout_width="match_parent" android:layout_height="match_parent"> </ViewFlipper> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <!-- fromXDelta为动画起始时X坐标位置 toXDelta为动画结束时X坐标位置 duration为动画完成移动需要的时间 --> <translate android:duration="2000" android:fromXDelta="-100%" android:toXDelta="0"/> <!-- fromAlpha为动画起始时透明度 toAlpha为动画结束时透明度 duration为透明度完成改变需要的时间 --> <alpha android:fromAlpha="0.3" android:toAlpha="1" android:duration="2000"/> </set>
package com.example.viewflipper; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.MotionEvent; import android.widget.ImageView; import android.widget.ViewFlipper; public class MainActivity extends Activity { private ViewFlipper flipper; private int[]resId={R.drawable.guide_1,R.drawable.guide_2,R.drawable.guide_3,R.drawable.guide_4}; private float X; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); flipper=(ViewFlipper) findViewById(R.id.flipper); //动态导入的方式为ViewFlipper加入自View for(int i=0;i<resId.length;i++){ flipper.addView(getImageView(resId[i])); } /*自动导航*/ flipper.setInAnimation(this,R.animator.right_in);//进入时图片效果 flipper.setOutAnimation(this,R.animator.left_out);//出去时图片效果 flipper.setFlipInterval(3000);//视图切换的时间间隔(移动时间+停留时间) flipper.startFlipping();//开始播放 } /*手指滑动导航*/ @Override public boolean onTouchEvent(MotionEvent event) { switch(event.getAction()){ //手指点到屏幕上 case MotionEvent.ACTION_DOWN:{ X=event.getX(); break; } //手指滑动 case MotionEvent.ACTION_MOVE:{ //向右滑动看前一页 if(event.getX()-X>100){ flipper.stopFlipping();//手动翻动时暂停播放 flipper.setInAnimation(this,R.animator.left_in); flipper.setOutAnimation(this,R.animator.right_out); flipper.showPrevious();//查看前一页 flipper.startFlipping();//开始播放 } //向左滑动看后一页 if(X-event.getX()>100){ flipper.stopFlipping();//手动翻动时暂停播放 flipper.setInAnimation(this,R.animator.right_in); flipper.setOutAnimation(this,R.animator.left_out); flipper.showNext();//查看后一页 flipper.startFlipping();//开始播放 } break; } //手指抬起 case MotionEvent.ACTION_UP:{ break; } } flipper.setInAnimation(this,R.animator.right_in);//进入时图片效果 flipper.setOutAnimation(this,R.animator.left_out);//出去时图片效果 flipper.setFlipInterval(3000);//视图切换的时间间隔(移动时间+停留时间) return super.onTouchEvent(event); } private ImageView getImageView(int resId){ ImageView image=new ImageView(this); image.setBackgroundResource(resId);//全屏显示图片 return image; } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } }