J2ME2.0 画刷,自适应屏幕
唉,首先要批评下自己,真的很花心,小猫钓鱼三心二意,前阵子对wxWidgets很疯迷,势必要做出最绚丽的UI才罢休。没想到期间被一些事情缠绕一下,现在又对J2ME感兴趣了,其中还是喜欢界面方面,再者上回看新闻说老马,马化腾都说如果身边什么都没有了就去做iPhone开发,很赚钱,偷笑下。而现在LinuxMobileOS更是如火如荼,主要是Google带了个好头,从心里面来说真的很尊敬Google,都不晓得网上哪些骂Google的是什么脑子,有点深,不讨论先。
下手之前初步看了下API,天,J2ME的绘制API真的是很冏阿,连个画刷都无,没办法,习惯性Google下,找了几篇文章,挑了一篇自己改造了下,其实代码虽然是Java的,思路也适合其它语言吧,包括双缓冲机制。
package com.tinyms;
import java.io.IOException;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class ImageUtils {
//水平填充
public static int H = 0;
//垂直填充
public static int V = 1;
public static Image brush(String imgUrl,int rectWidth,int rectHeight,int flag) throws IOException{
//从/res目录载入画刷需要的背景图片
Image bgImage = Image.createImage(imgUrl);
//背景图片的宽度
int bgImageW = bgImage.getWidth();
//背景图片的高度
int bgImageH = bgImage.getHeight();
//计算要刷多少次,水平与垂直方向
int col = rectWidth/bgImageW + 1;
int row = rectHeight/bgImageH + 1;
//创建缓冲临时图像,2个参数表示最终需要绘制到屏幕上的图片的宽度高度
Image tempImage = Image.createImage(rectWidth, rectHeight);
//缓冲图像的GD
Graphics g = tempImage.getGraphics();
//刷墙
if(flag==H){
for(int c=0;c<col;c++){
g.drawImage(bgImage, c*bgImageW, 0, Graphics.LEFT|Graphics.TOP);
}
}else if(flag==V){
for(int r=0;r<row;r++){
g.drawImage(bgImage, 0, r*bgImageH, Graphics.LEFT|Graphics.TOP);
}
}
bgImage = null;
return tempImage;
}
}
然后测试一下:
protected void paint(Graphics g) {
// TODO Auto-generated method stub
int w = this.getWidth();
int h = this.getHeight();
try {
Image bg = ImageUtils.brush("/AlbumAlphaBlend.png", w, h, ImageUtils.V);//Image.createImage("/topnav_divider.png");
g.drawImage(bg, 0, 0, Graphics.LEFT|Graphics.TOP);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
水平刷

垂直刷:

浙公网安备 33010602011771号