안드로이드 개발 질문/답변
(글 수 45,052)
먼저 이미지 뷰를 두개를 만들어 이미지 두개를 생성해서
클릭이벤트 리스너를 달아놓고 클릭되면 이미지 정보를 뿌려주고
그 위에다 큰 레이어를 덮어서 터치이벤트 리스너를 달아서
슬라이드(플릭?)가 되면 다음페이지로 넘어가는 프로그램을
만드려고 하는데 위의 레이어의 터치 이벤트 리스너가 이벤트를 다 먹어버리네요
터치 이벤트의 좌표 계산으로 할까 생각했는데 기기를 눞이면 좌표가 달라져서
그방법 말고 다른 방법으로 가고 싶은데 방법이 없을까요? 이벤트를 by pass 한다든지...
2일째 삽질 중이에요...ㅠ.ㅠ
클릭이벤트 리스너를 달아놓고 클릭되면 이미지 정보를 뿌려주고
그 위에다 큰 레이어를 덮어서 터치이벤트 리스너를 달아서
슬라이드(플릭?)가 되면 다음페이지로 넘어가는 프로그램을
만드려고 하는데 위의 레이어의 터치 이벤트 리스너가 이벤트를 다 먹어버리네요
터치 이벤트의 좌표 계산으로 할까 생각했는데 기기를 눞이면 좌표가 달라져서
그방법 말고 다른 방법으로 가고 싶은데 방법이 없을까요? 이벤트를 by pass 한다든지...
2일째 삽질 중이에요...ㅠ.ㅠ
2010.08.05 11:43:47
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
layout = (LinearLayout) findViewById(R.id.layout);
img = (ImageView) findViewById(R.id.imageview);
img2 = (ImageView) findViewById(R.id.imageview2);
layout.setOnTouchListener(new OnTouchListener() {
float startx = -1;
float endx = -1;
float starty = -1;
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Log.d("layout", event.getAction()+"");
endx = event.getX();
if(event.getAction()==0) {
startx = event.getX();
} else if(event.getAction()==1) {
if(Math.abs(startx-endx) > 100) {
Log.d("layout", "slide success");
} else {
Log.d("layout", "slide fail");
v.sendAccessibilityEvent(event.getAction());
}
}
return true;
}
});
img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d("img", "a");
}
});
img2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d("img2", "a");
}
});
}
이런식으로 터지 이벤트를 달았지요.. super.onTouch()가 없네요...ㅜ.ㅜ
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
layout = (LinearLayout) findViewById(R.id.layout);
img = (ImageView) findViewById(R.id.imageview);
img2 = (ImageView) findViewById(R.id.imageview2);
layout.setOnTouchListener(new OnTouchListener() {
float startx = -1;
float endx = -1;
float starty = -1;
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Log.d("layout", event.getAction()+"");
endx = event.getX();
if(event.getAction()==0) {
startx = event.getX();
} else if(event.getAction()==1) {
if(Math.abs(startx-endx) > 100) {
Log.d("layout", "slide success");
} else {
Log.d("layout", "slide fail");
v.sendAccessibilityEvent(event.getAction());
}
}
return true;
}
});
img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d("img", "a");
}
});
img2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.d("img2", "a");
}
});
}
이런식으로 터지 이벤트를 달았지요.. super.onTouch()가 없네요...ㅜ.ㅜ
터치에서 인식하고,
마지막에 return super.onTouch()를 하시면... 터치 반응을 부모에게 넘겨줘서 터치를 인식하게 됩니다.
제스처나 그런것도 비슷...