Android 一次上下滑动
我试着用我的观点做三件事。第一次“点击”屏幕时,我想将视图顶部的ImageView完全设置为0alpha,以显示下方的视图。当屏幕点击被解除时,我希望alpha返回到1 alpha隐藏图像。接下来,当手指向下并显示图像时,我喜欢在屏幕上上下滑动以改变顶层的alpha,从而通过它显示下面的图像。我的问题是我无法同时解析swipeUp、swipeDown和touch,它要么只是swipeUp和swipeDown,要么只是touch!有人能帮我解决这个问题吗Android 一次上下滑动,android,Android,我试着用我的观点做三件事。第一次“点击”屏幕时,我想将视图顶部的ImageView完全设置为0alpha,以显示下方的视图。当屏幕点击被解除时,我希望alpha返回到1 alpha隐藏图像。接下来,当手指向下并显示图像时,我喜欢在屏幕上上下滑动以改变顶层的alpha,从而通过它显示下面的图像。我的问题是我无法同时解析swipeUp、swipeDown和touch,它要么只是swipeUp和swipeDown,要么只是touch!有人能帮我解决这个问题吗 blackPart.set
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。。。你能告诉我怎么判断它是上升还是下降吗?我已经更新了答案。我确实使用了类似的方法来移动屏幕上的图标,所以这应该可以工作。对不起,我在代码中添加了错误的注释。让我们签入您的代码,这是否正常工作。