onDraw 및 onTouchEvent 메서드가있는 간단한 사용자 지정보기가 있습니다. 내가 필요한 것은 사용자가 2 초 이상 같은 지점 (Y 좌표)에 손가락을 쥐고 있는지 어떻게 든 확인하는 것입니다.사용자가 화면에서 동일한 위치를 2 초 동안 누르고있는 것을 확인하는 방법은 무엇입니까?
편집 : 설명 및 코드가 추가되었습니다.
내 간단한 사용자 정의보기는 사용자 손가락 아래에 수평선을 그립니다. 화면을 가로 질러 위아래로 움직이면 수평선이 생깁니다. 내가하려고하는 것은 사용자가 2 초 동안 같은 지점에서 손가락을 잡고 있다면 (부울) 깃발을 올리는 것입니다. - 즉, 라인이 2 초 동안 약간의 Y 좌표 주위에 잡혀 있다면.
public class RateView extends View {
float touchY = (getHeight()/2);
boolean isPressed = false;
Paint paint = new Paint();
//Bunch of standard constructors
private void init(Context context, AttributeSet attr) {
paint.setColor(ContextCompat.getColor(context, R.color.line));
paint.setStrokeWidth(10);
paint.setAntiAlias(true);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
//If pressed -> draw horizontal line
if (isPressed) {
canvas.drawLine(0, touchY, (canvas.getWidth()), touchY, paint);
}
}
@Override
public boolean onTouchEvent(MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
isPressed = true;
break;
case MotionEvent.ACTION_MOVE:
touchY = motionEvent.getY();
break;
case MotionEvent.ACTION_UP:
isPressed = false;
break;
}
invalidate();
return true;
}}
와우 나는 이것이 내가 찾고있는 것이라고 생각한다. 작은 조정이 필요합니다. 내 견해가하는 일에 대한 약간의 설명 : onDraw 메서드를 사용하면 사용자의 손가락 아래에 수평선을 그려서 위아래로 움직일 수 있고 ACTION_MOVE를 잡아서 끌기 위해 선이 움직입니다. 내가 원하는 것은 사용자가 2 초 동안 Y 좌표 주위에 선을 잡고 있으면 이미지가 튀어 나오는 것입니다. 대신 ACTION_MOVE에 코드를 삽입하면 어떻게 작동합니까? – DisplayName
나는 사용자가 손을 움직 였는지 여부를 추적해야한다는 것을 제외하면 같은 논리를 적용 할 수 있다고 생각한다. 질문에 더 많은 코드를 제공 할 수 있다면 더 많은 도움이 될 것입니다. 이 논리를 사용하여이 논리가 작동하는지보십시오. – skbrhmn
설명과 함께 코드 추가 :) – DisplayName