, 나는 다음을 구현하는 방법을 알아 내려고 노력하고있어 HFM에 포함 된 슬라이드 쇼와 유사). 내가 원하는 것은 BitmapField가 커스텀 매니저의 왼쪽에 초점을 맞출 터치 이벤트를 통해 이미지 HFM을 가로로 움직일 수 있다는 것입니다. 즉, setHorizontalScroll에 값을 지정해야하며, 그렇다면 사용자가 왼쪽 또는 오른쪽 터치 이벤트를 만들 때 해당 값을 증가시키는 것입니다. 또한 HFM이 touchEvent를 통해 옆으로 스크롤 할 때 화면의 주어진 위치 (예 : HFM의 가장 왼쪽 필드)에서 Field의 포커스를 어떻게 얻을 수 있습니까?블랙 베리 사용자는 현재 슬라이드 쇼 스타일 BitmapField 관리자
0
A
답변
0
1 - 예, setHorizontalScroll는
2 관리자 생성자에서 HORIZONTAL_SCROLL를 사용하는 것을 잊지 마세요 작동합니다 - EventTouch getX(int) 및 getY(int)
UPDATE 각 필드 getContentRect()을 테스트하려고
글로벌 현장 위치 계산을 단순화하기 위해
public XYPoint getGlobalXY(Field field) {
XYPoint result = new XYPoint(field.getLeft(), field.getTop());
if (field.getManager() != null) {
result.translate(getGlobalXY(field.getManager()));
}
return result;
}
스레드 안전 메시지 대화 :
public void showMessage(final String message) {
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
Dialog.inform(message);
}
});
}
샘플 코드 :
class Scr extends MainScreen {
HorizontalFieldManager hfm;
public Scr() {
add(new LabelField("asdfsad"));
hfm = new HorizontalFieldManager(HORIZONTAL_SCROLL);
for (int i = 0; i < 5; i++) {
Bitmap bmp = new Bitmap(100, 100);
Graphics g = Graphics.create(bmp);
g.setFont(g.getFont().derive(100));
String txt = String.valueOf(i);
int x = g.getFont().getAdvance(txt);
g.drawText(txt, x, 0);
BitmapField bf = new BitmapField(bmp);
hfm.add(bf);
}
add(hfm);
}
protected boolean touchEvent(TouchEvent message) {
if (message.getEvent() == TouchEvent.CLICK) {
int x = message.getX(1);
int y = message.getY(1);
XYRect r = hfm.getExtent();
r.setLocation(getGlobalXY(hfm));
if (r.contains(x, y)) {
XYRect rf = hfm.getField(2).getExtent();
rf.setLocation(getGlobalXY(hfm.getField(2)));
if (x < rf.x) {
showMessage("left side");
} else if (x > rf.X2()) {
showMessage("right side");
} else {
showMessage("field");
}
}
}
return super.touchEvent(message);
}
}
그래서 당신이 말하고있는 것은 모든 주어진 BitmapField를 들어, 내가 사용하는 것이 그 필드의 내용 RECT (즉, Extent) getX와 getY가 HFM의 왼쪽에있는 해당 Field의 rect 아래에 있으면 setHorizontalScroll을 증가시켜야합니까? BitmapFields가 포함 된 HFM이있는 곳에서 TouchEvent 코드 샘플을 제공 할 수있는 기회가 있습니까? BitmapField의 Extent가 부모 HFM의 왼쪽에있을 때 getX 및 getY를 사용할 수있는 방법은 무엇입니까? –
확실, 업데이트 참조 –
안녕하세요, 코드를 보내 주셔서 감사합니다. 나는 HFM을 감지하는 손가락을 얻는 방법을 이해하기 시작했고, 그 모습에서 HFM의 왼쪽과 위쪽의 필드를 얻으므로 BitmapField라고합니다. 그러나 10 개가 있다고 가정하고 수평 스크롤에 따라 위아래로 이동하는 총 BitmapField 수를 인덱스 값으로 설정하고 정의 된 포커스 영역을 통해 HFM의 가로 중앙에서 가져 오려고했습니다 내 BMF를 포함 할 너비가 있습니다. 필드 너비와 초점 영역 너비의 차이를 사용하여 XYPoint를 만들겠습니까? –