与许多图标或一个图像一个图标大的形象呢?

我有显示围绕100的图标(50×50每)的按钮。 我下载大PNG图像,其中包含所有100个图标,然后创建使用的每个图标Image.subImage()方法。

但我的应用程序获得OutOfMemoryError

我想大约2解决方案如下:

  1. 下载100图标焦油(合并为单一的)文件。 所以,我可以用一个创建的图标之一。 大图不需要在内存中,直到我创建了最后一个图标。
  2. 下载大图,但不产生小icon.Then控按钮类从大的图像绘制的图像(图标)。

这是最好的解决办法? 或者你有任何其他的解决这一问题。

--------------解决方案-------------

LWUIT是专为小型设备,所以你应该设计代码。 因此,一个大的图像不是一个好主意。

你真的应该使用单独的图像。 只有让那些在内存中就可以看到。 或者你会继续运行到内存溢出错误。

我会处理这件事是这样的。 获取一个缓存映射。 如果你想要的图像,检查它是否尚未在缓存映射。 如果是,使用的图像从缓存映射,如果没有下载它,并把图像中的缓存映射。 当你的内存不足,从缓存映射删除最后一个图像,并下载新的。

if (imageCache.get(url) != null) {
//#debug
System.out.println("Get cached image from: " + url);

asyncImage.setImage((Image) imageCache.get(url));
asyncImage.setQueued(false);
} else {
//#debug
System.out.println("Start download image from:" + url);

map.put(url, asyncImage);

ImageDownloadService d = new ImageDownloadService(url, new ActionListener() {

public void actionPerformed(ActionEvent evt) {

NetworkEvent n = (NetworkEvent) evt;
Image image = (Image) n.getMetaData();
String url = n.getConnectionRequest().getUrl();
AsyncImage asyncImage = (AsyncImage) ImageManager.this.map.get(url);
map.put(url, asyncImage);
asyncImage.setImage(image);
map.remove(url);
imageCache.put(url, asyncImage.getImage());
asyncImage.setQueued(false);
if (Display.getInstance().getCurrent() instanceof AsyncLoadable) {
((AsyncLoadable) Display.getInstance().getCurrent()).asyncLoaded();
} else {
Display.getInstance().getCurrent().repaint();
}
//#debug
System.out.println("Retrieved image from:" + url);
}
});
d.addResponseCodeListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {
NetworkEvent n = (NetworkEvent) evt;
String url = n.getConnectionRequest().getUrl();
AsyncImage asyncImage = (AsyncImage) ImageManager.this.map.get(url);
asyncImage.setQueued(false);
map.remove(n.getConnectionRequest().getUrl());
//#debug
System.out.println("Failed image from:" + url);
}
});

NetworkManager.getInstance().addToQueue(d);

分类:Java ME的 时间:2012-01-01 人气:0
本文关键词: Java ME的,LWUIT
分享到:

