Исправить изображение заставки для отображения в j2me

В своем приложении j2me я пробовал canvas, который отлично работает на телефоне Nokia, но не работает на Samsung. Для этого мне нужно переключиться на какую-то ФОРМУ, которая в обоих случаях работает, но проблема заключается только в размере, если я создаю уменьшенное изображение, подходящее для обоих экранов телефона, один (Samsung) показывает, что все в порядке, но другой (Nokia) оставляет намного больше места и наоборот.

Мне нужно иметь код, который может растянуть мое изображение и просто исправить, если к размеру экрана, который я в основном получаю form.getHeight() а также form.getWidth() имущество. Интересно, есть ли свойство Image.createImage(width, height) тогда почему это не растягивает это до ценности, которую я предоставляю?

мой код для этого ниже

try {
        System.out.println("Height: " + displayForm.getHeight());
        System.out.println("Width: " + displayForm.getWidth());
        Image img1 = Image.createImage("/bur/splashScreen1.PNG");
        img1.createImage(displayForm.getHeight(), displayForm.getWidth()); 
        displayForm.append(new ImageItem(null, img1, Item.LAYOUT_CENTER, null));
    } catch (Exception ex) {
    }

Образ

2 ответа

Решение

интересно, если есть свойство Image.createImage(width, height) тогда почему это не растягивает это до ценности, которую я предоставляю?

Параметры в этом методе не имеют никакого отношения к растяжению, см. API javadocs:

 public static Image createImage(int width, int height)

    Creates a new, mutable image for off-screen drawing.
        Every pixel within the newly created image is white.
        The width and height of the image must both be greater than zero.

    Parameters:
        width - the width of the new image, in pixels
        height - the height of the new image, in pixels

Image класс ( API javadocs) имеет еще два createImage методы, которые используют параметры, называемые "ширина" и "высота" - один с шестью, другой с четырьмя аргументами, но ни один из них не имеет никакого отношения к растяжению.

  • В createImage с шестью аргументами width и height задают размер области, которая будет скопирована (без растяжения) из исходного изображения.

  • В методе с четырьмя аргументами ширина и высота определяют, как интерпретировать исходный массив ARGB, без них было бы невозможно определить, скажем, массив 12 значения представляют 3x4 изображение или 4x3, Опять же, это не имеет ничего общего с растяжением.

Одно изображение не подходит для всех экранов. Но больше сделаю.
Меньшее изображение логотипа должно быть меньше 96x54, так как это наименьшее разрешение экрана. Это изображение может быть использовано до разрешения 128х128 без проблем. При больших разрешениях он будет выглядеть крошечным.
Изображение большего логотипа должно быть немного больше, чем 128x128 и может использоваться до 240x320. В приведенном ниже коде приведен пример того, как это реализовать.

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;

class Splash extends javax.microedition.lcdui.Canvas {

  Image logo;

  Splash () {
    if (getWidth() <= 128) {
      // sl stands for Small Logo and does not need to have a file extension
      // this will use less space on the jar file
      logo = Image.createImage("/sl");
    } else {
      // bl stands for Big Logo
      logo = Image.createImage("/bl");
    }
  }

  protected void paint (Graphics g) {
    // With these anchors your logo image will be drawn on the center of the screen.
    g.drawImage(logo, getWidth()/2, getHeight()/2, Graphics.HCENTER | Graphics.VCENTER);
  }
}

Как видно из http://smallandadaptive.blogspot.com.br/2008/10/showing-splash.html

Другие вопросы по тегам