主代码
public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener { private int[] imgs = {R.drawable.lunbo, R.drawable.love, R.drawable.gril, R.drawable.kakaxi, R.drawable.android }; GestureDetector gestureDetector = null; ViewFlipper viewFlipper = null; Activity mActivity = null; /** * ATTENTION: This was auto-generated to implement the App Indexing API. * See https://g.co/AppIndexing/AndroidStudio for more information. */ private GoogleApiClient client; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mActivity = this; viewFlipper = (ViewFlipper) findViewById(R.id.viewflipper); gestureDetector = new GestureDetector(this); // 声明检测手势事件 for (int i = 0; i < imgs.length; i++) { // 添加图片源 ImageView iv = new ImageView(this); iv.setImageResource(imgs[i]); iv.setScaleType(ImageView.ScaleType.FIT_XY); viewFlipper.addView(iv, new ActionBar.LayoutParams(ActionBar.LayoutParams.FILL_PARENT, ActionBar.LayoutParams.FILL_PARENT)); } viewFlipper.setAutoStart(true); // 设置自动播放功能(点击事件,前自动播放) viewFlipper.setFlipInterval(1000); if (viewFlipper.isAutoStart() && !viewFlipper.isFlipping()) { viewFlipper.startFlipping(); } // ATTENTION: This was auto-generated to implement the App Indexing API. // See https://g.co/AppIndexing/AndroidStudio for more information. client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); } // @Override // public boolean onTouchEvent(MotionEvent event) { // viewFlipper.stopFlipping(); // 点击事件后,停止自动播放 // viewFlipper.setAutoStart(false); // return gestureDetector.onTouchEvent(event); // 注册手势事件 // } @Override public boolean onDown(MotionEvent motionEvent) { return false; } @Override public void onShowPress(MotionEvent motionEvent) { } @Override public boolean onSingleTapUp(MotionEvent motionEvent) { return true; } @Override public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) { return true; } @Override public void onLongPress(MotionEvent motionEvent) { } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float v, float v1) { if(e2.getX() - e1.getX() > 120){ // 从左向右滑动(左进右出) Animation rInAnim = AnimationUtils.loadAnimation(mActivity,R.anim.anima); // 向右滑动左侧进入的渐变效果(alpha 0.1 -> 1.0) Animation rOutAnim = AnimationUtils.loadAnimation(mActivity,R.anim.anima); // 向右滑动右侧滑出的渐变效果(alpha 1.0 -> 0.1) viewFlipper.setInAnimation(rInAnim); viewFlipper.setOutAnimation(rOutAnim); viewFlipper.showPrevious(); return true; } else if (e2.getX() - e1.getX() < -120) { // 从右向左滑动(右进左出) Animation lInAnim = AnimationUtils.loadAnimation(mActivity,R.anim.anima); // 向左滑动左侧进入的渐变效果(alpha 0.1 -> 1.0) Animation lOutAnim = AnimationUtils.loadAnimation(mActivity,R.anim.anima); // 向左滑动右侧滑出的渐变效果(alpha 1.0 -> 0.1) viewFlipper.setInAnimation(lInAnim); viewFlipper.setOutAnimation(lOutAnim); viewFlipper.showNext(); return true; } return true; }
布局文件
<?xml version="1.0" encoding="utf-8"?> <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="com.example.tab.MainActivity"> <ViewFlipper android:id="@+id/viewflipper" android:layout_width="match_parent" android:layout_height="200dp"/> </LinearLayout>