如何在j2me中下载背景图片?

时间:2011-12-08 14:14:57

标签: java-me midp j2mepolish midp-2.0

我有一个画布,我在中心显示一个图像。此图片由网址下载。实际上有更多的图像要下载,这意味着如果用户点击RIGHT,我必须显示下一张图像,如果LEFT,我必须从背面显示另一张图像。我有一组字符串存储url的图像。我想在后台下载上一张和下一张图片。怎么做?

2 个答案:

答案 0 :(得分:1)

以下是您需要考虑此要求在一系列设备上工作的一些问题

  1. 如果图像与设备画布大小相比较大怎么办?也就是说,与画布w * h相比,图像尺寸w * h非常高。
  2. 低内存设备可以加载如此大的图像吗?
  3. 跨设备的多线程模型不一致。这是一些设备,它允许你创建10个线程,而在其他设备,它将停止在2。
  4. 我的应用程序可以支持获取图像类型吗?那是我正在下载.JPG / .GIF,但我的设备不支持它。
  5. 如何缓存图片?导航到该图像时,是否要反复加载相同的图像?
  6. 我是否使用TCP / HTTP / RMI下载图像内容?
  7. 此代码是否可以跨JVM for JavaME移植?
  8. 并且列表继续.....

    请记住上面提到的问题是建立一个网络IO管理器和缓存管理器。

    interface NetworkIoItem {
         Object sourceComponent;
    
         public void onImageDownload(Image image) {
               //Trigger the source 
         }
    }
    

    class NetworkIoManager extends Threads {
         Vector pendingRequestQueue;
    
         :
         :
    
         public void run() {
               //Wait on the pending request queue
    
               //Process all the elements in pending request queue
               //and again wait on this queue
         }
    }
    

    class CacheManager {
         Vector cachedContent;
    
         public boolean checkIfCached() {
              //Check in the cachedContent whether
              //this image exists if so return true;
         }
    
         public Image fetchImage() {
              //Check if the image is cached
              //if so return this cached image
    
              //else push a NetworkIoItem object to 
              //NetworkIOManager pending queue
         }
    }
    

    现在,对于每个图像(当前,左或右)调用CacheManager.fetchImage(),此方法将负责为您提供从服务器缓存或下载的图像。在相同的方法中,如果图像未缓存,则会将NetworkIoItem objbect添加到NetworkIoManager pendingQueue 并下载。下载完成后,它将触发NetworkIoItem.onImageDownload(...)方法。

    您可以使用J2ME Polish's Touch功能下载NetworkIoManager

    中的图片

    通过使用此方法,您将对请求URL执行异步图像提取。

答案 1 :(得分:0)

做类似的事情。

Thread t = new Thread(new Runnable(){
  public void run() {
    // Your code to download image here as you were doing earlier,
    // for previous and next image
  }
});

t.start();