专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Android

J2ME中怎么保存更新后的界面?求高手相助啊

发布时间:2010-05-30 10:52:14 文章来源:www.iduyao.cn 采编人员:星星草
J2ME中如何保存更新后的界面?求高手相助啊!!!
我想在J2ME实现一个可以自动更新记录的程序,打开这个程序后会自动更新,关闭这个程序后,再打开这个程序,可以显示更新后的内容。请问改用什么方法实现呢?我好茫然啊。。 


------解决方案--------------------
j2me界面上的东西都可以看成一张图片,一个屏幕就是一张图片,
你可以
Image image = Image.createImage(240,320);
Graphics gs = image.getGraphics();
创建一个静态的IMAGE,用这个IMAGE把屏幕上的东西都画再这个image上面。
最后再把这个image画在paint()方法中的Graphics上,

关闭程序后你只要把这个image写到RMS或者文件系统中,
打开这个程序你再把这个image流读出来再画在Graphics上就OK了

这是用的二级缓存画图片
------解决方案--------------------
Image image = null;
Graphics gs = null;
public int[] rgb = new int[240 * 320];
public int imageId = -1;
//打开程序
public void open()
{
try {
RecordStore rs = RecordStore.openRecordStore("image", true);
byte[] data = rs.getRecord(imageId);
if(data == null || data.length <= 0)
{
image = Image.createImage(240,320);
}
else
{
ByteArrayInputStream byin = new ByteArrayInputStream(data);
DataInputStream dain = new DataInputStream(byin);
for(int i = 0; i < dain.available(); i++)
{
rgb[i] = dain.readInt();
}
image = Image.createRGBImage(rgb, 240, 320, true);
dain.close();
byin.close();
}
gs = image.getGraphics();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();

}

//把所有东西先画到这个image上面
public void paintImage()
{
// gs.fillArc(x, y, width, height, startAngle, arcAngle)
// gs.fillRect(x, y, width, height)
// .....................
//把东西画好后。
}

protected void paint(Graphics g) {
// TODO Auto-generated method stub
//把画好后的image画在这个Graphics上面
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(255,255,255);
g.drawImage(image, 0, 0, g.TOP | g.LEFT);
}

//关闭程序
public void close()
{
try {
image.getRGB(rgb, 0, 240, 0, 0, 240, 320);
RecordStore rs = RecordStore.openRecordStore("image", true);
ByteArrayOutputStream by = new ByteArrayOutputStream();
DataOutputStream data = new DataOutputStream(by);
for(int i = 0; i < rgb.length; i++)
{
data.writeInt(rgb[i]);
}
data.flush();
data.close();
by.flush();
by.close();
imageId = rs.addRecord(by.toByteArray(), 0, (by.toByteArray()).length);
rs.closeRecordStore();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();

}

------解决方案--------------------
多用低级界面做就是了
------解决方案--------------------
肯定要重画了,,
反正是画一张静态的IMAGE,不影响性能
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: