나는이 복잡한 질문에 내가 당신에게서 아이디어를 얻기를 바라고 있습니다. 여기 onInterceptTouchEvent()를 사용할 때 터치 이벤트 감지
는 일이 : 나는 사용자 지정 목록보기 클래스를 생성 한, 위의 하나public class FolderListView extends ListView {
private float xDistance, yDistance, lastX, lastY;
private int folder_index;
private FolderViewInterface openFolder;
// private boolean swiping = false;
// If built programmatically
public FolderListView(Context context) {
super(context);
}
// This example uses this method since being built from XML
public FolderListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
// Build from XML layout
public FolderListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_UP:
// if (swiping == false) {
//if (xDistance > yDistance)
// return false;
// else {
folder_index = pointToPosition((int) lastX, (int) lastY);
// Toast.makeText(getContext(),
// "You pressed a folder with index: " + folder_index,
// Toast.LENGTH_SHORT).show();
// }
HomeScreenFragment f = new HomeScreenFragment();
openFolder = (FolderViewInterface) f;
openFolder.onFolderOpened(folder_index);
// }
// swiping = false;
break;
case MotionEvent.ACTION_DOWN:
// swiping = false;
xDistance = yDistance = 0f;
lastX = ev.getX();
lastY = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
// swiping = true;
final float curX = ev.getX();
final float curY = ev.getY();
xDistance += Math.abs(curX - lastX);
yDistance += Math.abs(curY - lastY);
lastX = curX;
lastY = curY;
if (xDistance > yDistance)
return false;
}
return super.onInterceptTouchEvent(ev);
}
}
것은 여기에 내가 제대로 터치 이벤트를 감지 찾고 있어요. 다른 조각을 열려면 터치하고 싶지만, 지금은 조각을 터치하거나 스 와이프하여 열 수 있습니다.
내 목록의 요소가 뷰 페이지이고 스크롤 할 때 제대로 작동하지 않았기 때문에 onInterceptTouchEvent를 사용했습니다.
본인은 스 와이프를 감지하고이 부분을 수행하지 여기 로직의 일종이 필요합니다
이벤트가 터치 이벤트가 아닌 슬쩍 한 경우에만HomeScreenFragment f = new HomeScreenFragment();
openFolder = (FolderViewInterface) f;
openFolder.onFolderOpened(folder_index);
.
어떤 종류의 제안/도움도 매우 높이 평가됩니다. 자세한 내용이 필요하면 알려주십시오.
감사합니다.
왜 그냥 추가하지를 onClickListener'? – Desert
시도해 보니 작동하지 않습니다 ... –
시도해 볼 수있는 코드를 게시 할 수 있습니까? – Desert