繁体   English   中英

Android onTouch事件

[英]Android onTouch event

我已经设法创建此代码以在列表视图中滑入或滑出按钮。 如果我在手机屏幕上的手势是水平的,就可以正常工作。 但是,如果我的手势也是对角线...则不会触发以显示/隐藏该按钮。 手势是水平的(从左到右或从右到左),但它可能有点斜。 该怎么办 ?

类展示实现了OnTouchListener {

    @Override
    public boolean onTouch(View v, MotionEvent event) 
    {
        int action = event.getAction();
        switch (action) 
        {
            case MotionEvent.ACTION_DOWN:
                action_down_x = (int) event.getX();
                break;
            case MotionEvent.ACTION_MOVE:
                action_up_x = (int) event.getX();
                difference = action_down_x - action_up_x;
                break;
            case MotionEvent.ACTION_UP:
                if (difference < -30)
                {
                    Animation slide_up = AnimationUtils.loadAnimation(mContext, R.anim.slide_stanga);
                    LinearLayout right = (LinearLayout) v.findViewById(R.id.dreapta);
                    if (right.isShown())
                    {
                    right.startAnimation(slide_up);
                    right.setVisibility(View.GONE);
                    final View x = v;
                    Handler handler = new Handler();
                    handler.postDelayed(new Runnable() 
                    {
                        public void run() 
                        {
                            LinearLayout left = (LinearLayout) x.findViewById(R.id.stanga);
                            left.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,(float) 4.0));
                        }
                    }, 500);

                    }

                }
                if (difference > 30)
                {
                     Animation slide_up = AnimationUtils.loadAnimation(mContext, R.anim.slide_dreapta);
                     LinearLayout right = (LinearLayout) v.findViewById(R.id.dreapta);
                     if (!right.isShown())
                        { 
                         LinearLayout left = (LinearLayout) v.findViewById(R.id.stanga);
                         left.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT,(float) 3.0));
                         right.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT,(float) 1.0));
                         right.startAnimation(slide_up);
                         right.setVisibility(View.VISIBLE);
                        }
                }
                action_down_x = 0;
                action_up_x = 0;
                difference = 0;
                break;
            }
            return true;
    }

}

谢谢!

没有内置选项可以执行此操作。 我认为您应该使用手势检测器。 获取屏幕的初始和最终坐标,然后按照自己的方式进行编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM