반응형
OnClickListener-x, y 이벤트 위치?
보기에서 파생 된 사용자 지정보기가 있습니다. 보기를 클릭 할 때 알림을 받고 클릭이 발생한 위치의 x, y 위치를 알고 싶습니다. 긴 클릭도 마찬가지입니다.
이 작업을 수행하려는 것 같습니다 onTouchEvent()
. 을 재정의해야합니다 . OnClickListener
그래도 대신 이벤트의 x, y 위치를 가져올 방법이 없습니까?
그렇지 않다면 모션 이벤트가 '실제'클릭인지 긴 클릭인지 등을 알 수있는 좋은 방법은 무엇입니까? 는 onTouchEvent
연거푸 등 많은 이벤트를 생성합니다
감사합니다. 그것이 바로 제가 찾던 것입니다. 내 코드는 다음과 같습니다.
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN){
textView.setText("Touch coordinates : " +
String.valueOf(event.getX()) + "x" + String.valueOf(event.getY()));
}
return true;
}
});
Mark가 요청한 것을 정확히 수행합니다.
전체 예
다른 답변에는 일부 세부 정보가 없습니다. 다음은 전체 예입니다.
public class MainActivity extends AppCompatActivity {
// class member variable to save the X,Y coordinates
private float[] lastTouchDownXY = new float[2];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// add both a touch listener and a click listener
View myView = findViewById(R.id.my_view);
myView.setOnTouchListener(touchListener);
myView.setOnClickListener(clickListener);
}
// the purpose of the touch listener is just to store the touch X,Y coordinates
View.OnTouchListener touchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// save the X,Y coordinates
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
lastTouchDownXY[0] = event.getX();
lastTouchDownXY[1] = event.getY();
}
// let the touch event pass on to whoever needs it
return false;
}
};
View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// retrieve the stored coordinates
float x = lastTouchDownXY[0];
float y = lastTouchDownXY[1];
// use the coordinates for whatever
Log.i("TAG", "onLongClick: x = " + x + ", y = " + y);
}
};
}
요약
- 좌표를 저장할 클래스 변수 추가
- 다음을 사용하여 X, Y 좌표를 저장합니다.
OnTouchListener
- X, Y 좌표에 액세스합니다.
OnClickListener
Override onTouchEvent(MotionEvent ev)
Then you can do:
ev.getXLocation()
Or something like that. Have a butches.
참고URL : https://stackoverflow.com/questions/1967039/onclicklistener-x-y-location-of-event
반응형
'Nice programing' 카테고리의 다른 글
SQL Server Management Studio에서 커서가있는 문만 실행하려면 어떻게해야합니까? (0) | 2020.10.19 |
---|---|
IE에서 HTML5 캔버스 요소를 어떻게 사용할 수 있습니까? (0) | 2020.10.19 |
MongoDB-페이징 (0) | 2020.10.19 |
LINQ에서 전체 텍스트 검색 (FTS)을 사용할 수 있습니까? (0) | 2020.10.19 |
C 함수 구문, 매개 변수 목록 뒤에 선언 된 매개 변수 유형 (0) | 2020.10.19 |