首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GestureDetector onFling

GestureDetector onFling
EN

Stack Overflow用户
提问于 2013-07-18 03:19:25
回答 2查看 528关注 0票数 0

我在用ScrollView刷手机,用的是onFling功能。我面临的问题是,当我从上到下滑动/滚动时,它会将我的标签从一个向右/向左滑动到另一个。所以我需要我的向左/向右滑动功能在我滚动时不起作用。

代码语言:javascript
复制
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
        final RelativeLayout detail = (RelativeLayout) findViewById(R.id.layout_detail);
        final RelativeLayout photo = (RelativeLayout) findViewById(R.id.layout_detail_photo);
        final RelativeLayout pod = (RelativeLayout) findViewById(R.id.layout_detail_pod);
        final ToggleButton btn_detail = (ToggleButton) findViewById(R.id.btn_detail);
        final ToggleButton btn_pod = (ToggleButton) findViewById(R.id.btn_pod);
        final ToggleButton btn_photo = (ToggleButton) findViewById(R.id.btn_photo);
        // right to left swipe

        if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
                && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

            if ((detail.getVisibility() == View.VISIBLE)
                    && (pod.getVisibility() == View.GONE)
                    && (photo.getVisibility() == View.GONE)) {
                detail.setVisibility(View.GONE);
                photo.setVisibility(View.GONE);
                pod.setVisibility(View.VISIBLE);
                btn_photo.setSelected(false);
                btn_pod.setSelected(true);
                btn_detail.setSelected(false);
            } else if ((detail.getVisibility() == View.GONE)
                    && (pod.getVisibility() == View.VISIBLE)
                    && (photo.getVisibility() == View.GONE)) {
                detail.setVisibility(View.GONE);
                photo.setVisibility(View.VISIBLE);
                pod.setVisibility(View.GONE);
                btn_photo.setSelected(true);
                btn_pod.setSelected(false);
                btn_detail.setSelected(false);
            } else if ((detail.getVisibility() == View.GONE)
                    && (pod.getVisibility() == View.GONE)
                    && (photo.getVisibility() == View.VISIBLE)) {
                detail.setVisibility(View.VISIBLE);
                photo.setVisibility(View.GONE);
                pod.setVisibility(View.GONE);
                btn_photo.setSelected(false);
                btn_pod.setSelected(false);
                btn_detail.setSelected(true);
            }
        }
        // left to right swipe
        else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
                && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

            if ((detail.getVisibility() == View.VISIBLE)
                    && (pod.getVisibility() == View.GONE)
                    && (photo.getVisibility() == View.GONE)) {
                detail.setVisibility(View.GONE);
                photo.setVisibility(View.VISIBLE);
                pod.setVisibility(View.GONE);
                btn_photo.setSelected(true);
                btn_pod.setSelected(false);
                btn_detail.setSelected(false);
            } else if ((detail.getVisibility() == View.GONE)
                    && (pod.getVisibility() == View.GONE)
                    && (photo.getVisibility() == View.VISIBLE)) {
                detail.setVisibility(View.GONE);
                photo.setVisibility(View.GONE);
                pod.setVisibility(View.VISIBLE);
                btn_photo.setSelected(false);
                btn_pod.setSelected(true);
                btn_detail.setSelected(false);
            } else if ((detail.getVisibility() == View.GONE)
                    && (pod.getVisibility() == View.VISIBLE)
                    && (photo.getVisibility() == View.GONE)) {
                detail.setVisibility(View.VISIBLE);
                photo.setVisibility(View.GONE);
                pod.setVisibility(View.GONE);
                btn_photo.setSelected(false);
                btn_pod.setSelected(false);
                btn_detail.setSelected(true);
            }
        }
        return true;
    }
EN

回答 2

Stack Overflow用户

发布于 2013-07-18 09:14:47

我的建议是使用一个ViewPager,它允许你将滚动视图作为页面插入,你可以通过向左和向右滑动来浏览。这就是我所做的,使用视图分页程序,我创建了一个返回列表视图的PagerAdapter。在您的情况下,您可以返回滚动视图。我附加了一些代码,作为您需要插入到视图分页程序中的分页程序的基础。

代码语言:javascript
复制
public class ViewpagerAdapter extends PagerAdapter {


private Context mContext;

public ViewpagerListviewsAdapter(Context mContext) {

    this.mContext = mContext;
}
    @Override
    public Object instantiateItem(ViewGroup group, int position) {


            ListView lView = new ListView(mContext);
                            group.addView(lView);
            return lView;



    }

    @Override
    public void destroyItem(ViewGroup group, int position, Object object) {

        View view = (View) object;
        group.removeView(view);
        view = null;

    }

    @Override
    public int getCount() {
        return (number of views in pager);
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {

        return view==object;

    }


}
票数 0
EN

Stack Overflow用户

发布于 2014-03-02 13:33:56

你的问题不是很清楚,但如果我理解正确的话,你会问为什么你的代码只响应向右/向左的抛出,而不是向上/向下的抛出。您只有处理左/右翻转的代码。它怎么可能对向上/向下的狂欢做出任何反应呢?代码的主线是...

代码语言:javascript
复制
if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && 
    Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY)

..。应该对向上/向下的抛出做出反应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17708424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档