相关文章

  • Java ME的 - LWUIT单选按钮 2015-02-13

    public class StateMachine extends StateMachineBase implements ActionListener { Resources resources; RadioButton Verifi=new RadioButton("Verification") ; RadioButton Enroll=new RadioButton("Enrollment"); StateMachineBase cl=new StateMac

  • 我在哪里可以找到/下载LWUIT主题 2013-09-09

    我看到了一个真正真棒LWUIT今天的主题和图形是不是真的我的事. 有谁知道的任何地方我可以下载(甚至购买)好LWUIT主题? --------------解决方案------------- 在从Subversion的躯干LWUIT,你可以找到一些项目,有主题的例子. 看看他们. http://java.net/projects/lwuit/sources/svn/show

  • 代表在LWUIT浏览器表 2013-09-11

    我想有一个HTMLComponent内的水平滚动的表作为表可以比移动电话的宽度宽,我不希望用户具有一个包裹表. 我设置setScrollableX(真)为HTMLTABLE,但我有很多获取焦点进出不同组件的问题. 我如何会去实现这一目标的任何提示? --------------解决方案------------- 重点是LWUIT问题的鱼龙混杂和HTML组件相当继承了他们配发的. 在LWUIT的SVN可用(http://java.net/projects/lwuit/sources/svn/sho

  • 诺基亚阿莎LWUIT UIID和源代码 2014-05-06

    我制定诺基亚阿莎501的应用程序,我使用的诺基亚SDK 1.1,并从$ {} SDK_HOME图书馆S40-asha2013 /插件/ LWUIT / lib中. 我想从我学习的所有例子搞清楚了UIID的东西,但我找不到这将列出所有的组件UIID值的来源. 比如我可以改变一个正常的文本字段的背景颜色只有当我设置为UIID"标签" 例如: textField.setUIID("Label"); 或者使例如一个绿色按钮,你必须这样设置UIID: saveBtn.setU

  • Facebook和Twitter集成LWUIT 1.4 2015-01-16

    我正在开发使用LWUIT 1.4 API J2ME应用程序. 我需要与Facebook和Twitter整合. 怎么做? 是否有任何的源代码,我可以学到什么? --------------解决方案------------- LWUIT4IO这是目前只有在SVN主干LWUIT可(http://java.net/projects/lwuit/sources/svn/show)包括Twitter的基本支持,应该在几个星期之内得到Facebook的支持. Twitter的支持,虽然是只读的,因为这是实现后

  • J2ME:使用自定义字体(位图)性能 2013-03-17

    我想在我的J2ME应用程序中使用自定义字体. 所以我创建了一个PNG文件包含字形的PNG文件偏移所有需要的字形和字形宽度的阵列和另一个. 现在,我想渲染使用上述字体的GameCanvas类内我的应用程序的文本. 但是当我使用下面的代码,在实际设备呈现的文字是很慢的. 注意:该文本是编码(对于某些目的)的字节,并存储在this.text变量. 242 = [空格],241 = [\ n]和243 = [\ R]. int textIndex = 0; while(textIndex < this.

  • 设计一个图形用户界面的一个J2ME应用程序 2013-12-26

    我如何创建一个手机J2ME应用程序,类似于你在Java游戏看菜单的GUI? 我试过的MIDlet使用Netbeans,但他们只给你一次一个GUI元素(文本框,选择,登录等) 而其中的Java IDE,你会通常设计这些图形用户界面吗? Netbeans的或者是Eclipse? 是IntelliJ IDEA的这个藏汉使用吗? 我是否需要写/获取绘制​​图形用户界面控制,通过位图的功能筛选..和跟踪压制焦点键的图书馆吗? --------------解决方案------------- 您还可以使用MI

  • 在Eclipse中脉冲星+的Java微型版SDK 3.0 LWUIT 1.4预验证错误 2012-07-15

    我遇到一些预验证错误作为对象decsribed. 我GOOGLE了周围很多之前发布这个问题,但发现很少有反应,他们大多很老的(2008年,2009年),或简称"传递给NetBeans的";) 我的项目包括LWUIT.jar在./lib文件夹本地罐子,针对的是一个Java微型版SDK 3.0. 编译器合规性为1.4,因为我听说LWUIT需要它,而且我还没有一个MIDlet添加到它. 只需添加的jar到项目提出了一些错误. 任何人都经历了脉冲星+ LWUIT成功? ------------

  • 如何避免LWUIT应用程序重新启动在最小化后,Java的我 2013-01-03

    我已经在创建了LWUIT应用Java的我,但是,用户每次接到电话的应用程序最小化,当用户恢复它,第一种形式再次显示(飞溅形式). 如何避免再次启动应用程序? --------------解决方案------------- 尝试重写onHideNotify()和onShowNotify(),在hideNotify,最后显示形式存储到一个变量,并显示在onShowNotify()

  • 是否有可能创建使用Java和LWUIT框架iPhone应用程序? 2013-09-04

    是否有可能创建使用Java和LWUIT框架IPhone的应用程序? --------------解决方案------------- 似乎有一个基本的LWUIT Microemulator的发展,但作者指出,这需要越狱iPhone. 我不靠这个了什么严重的,因为我怀疑在此基础上的东西都不会出现在App Store中. 一个更好的选择将是学习Objective-C和本机API,或者使用类似MonoTouch的替代平台. 看看这个视频. http://www.youtube.com/watch?v=0

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.236 (s). 10 q(s)