gpt4 book ai didi

android - OnLongPress 增加时间

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:43:28 26 4
gpt4 key购买 nike

我有 imageView。我正在为 imageView 使用平移、捏合。有时我需要删除 imageView。所以,我使用 OnLongClickListener 来删除图像。当我使用长按我的 imageView 删除。但是当我使用 OnTouchListener 进行平移时,捏合 imageView OnLongPress 激活并且我的 imageView 从 View 中删除。如何解决?

代码:

    imageView.setOnLongClickListener(new OnLongClickListener(){

@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
imageView.setVisibility(View.GONE);

return true;
}

});



imageView.setOnTouchListener(new View.OnTouchListener() {
final Handler handler = new Handler();
Runnable mLongPressed = new Runnable() {
public void run() {
Log.i("", "Long press!");
}
};



@Override
public boolean onTouch(View v,MotionEvent event) {
// TODO Auto-generated method stub

if(event.getAction() == MotionEvent.ACTION_DOWN)
handler.postDelayed(mLongPressed, 1000);
if((event.getAction() == MotionEvent.ACTION_MOVE)||(event.getAction() == MotionEvent.ACTION_UP))
handler.removeCallbacks(mLongPressed);



layoutParams = (RelativeLayout.LayoutParams) imageView.getLayoutParams();

switch(event.getAction())
{
case MotionEvent.ACTION_DOWN :
{
parms = (RelativeLayout.LayoutParams) imageView.getLayoutParams();


dx = event.getRawX() - parms.leftMargin;
dy = event.getRawY() - parms.topMargin;


}
break;
case MotionEvent.ACTION_MOVE :
{
x = event.getRawX();
y = event.getRawY();
parms.leftMargin = (int) (x-dx);
parms.topMargin = (int) (y - dy);
imageView.setLayoutParams(parms);

}
break;
case MotionEvent.ACTION_UP :
{

}
break;
}
return false;
}
});

}

});

最佳答案

您可以使用处理程序来执行此操作,但您需要记住在用户将手指从屏幕上移开时取消处理程序。 Yogesh 并非完全错误,但上述方法只是在 onClick 和执行 runnable 之间增加了 1000 毫秒的延迟。这意味着如果用户松开手指,runnable 仍会运行。这不是真正的长按。

您可以在下方看到我仍在使用具有 1000 毫秒延迟的处理程序(您可以将其设置为您想要的任何值),但如果用户抬起手指或移动则删除回调。如果您想摆脱移动触发器,只需删除那部分调用即可。但是要影响长按,您需要考虑提升以确保用户始终握住他们的手指。

final Handler handler = new Handler(); 
Runnable mLongPressed = new Runnable() {
public void run() {
Log.i("", "Long press!");
}
};

@Override
public boolean onTouchEvent(MotionEvent event, View v){
if(event.getAction() == MotionEvent.ACTION_DOWN)
handler.postDelayed(mLongPressed, 1000);
if((event.getAction() == MotionEvent.ACTION_MOVE)||(event.getAction() == MotionEvent.ACTION_UP))
handler.removeCallbacks(mLongPressed);
return false;
}

关于android - OnLongPress 增加时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17297802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com