Blackberry - ListField с изображениями из файловой системы - PullRequest
4 голосов
/ 28 апреля 2010

Я использую следующий код для получения изображения с телефона или SDCard, и я использую это изображение в моем ListField. Это дает вывод, но для создания экрана требуется очень много времени. Как решить эту проблему ?? Может кто-нибудь мне помочь?? Заранее спасибо !!!

String text = fileholder.getFileName();
try{
 String path="file:///"+fileholder.getPath()+text;
 //path=”file:///SDCard/BlackBerry/pictures/image.bmp”

 InputStream inputStream = null;
 //Get File Connection
 FileConnection fileConnection = (FileConnection) Connector.open(path);

 inputStream = fileConnection.openInputStream();

 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 int j = 0;
 while((j=inputStream.read()) != -1) {
 baos.write(j);
 }
 byte data[] = baos.toByteArray();                
 inputStream.close();
 fileConnection.close();  

 //Encode and Resize image 
 EncodedImage  eImage = EncodedImage.createEncodedImage(data,0,data.length);
 int scaleFactorX = Fixed32.div(Fixed32.toFP(eImage.getWidth()), 
      Fixed32.toFP(180));
 int scaleFactorY = Fixed32.div(Fixed32.toFP(eImage.getHeight()), 
      Fixed32.toFP(180));
 eImage=eImage.scaleImage32(scaleFactorX, scaleFactorY);
 Bitmap bitmapImage = eImage.getBitmap();  
 graphics.drawBitmap(0, y+1, 40, 40,bitmapImage, 0, 0);
 graphics.drawText(text, 25, y,0,width);
}
catch(Exception e){}

1 Ответ

6 голосов
/ 28 апреля 2010

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

...