`
happmaoo
  • 浏览: 4470234 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

手机"用户界面和多媒体"版面有价值问题整理[j2medev.com][0406更新]

阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

预告:j2medev.com将开始整理各个版面的有价值问题,并以PDF格式集结,敬请期待。

出品商

产品名称

产品版本

J2medev.com

版面有价值的问题合集

0.1

j2medev.com之“用户界面和多媒体”版面

有价值问题的整理

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 450.1pt; HEIGHT: 8.45pt" type="#_x0000_t75" o:hrpct="0" o:hralign="center" o:hr="t"><imagedata src="file:///C:%5CDOCUME~1%5CZHENGY~1.VIC%5CLOCALS~1%5CTemp%5Cmsohtml1%5C10%5Cclip_image001.gif" o:title="BD10290_"></imagedata></shape>

历史

Version

Date

Creator

Description

1.0.0.1

2006-4-4

郑昀

草稿

1.0.0.2

2006-4-6

郑昀

第二稿

1 全屏问题

全屏/FullCanvas/setFullScreenMode

关键词

详细描述

SonyEricsson T630

该款手机的参数:索尼爱立信 T630 SonyEricssonT630R401 ProfileMIDP-1.0 ConfigurationCLDC-1.0

“据我所知,不可以实现全屏显示。”

--- lulei204

SonyEricsson K700c

k700c 直接用nokiaFullCanvas,可以全屏176 x 220

k700cmidp2.0的那个this.setFullScreenMode(true);也是可以全屏的,176x220

k700c直接用nokiaFullCanvas全屏好像是176*208,直接拿nokia60上的程序可以直接放进去。键值和60的也是相同的,只是多了一个返回键,我忘了值是多少了。用2.0GameCanvas大小是176*220

--- lulei204

不使用FullCanvas实现全屏的方法

为了用标准的SUN WTK2.1开发能兼容各种机型的MIDP2.0游戏,会遇到一个奇怪的全屏问题,在K700上好好的,到了Nokia上居然死活显示一半,费了一番功夫后,终于不用FullCanvas实现了兼容K700Nokia的全屏显示,方法如下:

在索爱的K700上,实现全屏很简单,如下写法就可以了:

public Canvas1()

{ super(false);

this.setFullScreenMode(true);

this.width=getWidth();

this.height=getHeight();

} 得到的屏幕大小是176*220

Nokia上就比较奇怪了,这种方式取得的widthheight居然是176*144

需要加以下代码修正一下:

if(width>=176)

{ if(height

{

height=208;

}

} 绘图部分都以widthheight为基准。

另外canvas1不能继承系统的GameCanvas,因为系统GameCanvas里的缓冲图还是176*144的,画出来就只能是半屏,我用j2me polish里的GameCanvas修改一下后,放到src里代替系统GameCanvasOK了。

修正过的GameCanvas代码如下:

http://www.j2medev.com/bbs/dispbbs.asp?

BoardID=19&ID=3218&replyID=&skin=1

---alexhy

FullCanvassetFullScreenMode()的区别

setFullScreenMode用于MIDP2.0设备上。com.nokia.mid.ui.FullCanvasNokia UI API 1.1的包,用于MIDP2.0设备上,SonyEricsson手机也支持。

FullCanvas是肯定可以实现全屏幕显示的,但是MIDP2.0里面的setFullScreenMode()只是实现为尽量使用最大的屏幕空间,但是不一定是全屏幕,要看各个手机的实现。”

---mingjava

FullCanvas不能加CommandsetFullScreenMode(true)可以加上Command()。只是我加上一个按键时,却不管把它设在哪里,只能是右键响应。”

---风过留痕

FullCanvasCanvasGameCanvas分别有什么不同

FullCanvasCanvas的子类,实现全屏的功能,而且把按键针对nokia的手机进行了映射。其他没有什么区别。”

---migjava

GameCanvas也是Canvas的子类,自MIDP2.0起提供,专门针对游戏增加了一些功能。在按键和显示各方面的运用都和Canvas有较大的不同。”

---efei

MotorolaMIDP1.0手机

motorola如果不支持MIDP2.0,应该就没办法实现全屏了。全屏下的菜单很好实现,不用搞得象Command那么复杂,那个Command用起来就是很不爽,还是自己写最好。”

---海标

Nokia S60全屏后的Canvas高度

“canvas. setFullScreenMode(true)后,一定让他被绘制一次,系统会调用sizechange(int w,int h)wh肯定是全屏的。仅调用setFullScreenMode (true)则好象各系统有不同处理。

---atchome

“You can call getWidth() getHeight() after Canvas.showNotify(). Then it will return the correct value. eg. 176*208”

--- okboy001

系统第一次回调paint()方法时可以获得正确的屏幕尺寸

原因如atchome所说

--- imshark_jinni

Nokia S60真机上这是一个BUG似乎:

setFullScreenMode(true);调用之后,

getHeight()返回的并不是全屏后的高度,比如他本应该返回208

但是他却返回144,所以,在真机测试时也要小心nokia s60的这个bug

不要因为屏幕高度获取不正确,导致fillRect与你预想不一致。

以上这个BUG,起码我的Nokia 7610就是这样。

所以我必须在setFullScreenMode(true);全屏之后

通过下面代码来获取真实的canvas高度:

Code:

public abstract class PopupCanvas extends Canvas

{

。。。。

/*

* 针对Nokia全屏情况下getHeightBUG,此函数出自于

* http://discussion.forum.nokia.com/f...?threadid=48826

*/

public int getHeight(){

try{

if("Nokia".compareTo(

System.getProperty("microedition.platform").substring(0,5))

== 0)

return 208;

else

return super.getHeight();

}

catch(Exception e){

return super.getHeight();

}

}

}

---zhengyun

2 ImageByteArray转换问题

Image/byte[]/Convert

关键词

详细描述

Image对象转换为byte[]

image-(getGraphics)->graphic-(setClip, 对每个象素getColor)->原始byte[]

--- rypan

“要是在 J2ME 的话, 看来只有 Image.getRGB() 能帮上:

还有做int[] -> byte[] 的动作, 可以考虑用 ByteArrayOutputStream

+ DataOutputStream, int[] dos.writeInt 的方法写在 Byte array .

当然可以用最老土的方法, 不知道那种快:

byteArray[i] = intArray[j] & 0xFF;

byteArray[i+1] = (intArray[j] >> 8)& 0xFF;

byteArray[i+2] = (intArray[j] >> 16)& 0xFF;

byteArray[i+3] = (intArray[j] >> 24)& 0xFF;

--- wapeter

public static byte[] getByteArray(Image image)

{

int raw[] = new int[image.getWidth() * image.getHeight()];

image.getRGB(raw, 0, image.getWidth(), 0, 0,

image.getWidth(), image.getHeight());

byte rawByte[] = new byte[image.getWidth() * image.getHeight() * 4];

int n = 0;

for(int i = 0; i

{

int ARGB = raw[i];

int a = (ARGB & 0xff000000) >> 24;

int r = (ARGB & 0xff0000) >> 16;

int g = (ARGB & 0xff00) >> 8;

int b = ARGB & 0xff;

rawByte[n] = (byte)b;

rawByte[n + 1] = (byte)g;

rawByte[n + 2] = (byte)r;

rawByte[n + 3] = (byte)a;

n += 4;

}

raw = null;

return rawByte;

}

上面代码进一步的解释:

第一步:

如何获得image对象的int数组呢?这个就简单了可以通过获得RGB数组就可以。Image对象中有直接的getRGB方法,不过这里的参数的位置和J2SE中不太一样:

javax.microedition.lcdui.Image.getRGB(int[] rgbData, int offset, int scanlength, int x, int y, int width, int height)

  第一个是目标数组,第二个是偏移量,

分享到:
评论

相关推荐

    J2MEDev电子期刊5月号PDF版

    J2ME开发环境达建................................................................................................................2 Eclipse快速上手指南.....................................................

    J2ME Game Programming

    本书介绍了J2ME游戏开发基础,以MIDP2为主。 http://www.j2medev.com/ebook/j2me/200605/710.html&lt;br/&gt;http://www.j2medev.com/ebook/UploadSoftPic/200605/20060531093745896.jpg

    J2ME API 速查手册0.7

    本手册由www.j2medev.com整理制作而成。手册中相应图片、图表、文字的版权归原作者所有。你可以分发本手册的拷贝,但请保证其内容的完整性。www.j2medev.com对于使用本手册造成的任何损失,概不负责。 本手册0.7...

    移动 JAVA 3D 编程基于CLDC的MIDP技术

    J2ME开发网(www.j2medev.com)是国内发展势头很猛的J2ME技术的垂直门户。J2ME 开发网广泛的覆盖了基于CLDC的MIDP技术,并将逐步扩展到CDC方面。J2ME提供最新的 原创文章,促进开发者的技术交流;提供丰富的资源下载...

    程序员常去的网站

    程序员常去的100个网站! 1 J2me开发网 http://www.j2medev.com/bbs/index.asp 2 J2me社区 http://www.j2meforums.com/forum/

    Better Faster Lighter Java

    Tate &lt;br/&gt;下载网址: http://www.j2medev.com/ebook/jese/200605/701.html&lt;br/&gt;&lt;br/&gt;书籍图片: http://www.j2medev.com/ebook/UploadSoftPic/200605/20060531090149545.jpg&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Java 的...

    JavaME中文教程pdf

    本教程由J2ME开发网(www.j2medev.com)的网友集体创作。任何人未经J2ME开发网的书 面许可,不得将本教程用于商业目的。本教程受到版权法的保护。盗用、截取教程中的文字、 图形、表格都将视为非法。如未标明,则...

    J2ME中文教程-J2ME 开发网

    本教程由J2ME开发网(www.j2medev.com)的网友集体创作。任何人未经J2ME开发网的书 面许可,不得将本教程用于商业目的。本教程受到版权法的保护。盗用、截取教程中的文字、 图形、表格都将视为非法。如未标明,则...

    [特效研究]j2medev论坛里提到的一个显示特效实现

    NULL 博文链接:https://univasity.iteye.com/blog/615238

    J2ME开发网FAQ集锦

    J2ME开发网FAQ集锦是一份由J2ME开发网(www.j2medev.com)的网友们集体创作的技术文档。该文档旨在为初学者以及有经验的开发者提供一系列关于Java 2 Platform Micro Edition (J2ME)开发的常见问题解答。这份文档不仅...

    J2ME的开发教程.pdf

    如果在阅读过程中遇到问题,鼓励读者通过www.j2medev.com网站与作者或其他读者进行交流,共同探讨和解决技术难题。 #### 七、结语 J2ME开发教程的目的是引导国内开发者轻松进入移动3D世界,无论是对于初学者还是有...

    J2ME中文教程

    - **官方网站**: [J2ME开发网](http://www.j2medev.com/),提供了丰富的文档和技术支持。 - **社区论坛**: 论坛内汇聚了大量的开发者经验分享和技术讨论,是学习过程中不可或缺的资源之一。 通过上述知识点的梳理,...

    手机 PDA Moblie开发资源网站

    - **网址**:http://www.j2medev.com/Index.html - **简介**:J2ME是Java平台的一个版本,专门用于小型嵌入式设备如手机和平板电脑等。该网站提供了一系列针对J2ME开发的教程、工具和资源。 - **适用对象**:专注于...

Global site tag (gtag.js) - Google Analytics