自适屏的java软件可以自动检测屏幕的大小并且自己伸展至合适的尺寸,但是呢,在国机上,有些软件就“不老实”了,比如典型的的手机QQ2009,我的诺机6220c(240x320)运行是正常的,但是在联想i909(240x320)上,屏幕下面会有一道白条,实际分辨率约240x270左右,我换到联想i60(240x400)上,依然会有一道同样大小的白条,实际分辨率约240x340左右。那么我猜测,软件是自适屏的没错,但是国机厂商也许是因为某些因素把java的某一部分舍去了,从而导致软件无法正确识别手机屏幕的信息,所以运行时不是全屏。最近突发奇想,既然少了那么一部分,如果我加回那一部分,不就是全屏啦!下面介绍本次教程的重点知识。(纯粹个人理解,有误区还请口下留情。)在java中,自适屏的代码有两个,分别为:width与height----width表示自动检测屏幕宽height表示自动检测屏幕高-----自适屏的话,源代码则为(这个是手机QQ2009的,其他软件可能会不一样):----i = new dn(0, 0, super.getWidth(), super.getHeight());----在大爱上运行会少约50个高度,那么我们要把这个代码改成:----i = new dn(0, 0, super.getWidth(), super.getHeight() 50);----就可以恢复它的自适屏能力啦!要注意的是,不一样的机型,空白的大小也不一样,比如联想i60,可能要 60才能全屏。Java语言中,存在着加、减、乘、除等运算,分别用“ “、“-“、“*“、“/“来表示,这里只用到加运算,其在Halo中用“iadd”表示,举个例子:(24 6) / 5在Halo中会变成以下代码:----bipush 24bipush 6iaddiconst_5idiv----我以我个人理解的范围给大家解释一下,Halo中,不会存在直接的数字,前面都会有几个字母带着,数字在0到5之间,前面会加上“iconst_”的字符,6或以上,会加上“bipush ”的字符;两个数字要相加,先起几行,把数字全部表达出来,然后再起一行“iadd”,即是把上面的数字相加,要减啊、乘、除什么的,格式都一样,只是iadd变成与运算符对应的代码即可,现在对着上面的代码应该能理解了吧?PS:idiv是除的代码----还是在Halo中*作,用Halo打开jar,切换至类编辑器,全文查找“getwidth”或者getheight”,然后找到方法为<init>的结果,一个个的查看,如果在具体位置看到了另一个自适应代码的话,那么就找到了点击getheight的那行,在右边点“编辑(高级)”,回车另起一行,输入“bipush 50”,回车再起一行,输入“iadd”,确定,然后保存方法、编译、打包。这样,我们就在getheight的后面加上了50个高度,联想i60就把bipush 50改成bipush 60即可。你可以反编译查看一下,后面有加上那个数字吧?在手机上测试一下看看,全屏了吧?哈哈~~不同机型的空白大小也不同,一般Q屏是53,WQ屏是60,请根据自己的情况设置,如果还不能满屏,自己适当调试即可。





