
J2me:
开发平台
Android:
操作系统
2. 工程结构比较(源代码,资源文件夹,图片,数据)
J2me:
Res:资源文件
Src:源代码
Android:
Src:源代码
Res\\drawable:图片
Res\
aw:声音
Res\\values:字符串
Assets:数据文件
3. 安装包比较
J2me:
Jad,jar
Android:
apk
4. 代码结构比较
J2me:
MIDlet,Canvas
Android:
Activity,View
都采用继承的方式,都只有一个MIDlet/Activity,一般都只有一个Canvas/View
5. 代码细节比较
l 全屏设置
J2me:
在Canvas类中调用SetFullScreenMode(Boolean)
Android:
在Activity类中调用
//设定全屏显示
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
2 获得屏幕尺寸
J2me:
Canvas类的getHeight()和getWidth()方法
Android:
int screenWidth,screenHeight;
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
3 Display
J2me:
Display dis=Display.getDisplay(MIDlet);
Android:
Display display = windowManager.getDefaultDisplay();
4 画布类
J2me:
Canvas
Android:
继承View类,定义构造方法:
public MyView(Context context)
{
super(context);
}
5 屏幕绘制方法
J2me:
Paint(Graphics)
Android:
void onDraw(Canvas g)
6 Graphics
J2me:
Android:
7 Image的创建
J2me:
Image.createImage(path);
Android:
img = BitmapFactory.decodeResource(getResources(),R.drawable.map0);
8 Font的创建,Font使用,字体设置
J2me:
Android:
9 drawImage
J2me:
Android:
public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint)
多个重载
10 字符串绘制
J2me:
Android:
public native void drawText(String text, float x, float y, Paint paint);
多个重载
11 setClip
J2me:
Android:
public boolean clipRect(float left, float top, float right, float bottom,Region.Op op)
最后一个参数为:Region.Op.REPLACE
12旋转
J2me:
drawRegion()
drawImage()
Android:
还没找到好的方法,不过可以先创建一张翻转后的图片,再使用,封装好的代码如下:
//创建翻转图片
public Bitmap createTransImage(Bitmap img,int trans)
{
// Bitmap img;
try
{
// img = BitmapFactory.decodeResource(getResources(),sImg);
int width = img.getWidth();
int height = img.getHeight();
int newWidth = 200;
int newHeight = 200;
// calculate the scale - in this case = 0.4f
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// createa matrix for the manipul
ation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// rotate the Bitmap
int degree=0;
Bitmap resizedBitmap=null;
int data[];
int buf;
switch(trans)
{
case ROTATE_HOR:
//创建镜像翻转
data=new int [img.getWidth()*img.getHeight()];
img.getPixels(data, 0, img.getWidth(), 0, 0, img.getWidth(),img.getHeight());
//交换数据
for(int i=0;ifor(int j=0;j{
buf=data[i*img.getWidth()+j];
data[i*img.getWidth()+j]=data[img.getWidth()*(i+1)-(j+1)];
data[img.getWidth()*(i+1)-(j+1)]=buf;
}
resizedBitmap=Bitmap.createBitmap(data, img.getWidth(),
img.getHeight(), Bitmap.Config.ARGB_4444);;
return resizedBitmap;
case ROTATE_VER:
//创建镜像翻转
data=new int [img.getWidth()*img.getHeight()];
img.getPixels(data, 0, img.getWidth(), 0, 0, img.getWidth(),img.getHeight());
//交换数据
for(int i=0;ifor(int j=0;j{
buf=data[i*img.getWidth()+j];
data[i*img.getWidth()+j]=data[(img.getHeight()-i-1)*img.getWidth()+j];
data[(img.getHeight()-i-1)*img.getWidth()+j]=buf;
}
resizedBitmap=Bitmap.createBitmap(data, img.getWidth(),
img.getHeight(), Bitmap.Config.ARGB_4444);;
return resizedBitmap;
case ROTATE_90:
matrix.postRotate(90);
// recreate the new Bitmap
resizedBitmap = Bitmap.createBitmap(img, 0, 0,
width, height, matrix, true);
return resizedBitmap;
case ROTATE_180:
matrix.postRotate(180);
// recreate the new Bitmap
resizedBitmap = Bitmap.createBitmap(img, 0, 0,
width, height, matrix, true);
return resizedBitmap;
case ROTATE_270:
matrix.postRotate(270);
// recreate the new Bitmap
resizedBitmap = Bitmap.createBitmap(img, 0, 0,
width, height, matrix, true);
return resizedBitmap;
}
return resizedBitmap;
}
catch (Exception e)
{
return null;
}
}
13 drawRect
J2me:
Android:
public void drawRect(float left, float top, float right, float bottom,Paint paint)
14 声音处理
J2me:
Android:
创建:
MediaPlayer coverSound =MediaPlayer.create(Activity,R.raw.back);
coverSound.prepare();
播放:
coverSound.start();
暂停:
coverSound.pause();
声音设置:
AudioManager vc = (AudioManager)Activity.getSystemService(Context.AUDIO_SERVICE);
vc.adjustVolume(AudioManager.ADJUST_LOWER, 1);
关闭:
coverSound.stop();
coverSound.release();
15 中断处理
J2me:
Android:
public void onWindowFocusChanged(boolean visibility)
16 填充屏幕
J2me:
Android:
CanvasInstance.drawColor(int color)
l7 按键处理
J2me:
Android:
要使按键可以被响应,需要在构造函数中调用
this.setFocusable(true);
处理方法:
public boolean onKeyDown(int keyCode, KeyEvent msg)
public boolean onKeyUp(int keyCode, KeyEvent msg)
18 触摸屏处理
J2me:
Android:
public boolean onTouchEvent(MotionEvent me)
{
if(me.getAction()=
=MotionEvent.ACTION_DOWN)
。。。
else if(me.getAction()==MotionEvent.ACTION_UP)
。。。
return true;
}
19 资源文件的的存放位置及读取
J2me:
Android:
图片:
Res\\drawable:
声音:
Res\
aw
数据:
Asserts
InputStream is=ActivityInstance.getAssets().open(path + ".dat");
20 屏幕刷新,
J2me:
repaint()
Android:
postInvalidate();
21 颜色的使用
J2me:
Android:
PaintInstance.setColor(0xAARRGGBB);
22 数据保存和读取
J2me:
Android:
保存:
SharedPreferences settings = ActivityInstance.getSharedPreferences(String name,int mode);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("hasRec
