当前位置:操作系统 > 安卓/Android >>

android开发之滑动效果实现图片浏览_ViewFilpper的使用

ViewFilpper 是Android官方提供的一个View容器类,继承于ViewAnimator类,用于实现页面切换,也可以设定时间间隔,让它自动播放。
又ViewAnimator继承至于FrameLayout的,所以ViewFilpper的Layout里面可以放置多个View
 
 
 
本示例通过ViewFlipper和GestureDetector.OnGestureListener实现自动播放和手势滑屏事件,先看效果:
 
滑动前
 

 
                滑动前                                            滑动中                                               滑动后
 
 
 
代码:
 
[java
package jason.viewfilppertest;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.view.GestureDetector;  
import android.view.Menu;  
import android.view.MotionEvent;  
import android.view.ViewGroup.LayoutParams;  
import android.view.animation.Animation;  
import android.view.animation.AnimationUtils;  
import android.widget.ImageView;  
import android.widget.ViewFlipper;  
  
public class MainActivity extends Activity implements  
        android.view.GestureDetector.OnGestureListener {  
  
    private int[] imgs = { R.drawable.img1, R.drawable.img2, R.drawable.img3,  
            R.drawable.img4, R.drawable.img5 };  
    private GestureDetector gestureDetector;  
    private ViewFlipper viewFlipper;  
    private Activity mActivity;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        mActivity = this;  
        viewFlipper = (ViewFlipper) findViewById(R.id.fliper);  
  
        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 LayoutParams(LayoutParams.FILL_PARENT,  
                    LayoutParams.FILL_PARENT));  
        }  
  
        viewFlipper.setAutoStart(true); // 设置自动播放功能(点击事件,前自动播放)  
        viewFlipper.setFlipInterval(3000);  
        if (viewFlipper.isAutoStart() && !viewFlipper.isFlipping()) {  
            viewFlipper.startFlipping();  
        }  
    }  
  
    @Override  
    public boolean onTouchEvent(MotionEvent event) {  
        // TODO Auto-generated method stub  
        viewFlipper.stopFlipping(); // 点击事件后,停止自动播放  
        viewFlipper.setAutoStart(false);  
        return gestureDetector.onTouchEvent(event); // 注册手势事件  
    }  
  
    @Override  
    public boolean onDown(MotionEvent arg0) {  
        // TODO Auto-generated method stub  
        return false;  
    }  
  
    @Override  
    public boolean onFling(MotionEvent e1, MotionEvent e2, float arg2,  
            float arg3) {  
        if (e2.getX() - e1.getX() > 120) { // 从左向右滑动(左进右出)  
            Animation rInAnim = AnimationUtils.loadAnimation(mActivity,  
                    R.anim.push_right_in); // 向右滑动左侧进入的渐变效果(alpha 0.1 -> 1.0)  
            Animation rOutAnim = AnimationUtils.loadAnimation(mActivity,  
                    R.anim.push_right_out); // 向右滑动右侧滑出的渐变效果(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.push_left_in); // 向左滑动左侧进入的渐变效果(alpha 0.1 -> 1.0)  
            Animation lOutAnim = AnimationUtils.loadAnimation(mActivity,  
                    R.anim.push_left_out); // 向左滑动右侧滑出的渐变效果(alpha 1.0 -> 0.1)  
  
            viewFlipper.setInAnimation(lInAnim);  
            viewFlipper.setOutAnimation(lOutAnim);  
            viewFlipper.showNext();  
            return true;  
        }  
        return true;  
    }  
  
    @Override  
    public void onLongPress(MotionEvent arg0) {  
        // TODO Auto-generated method stub  
  
    }  
  
    @Override  
    public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,  补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,