블랙 베리 화면에서 한 번에 한 페이지 만 표시되는 페이지 형태로 이미지를 표시하는 방법. 아래로 스크롤하면 연속 이미지가 런타임에로드됩니다. 따라서 이미지로드는 시작시 시간을 소모하지 않습니다.
편집 : 로드맵 기능을 사용하여 지정된 경로에서 이미지를로드하고 크기를 조정하는 블랙 베리 장치 메모리에서 이미지를로드합니다. 이미지 수가 증가하면 창을 여는 동안 시작 시간이 늘어납니다. 내장형 응용 프로그램 (미디어) 블랙 베리 전화, 여분의 시간을 들이지 않고 이미지를로드합니다. 내 아이디어는 블랙 베리 화면에 맞는 이미지의 특정 번호를 표시하는 것입니다. 사용자가 화면 아래로 스크롤하면 응용 프로그램이 더 많은 이미지를로드하고 표시합니다. 내 질문은 어떻게하면 사용자가 블랙 베리 화면의 하단에 도달하고 하나 이상의 행 이미지를 표시 감지하는 것입니다.블랙 베리의 스크롤시 이미지를 동적으로로드하십시오.
1
A
답변
5
이미지 URL과 현재 이미지 색인의 배열을 유지하십시오. 화면에 BitmapField를 놓습니다. 다음/이전에 대한 메뉴 항목을 추가하십시오. 다음 번 인덱스 URL에서 비트 맵을로드하고 BitmapField로 설정하고 화면을 무효화합니다. 이전에 감소 인덱스와 동일하게 수행하십시오.
-
당신이 (아마도 폭풍)뿐만 아니라 버튼을 사용할 수 있습니다
- 하지만 메뉴 (그들은 웹에 저장되어 특히)
- 당신이 응용 프로그램의 메모리에 캐싱 (구현하거나 수있는 별도의 스레드에서 의무적
- 로드 이미지입니다 장치 저장 이미지)
- 을 저장하여 텍스트 필드는 도움 (파일 이름, 유형, 크기를 할 수있다, dimentions 등)
UPDATE 이를 위해이 코드를 시도 ScrollChangeListener
를 사용할 수 있습니다
class Scr extends MainScreen implements ScrollChangeListener {
static int mRowNumber = 0;
public Scr() {
getMainManager().setScrollListener(this);
//preload some images on the start
for (int i = 0; i < 20; i++) {
mRowNumber = i;
add(new BitmapField(downloadBitmap(), FOCUSABLE));
}
}
public static Bitmap downloadBitmap() {
Bitmap result = new Bitmap(200, 80);
Graphics g = new Graphics(result);
g.drawRect(0, 0, 200, 80);
g.drawText("row #" + String.valueOf(mRowNumber), 30, 30);
return result;
}
public void scrollChanged(final Manager manager, int newHorizontalScroll,
int newVerticalScroll) {
int testBottomScroll = manager.getVirtualHeight()
- manager.getVisibleHeight();
if (testBottomScroll == newVerticalScroll) {
mRowNumber++;
(new Thread(new Runnable() {
public void run() {
// simulating download
Bitmap bitmap = downloadBitmap();
// update ui in thread safe way
addBitmap(bitmap);
}
})).start();
}
}
public void addBitmap(final Bitmap bitmap) {
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
getMainManager().add(new BitmapField(bitmap, FOCUSABLE));
}
});
}
}
PS 당신이 화면에 충분한 이미지가있는 경우에만 스크롤 이벤트를 잡을 수있을 것입니다 이러한 접근 방식의 문제. 그런 다음 Screen.navigationMovement(int, int, int, int)을 사용해보십시오. 그리고 트랙 휠과 터치 스크린으로 테스트하는 것을 잊지 마십시오.
는 Btw는 내 의견은 (그래서 이미지가 잠금 UI없이 비동기 적으로로드됩니다) 한번 어떤 스레드 큐를 사용하여 모든 이미지를로드하기 위해 더 좋을 것입니다
문제의 자세한 정보 추가 – Maneesh