Я не идеальный ответ для вас. Если вы посмотрите at this question, пока нет ответов на вопрос, как сделать BrowserField
фоном прозрачным, который будет один способ решить вашу проблему.
В зависимости от того, как написано вашей страницы OTPhelp_en.html
, сколько контроля над ним у вас есть, и как часто она меняется, это может быть решением, которое приемлемо:
Если ваш HTML файл имеет сплошной цвет фона, и вы знаете, что это за цвет (потому что это ваш контент html), то вы можете просто установить цвет фона BrowserField
. Затем вы не увидите никакой белой вспышки перед отображением содержимого html. Что-то вроде этого:
public class MyBrowserScreen extends MainScreen {
// this assumes the html file uses a red (#ff0000) background
private int BG_COLOR = Color.RED;
public MyBrowserScreen() {
// set the screen manager's background
getMainManager().setBackground(BackgroundFactory.createSolidBackground(BG_COLOR));
BrowserFieldConfig _bfConfig = new BrowserFieldConfig();
_bfConfig.setProperty(BrowserFieldConfig.NAVIGATION_MODE,BrowserFieldConfig.NAVIGATION_MODE_POINTER);
_bfConfig.setProperty(BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE);
_bfConfig.setProperty(BrowserFieldConfig.USER_AGENT, "MyApplication 1.0");
BrowserField myBrowserField = new BrowserField(_bfConfig);
// set the browser field background to match the HTML background, and
// the containing screen's background
_myBrowserField.setBackground(getMainManager().getBackground());
add(myBrowserField);
BrowserFieldRequest request = new BrowserFieldRequest("local:///OTPhelp_en.html");
myBrowserField.requestContent(request);
Конечно, жестко прописывать его таким образом, означает, что если файл HTML меняет свой цвет фона, вам необходимо изменить его в коде Java тоже.
Если вы хотите, чтобы избежать этого, и вы знали, что HTML-файл всегда будет использовать сплошной цвет фона, вы можете сначала открыть файл HTML как поток ресурсов
getClass().getResourceAsStream("/OTPhelp_en.html");
, а затем разобрать его, ища цвет фона (например, <body bgcolor=
или <body style="background-color:
). Это, по крайней мере, позволит полю браузера выглядеть правильно, если в HTML-файле выполняется простое изменение цвета фона.
Если в файле HTML используется фон градиента или фон изображения, вышеуказанный код необходимо будет изменить. Но, без дополнительной информации, это мое предложение для решения .
Но это не идеальное решение. Даже для моего случая это усложнит ситуацию. Поскольку в будущем файлы html могут поступать с сервера, и я показываю эти страницы для разных языков. Таким образом, это означает, что у меня есть разные html-файлы для разных языков. Таким образом, для меня все станет более жестким. Но спасибо за ваш ответ. –
@ Ариндам, да, это правильно. Конечно, HTML-контент на сервере - это другая проблема. Если файл HTML извлекается с сервера, пользователь, вероятно, ожидает небольшую задержку в его рендеринге. Обычно я больше беспокоюсь о том, что BrowserFields загружается плавно, если я пытаюсь показать ** местный ** контент, где я не хочу, чтобы пользователь даже думал, что есть сетевая задержка. – Nate