좌표값을 사용하여 좌표위치가 터치 된 것과 같은 이벤트를 발생시키고자 합니다.
여기서 구현하고자 한 내용은
화면 어딜 터치 하든 좌표값 X:20 Y:70을 클릭한 것과 같은 이벤트를 발생시키고 싶은데
다음과 같은 문제점이 있습니다.
1. event.setLocation(20, 70) 함수를 통해 event의 새로운 좌표를 설정하고
2. onTouchEvent(event)를 수행하였습니다.
여기서 저는 X:20 Y:70 위치에 버튼이 위치하고 있기 때문에
버튼이 클릭된 것과 같은 onClick()이 수행될 것이라고 판단했습니다만
결과는 단순히 버튼이 없는 것처럼 그냥 좌표위치가 터치 된 것처럼 작동됩니다.
결국 하고 싶은 것은
이벤트 발생시 각 버튼의 ID를 링크시켜서 이벤트를 발생시키는 것이 아니라
좌표값을 통해 그 위치에 있는 버튼이든 List든 터치된 것처럼 이벤트가 발생되도록 만들고 싶습니다.
View에 onClick이벤트인지 onTouchEvent인지 판단하기 전 뭔가 더 로우레벨 적인 이벤트가 발생할 것 같은데
아시는분의 조언 부탁드리겠습니다.
아래는 간단히 만들어 본 소스입니다.
public class TouchEvent extends Activity implements OnClickListener{
TextView text1, text2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button)findViewById(R.id.Button01);
// btn.setOnTouchListener(this);
text1 = (TextView) findViewById(R.id.TextView02);
text2 = (TextView) findViewById(R.id.TextView04);
}
public void onClick(View v)
{
if( v.getId() == R.id.Button01)
{
Log.d("CHK", "ON");
}
}
public boolean onTouchEvent(MotionEvent event)
{
Log.d("CHK", "1");
int action = event.getAction();
switch( action )
{
// 터치스크린에 손을 댔을 때
case (MotionEvent.ACTION_DOWN) :
//실수형을 정수로 변환 후 문자열로 재변환
text1.setText(Float.toString(event.getX()));
text2.setText(Float.toString(event.getY()));
Log.d("CHK", ""+event.getX());
Log.d("CHK", ""+event.getY());
event.setLocation(20, 70);
event.setAction(10);
onTouchEvent(event);
break;
// 터치스크린에서 손을 떼었을 때
case (MotionEvent.ACTION_UP):
break;
// 터치스크린에 손을 댄 채로 움직일 때
case (MotionEvent.ACTION_MOVE):
text1.setText(Float.toString(event.getX()));
text2.setText(Float.toString(event.getY()));
break;
case (10):
Log.d("CHK", ""+event.getX());
Log.d("CHK", ""+event.getY());
Log.d("CHK", "TEST");
break;
}
return super.onTouchEvent(event);
}
}