一、使用ViewFlipper实现图片的循环滑动  

  
  这里我们使用ViewFlipper实现图片的循环滑动,跟ViewPager相同我们都需要在布局中先进行添加ViewFlipper,再通过动态加载图片的方式将图片载入。
  

1、布局

<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/myviewflipper"        android:layout_width="match_parent"    android:layout_height="match_parent"        />RelativeLayout>

2、动画进出效果

①left_right_in.xml(从左向右进入屏幕,这里给图片设置了透明度)

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

②left_right_out.xml(从左向右滑出屏幕,这里给图片设置了透明度)

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

③right_left_in.xml(从右向左进入屏幕,这里给图片设置了透明度)

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

④right_left_out.xml(从右向左滑出屏幕,这里给图片设置了透明度)

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

3、MainActivity

package com.example.myviewflipper;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MotionEvent;import android.view.View;import android.widget.ImageView;import android.widget.ViewFlipper;public class MainActivity extends Activity {    private ViewFlipper mviewflipper;    private int[] mImageId={R.drawable.guide_image3_i,R.drawable.guide_image4,R.drawable.guide_image5,R.drawable.image};   private float startX;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mviewflipper=(ViewFlipper) findViewById(R.id.myviewflipper);        for (int i = 0; i < mImageId.length; i++){             mviewflipper.addView(ImageView(mImageId[i]));        }        //mviewflipper.setInAnimation(this, R.layout.left_right_out);    //  mviewflipper.setOutAnimation(this, R.layout.left_right_in);        mviewflipper.setInAnimation(this, R.layout.right_left_in);        mviewflipper.setOutAnimation(this, R.layout.right_left_out);   //   设置滑动间隔时间        mviewflipper.setFlipInterval(2000);    //  开始播放        mviewflipper.startFlipping();    }    //viewflipper支持手势    private View ImageView(int mImageId) {            ImageView imageview=new ImageView(this);        //  imageview.setImageResource(mImageId);//该语句不能去显示imageview的原宽高            //为了显示原宽高,我们使用下面的语句。            imageview.setBackgroundResource(mImageId);            return imageview;    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.activity_main, menu);        return true;    }}

二、支持屏幕的手势滑动

  为支持屏幕滑动,这里我们将flipper自动循环滑动效果先去掉,添加onTouchEvent()方法,来获得屏幕手势的滑动。

package com.example.myviewflipper;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MotionEvent;import android.view.View;import android.widget.ImageView;import android.widget.ViewFlipper;public class MainActivity extends Activity {    private ViewFlipper mviewflipper;    private int[] mImageId={R.drawable.guide_image3_i,R.drawable.guide_image4,R.drawable.guide_image5,R.drawable.image};   private float startX;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mviewflipper=(ViewFlipper) findViewById(R.id.myviewflipper);        for (int i = 0; i < mImageId.length; i++){             mviewflipper.addView(ImageView(mImageId[i]));        }//      mviewflipper.setInAnimation(this, R.layout.left_right_out);//      mviewflipper.setOutAnimation(this, R.layout.left_right_in);//      mviewflipper.setInAnimation(this, R.layout.right_left_in);//      mviewflipper.setOutAnimation(this, R.layout.right_left_out);//      //设置滑动间隔时间//        mviewflipper.setFlipInterval(3000);//      //开始播放//        mviewflipper.startFlipping();    }    //viewflipper支持手势    @Override    public boolean onTouchEvent(MotionEvent event) {          switch (event.getAction()) {          //手指落下        case MotionEvent.ACTION_DOWN:{            startX=event.getX();            break;            }               //手指滑动        case MotionEvent.ACTION_MOVE:{            //向右滑动            if(event.getX()-startX>100){                mviewflipper.setInAnimation(this, R.layout.left_right_in);                mviewflipper.setOutAnimation(this, R.layout.left_right_out);                mviewflipper.showPrevious();            }            //向左滑动            if(startX-event.getX()>100){                mviewflipper.setInAnimation(this, R.layout.right_left_in);                mviewflipper.setOutAnimation(this, R.layout.right_left_out);                mviewflipper.showNext();            }            break;            }        case MotionEvent.ACTION_UP:{break;}        }        return super.onTouchEvent(event);    }    private View ImageView(int mImageId) {            ImageView imageview=new ImageView(this);            //imageview.setImageResource(mImageId);//该语句不能去显示imageview的原宽高            //为了显示原宽高,我们使用下面的语句。            imageview.setBackgroundResource(mImageId);            return imageview;    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.activity_main, menu);        return true;    }}

更多相关文章

  1. Android应用开发提高篇(5)-----Camera使用
  2. Google Android(安卓)2.0初期版本亮相 支持手势识别
  3. android app中如何获取电源锁保持屏幕常亮
  4. Android之Picasso
  5. Flutter教程(一) 十分钟了解Flutter
  6. UI(一) 适应屏幕设备多样化
  7. Android在使用WebView时,图片显示出错问题。
  8. Android多分辨率适配-长度单位和转换计算-多分辨率适配
  9. Android多分辨率适配原理

随机推荐

  1. Android中获取应用程序(包)的大小-----Pa
  2. 一起学android之HTTP预备知识(16)
  3. Android导入自定义的jar包时出现 E/Andro
  4. Android Activity之间信息的传递
  5. Android ButterKnife注入框架 使用
  6. android持久化技术中的sharedPreferences
  7. Android 学习之Http连接
  8. android ui 布局
  9. Using custom attr in Android
  10. Android判断网络连接是否可用(代码)