Программирование мобильных телефонов

Класс ImageItem




С помощью класса Imageltem возможна загрузка изображения в форму представленную классом Form. Изображением может быть любая картинка формата PNG (Portable Network Graphics - формат портативной сетевой графики), выполненная в виде иконки, фотографии, заставки, фона и так и далее. Имеются два конструктора класса Imageltem. Первый конструктор содержит четыре параметра, рассмотрим этот конструктор:

public ImageItem(String label, Image img, int layout, String alt Text)

Параметры конструктора ImageItem:

  •  label - метка;
  •  img - объект класса Image, содержащий изображение;
  •  layout - форматирует загружаемое изображение на экране телефона, с помощью использование следующих директив:
  •  public static final int LAYOUT_DEFAULT - размещение изображения по умолчанию;
  •  public static final int LAYOUT_LEFT - размещение изображения со сдвигом к левой стороне экрана;
  •  public static final int LAYOUT_RIGHT - размещение изображения со сдвигом к правой стороне экрана;
  •  public static final int LAYOUT_CENTER - размещение изображения со сдвигом к центру экрана.
  •  altText - информационный текст, используемый взамен загружаемого изображения. Если текст не используется - этот параметр нужно установить в значение null.


Второй конструктор класса Imageltem имеет на один параметр больше и выглядит следующим образом:

public  Imageltem(String  label,  Image  img, int   layout, String altText int  appearanceMode)

Параметры конструктора Imageltem:

  •  label - метка;
  •  img - объект класса Image, содержащий изображение;
  •  layout-форматирование загружаемого изображения на экране телефона;
  •  altText - текст, использующийся в замен загружаемого изображения;
  •  appearanceMode - этот параметр содержит ряд значений:
  •  BUTTON - создает кнопку с текстом;
  •  HYPERLINK - создает гиперссылку;
  •  LAYOUT_BOTTOM - выравнивание к нижней части экрана;
  •  LAYOUT_CENTER - выравнивание по центру экрана;
  •  LAYOUT_TOP - выравнивание к верхней части экрана;
  •  LAYOUT_LEFT - выравнивание к левой части экрана;
  •  LAYOUT_RIGHT - выравнивание к правой части экрана.


С помощью этих значений можно создать активную ссылку и оформить изображение в виде кнопки или гиперссылки. В разделе 4.9 при рассмотрении класса Stringltem мы уже сталкивались с этими значениями, создавая статический текст в виде кнопки и гиперссылки.



При загрузке изображений с помощью класса ImageItem существует ряд нюансов, на которые необходимо обратить внимание. Класс ImageItem является подклассом класса Image, прежде чем воспользоваться классом ImageItem, необходимо создать объект класса Image. Затем поместить или загрузить в объект класса Image изображение и только потом воспользоваться классом ImageItem для размещения изображения на экране представленного объектом класса Form. Создавая объект класса ImageItem, вы создаете своего рода контейнер для содержания ссылки на объект Image. Рассмотрим небольшой фрагмент кода, иллюстрирующий создание и загрузку изображения:

Image  a  =   Image.createlmage("/ris.png");  Imageltem b  =  new  Imageltem("Рисунок",   а, ImageItem.LAYOUT_CENTER,null);

Первым делом создается объект i класса Image, после чего происходит загрузка необходимого изображения посредством вызова метода createlmage () класса Image. Далее создается объект im класса ImageItem, который будет содержать ссылку на объект image.

Изображение, загружаемое в приложение, может находиться в любом месте рабочего каталога. При использовании, например J2ME Wireless Tollkit 2.1, изображение лучше поместить в папку \res. Эта папка по умолчанию для файлов ресурса к разрабатываемому приложению и в этом случае запись /ris.png будет обращаться к папке \res. Если вы хотите использовать другую папку, то необходимо указать весь путь при загрузке изображения, например:

Image  ikon1  = Image.createlmage("/Ikon/Leve12/ikon1.png"};

Рассмотрим пример загрузки изображения на экран в виде фона. В качестве изображения послужит фотография автора этой книги, которую мы загрузим и выведем на экран телефона. Код примера содержится в листинге 6.6 .

/** Листинг 6.6 Класс Imageltem */ import javax.microedition.midlet.*;  import javax.microedition.Icdui.* ; public class MainClassImageltem extends MIDlet implements CommandListener { // команда выхода из приложения private Command exitMidlet = new Command("Выход", Command.EXIT, 1); // объект класса Form private Form myform = new Form("Изображение"); // объект mydisplay представляет экран телефона private Display mydisplay; public MainClassImageItem() { mydisplay = Display.getDisplay(this); } public void startApp() { // перехватываем исключительную ситуацию try{ //   загрузка изображения Image  image  =   Image.createlmage("/gornakov.png"); //   создаем объект  класса  ItemImage Imagelfcem  im =  new  ImageItem("Фотография", image,   Imageltem.LAYOUT_CENTER,""); //  добавляем изображение  в  форму myform.append(im) ; }   catch(Java.io.IOException ex){} // установка  обработчика  событий для Form myform.addCommand(exitMidlet); myform.setCommandListener(this); //  отразить текущий дисплей mydisplay.setCurrent(myform); } public  void pauseApp()   {} public void destroyApp(boolean unconditional){} public void commandAction(Command c, Displayable d)  { //   выход  из  приложения if   (с  ==  exitMidlet) { destroyApp(false); notifyDestroyed(); } } }



Рис 6.8. Изображение, загруженное при помощи класса Imageltem


Пример достаточно прост: происходит загрузка изображения на экран телефона представленного классом Form с добавлением команды выхода из приложения. Но после компиляции листинга 6.6 и запуска приложения на эмуляторе J2ME Wireless Toolkit 2.1, возникают цветовые дефекты в виде некачественного отображения фотографии. Это вызвано, прежде всего, минимальной цветовой гаммой, представляемой эмулятором J2ME Wireless Toolkit 2.1. Протестируйте код из листинга 6.6 на различных эмуляторах, рассмотренных в главе 4. На рис 6.8 показан эмулятор с изображением на экране фотографии.



Содержание раздела