当我在我的适配器的getView中使用onTouchListener行时
android:listSelector="@drawable/circle"
立即停止工作,如果我将onTouch设置为返回false它再次起作用,然后ACTION_DOWN ACTION_UP剂量正常工作。
继承人onTouch
的内容image.setOnTouchListener(new View.OnTouchListener() {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Assets.playMusic(songID, false);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
Assets.mediaPlayer.stop();
Assets.mediaPlayer = null;
}
return true;
}
});
只要您手指握住该项目,它就会播放音乐,当您释放它时应该停止音乐。返回true时效果很好。但是由于某种原因,圆圈停止出现在敲击物品后面。如果设置为false,则会出现圆圈,但是action_up dosent会停止音乐
我尝试使用.setSelected .setActivated .setEnabled并且它们都不起作用 请帮忙
此外,我希望它有点像snapchats相机按钮,点击它,它做一件事,持有它,它做了一些持续时间。我打算在Action上下使用时间变量。但是,如果有人知道另一种方法,这个ID也会有关于此的信息
答案 0 :(得分:1)
在这种情况下,不鼓励将OnTouchListener附加到图像,而是附加到GridView的项目。
你应该有这样的东西:
GridView gridview = (GridView) findViewById(R.id.the_gridview_id);
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View v, int position, long id) {
doSomething();
}
});
修改强>: 为了知道按下视图的时间,您可以执行like this:
// this goes somewhere in your class:
long lastDown;
long lastDuration;
...
// this goes wherever you setup your button listener:
gridview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
lastDown = System.currentTimeMillis();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
lastDuration = System.currentTimeMillis() - lastDown;
}
}
};