怎么样有滑动效果 android

 我来答
育知同创教育
2016-04-03 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部

android的滑动效果是通过View容器类ViewFlipper来实现的。

ViewFilpper 是Android官方提供的一个View容器类,继承于ViewAnimator类,用于实现页面切换,也可以设定时间间隔,让它自动播放。
又ViewAnimator继承至于FrameLayout的,所以ViewFilpper的Layout里面可以放置多个View,继承关系如下:

1、activity的写法如下:

import android.app.Activity;  

import android.os.Bundle;  

import android.view.GestureDetector;  

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 ViewFlipperActivity 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 = null;  

    private ViewFlipper viewFlipper = null;  

  

    private Activity mActivity = null;  

  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.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 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) {  

        viewFlipper.stopFlipping();             // 点击事件后,停止自动播放  

        viewFlipper.setAutoStart(false);      

        return gestureDetector.onTouchEvent(event);         // 注册手势事件  

    }  

  

    @Override  

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {  

        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 boolean onDown(MotionEvent e) {  

        return false;  

    }  

  

    @Override  

    public void onLongPress(MotionEvent e) {  

    }  

  

    @Override  

    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {  

        return false;  

    }  

  

    @Override  

    public void onShowPress(MotionEvent e) {  

    }  

  

    @Override  

    public boolean onSingleTapUp(MotionEvent e) {  

        return false;  

    }  

}  

2、main.xml配置文件:

<?xml version="1.0" encoding="utf-8"?>  

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

    android:layout_width="fill_parent"  

    android:layout_height="fill_parent"  

    android:orientation="vertical" >  

    <ViewFlipper  

        android:id="@+id/viewflipper"  

        android:layout_width="fill_parent"  

        android:layout_height="fill_parent"/>  

</LinearLayout>  

以上完成了手势滑屏:

手势滑动屏幕动画,是通过android.view.GestureDetector类检测各种手势事件实现的,该类有两个回调接口(Interface)

A、GestureDetector.OnDoubleTapListener,用来通知DoubleTap双击事件,类似于鼠标的双击事件,接口三个抽象回调函数如下

1、onDoubleTap(MotionEvent e):DoubleTap双击手势事件后通知(触发)

2、onDoubleTapEvent(MotionEvent e):DoubleTap双击手势事件之间通知(触发),包含down、up和move事件(这里指的是在双击之间发生的事件,例如在同一个地方双击会产生DoubleTap手势,而在DoubleTap手势里面还会发生down和up事件,这两个事件由该函数通知)

3、onSingleTapConfirmed(MotionEvent e):用来判定该次点击是SingleTap而不是DoubleTap,如果连续点击两次就是DoubleTap手势;那么如果只点击一次,系统等待一段时间后没有收到第二次点击则判定该次点击为SingleTap而不是DoubleTap,此时触发的就是SingleTapConfirmed事件

千锋教育
2016-03-28 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
现在的应用为了有更好的用户体验,一般会在应用开始显示一些指引帮助页面,使用户能更好的理解应用的功能,甚至是一些新闻阅读器会把一些头条新闻以指引效果的形式显示。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式