Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 一次上下滑动_Android - Fatal编程技术网

Android 一次上下滑动

Android 一次上下滑动,android,Android,我试着用我的观点做三件事。第一次“点击”屏幕时,我想将视图顶部的ImageView完全设置为0alpha,以显示下方的视图。当屏幕点击被解除时,我希望alpha返回到1 alpha隐藏图像。接下来,当手指向下并显示图像时,我喜欢在屏幕上上下滑动以改变顶层的alpha,从而通过它显示下面的图像。我的问题是我无法同时解析swipeUp、swipeDown和touch,它要么只是swipeUp和swipeDown,要么只是touch!有人能帮我解决这个问题吗 blackPart.set

我试着用我的观点做三件事。第一次“点击”屏幕时,我想将视图顶部的ImageView完全设置为0alpha,以显示下方的视图。当屏幕点击被解除时,我希望alpha返回到1 alpha隐藏图像。接下来,当手指向下并显示图像时,我喜欢在屏幕上上下滑动以改变顶层的alpha,从而通过它显示下面的图像。我的问题是我无法同时解析swipeUp、swipeDown和touch,它要么只是swipeUp和swipeDown,要么只是touch!有人能帮我解决这个问题吗

        blackPart.setOnTouchListener(new OnSwipeTouchListener(this) {

            @Override
            public void onSwipeDown() {
                Log.d("OK", "bye");
                if(drawAlpha > 0.25)
                {
                    drawAlpha -= 0.25;

                };
                blackPart.setAlpha(drawAlpha);
                Log.d("notes", "alpha:" + drawAlpha);

            }
            @Override
            public void onSwipeUp() {
                if(drawAlpha < 1.0)
                {
                    drawAlpha += 0.25;
                }
                blackPart.setAlpha(drawAlpha);

            }


            @Override
            public boolean onTouch(View arg0, MotionEvent arg1)
            {

                Log.d("notes", "touched");
                if(SP.getBoolean("drawingAlwaysVisible", false)) return true;

                    if(arg1.getAction() == MotionEvent.ACTION_UP) {
                    Log.d("OK", "action up");
                    arg0.setAlpha(1.0f);
                }
                else if(arg1.getAction() == MotionEvent.ACTION_DOWN)
                {
                    arg0.setAlpha(0.0f);
                    Log.d("OK", "no");
                }

                return true;
            }


        });
blackPart.setOnTouchListener(新的OnSwipeTouchListener(此){
@凌驾
公共空间覆盖(){
日志d(“好”、“再见”);
如果(drawAlpha>0.25)
{
α-=0.25;
};
黑色部分。setAlpha(drawAlpha);
Log.d(“注释”,“α:”+drawAlpha);
}
@凌驾
公共空间{
如果(α<1.0)
{
α+=0.25;
}
黑色部分。setAlpha(drawAlpha);
}
@凌驾
公共布尔onTouch(视图arg0、运动事件arg1)
{
日志d(“注释”、“触摸”);
if(SP.getBoolean(“drawingAlwaysVisible”,false))返回true;
如果(arg1.getAction()==MotionEvent.ACTION\u UP){
Log.d(“正常”、“行动起来”);
arg0.setAlpha(1.0f);
}
else if(arg1.getAction()==MotionEvent.ACTION\u向下)
{
arg0.setAlpha(0.0f);
日志d(“确定”、“否”);
}
返回true;
}
});

这是代码的一部分,应该可以使用

imageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            float eventX = event.getX();
            float eventY = event.getY();

            switch (event.getAction()) {

                case MotionEvent.ACTION_DOWN:

                    return true;

                case MotionEvent.ACTION_MOVE:

                    int historySize = event.getHistorySize();
                    for (int i = 0; i < historySize; i++) {
                        float historicalX = event.getHistoricalX(i);
                        float historicalY = event.getHistoricalY(i);

                        if (historicalY >= eventY) {
                            //move is down
                        } else {
                            //move is up
                        }
                        if (historicalX >= eventX) {
                            //move is right
                        } else {
                            //move is left
                        }
                        eventX = historicalX;
                        eventY = historicalY;

                        Log.d(TAG, "onTouch: X = " + eventX);
                        Log.d(TAG, "onTouch: Y = " + eventY);
                    }

                    return true;
            }
            return false;
        }
    });
imageView.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
float eventX=event.getX();
float eventY=event.getY();
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
返回true;
case MotionEvent.ACTION\u移动:
int historySize=event.getHistorySize();
for(int i=0;i=eventY){
//下移
}否则{
//行动起来了
}
if(historicalX>=eventX){
//行动是正确的
}否则{
//向左移动
}
eventX=历史事件x;
eventY=历史;
Log.d(标记“onTouch:X=“+eventX”);
Log.d(标记“onTouch:Y=“+eventY”);
}
返回true;
}
返回false;
}
});

您应该在if-else语句中返回true,并将现有的返回值更改为false。我刚刚尝试过这样做,但仍然没有成功。正在运行\u MOVE。。。你能告诉我怎么判断它是上升还是下降吗?我已经更新了答案。我确实使用了类似的方法来移动屏幕上的图标,所以这应该可以工作。对不起,我在代码中添加了错误的注释。让我们签入您的代码,这是否正常工作。