将JavaME移植到Android

时间:2011-02-10 12:04:55

标签: java android java-me j2ab

我正在尝试将应用程序从javaME移植到Android。 我有一个使用图形类的部分。

我使用J2ME Android桥(http://www.assembla.com/wiki/show/j2ab/Converting_From_J2ME/8)来访问Graphics类。我仍然缺少一些方法,如:

  • getStrokeStyle()
  • setStrokeStyle()
  • drawRGB()
  • fillTriangle()

另外我如何使用Vector?

示例:Vector polylines = g.getPolylines();

2 个答案:

答案 0 :(得分:1)

您可以通过覆盖布局中的onDraw方法来绘制形状 例如

protected void onDraw(Canvas canvas) {
    canvas.drawCircle(cx, cy, radius, paint)
} 

答案 1 :(得分:1)

我在公司创建了一个自动J2ME-> Android转换器。将J2ME图形(javax.microedition.ldcui.Graphics)映射到Android图形(android.graphics.Canvas)非常简单。

setStrokeStyle - 更改Paint实例的路径效果

PathEffect EFFECT_DOTTED_STROKE = new DashPathEffect(new float[] {2, 4}, 4);

if (style == SOLID) {
    strokePaint.setPathEffect(null);
}
else {
    strokePaint.setPathEffect(EFFECT_DOTTED_STROKE);
}

drawRGB - 直接调用Canvas方法

public void drawRGB(int[] rgbData, int offset, int scanLength, int x, int y, int width, int height, boolean processAlpha) {
    canvas.drawBitmap(rgbData, offset, width, x + translateX, y + translateY, width, height, processAlpha, null);
}

fillTriangle - 使用路径

public void fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3) {
    Path path = new Path();
    path.moveTo(x1 + translateX, y1 + translateY);
    path.lineTo(x2 + translateX, y2 + translateY);
    path.lineTo(x3 + translateX, y3 + translateY);
    path.close();

    strokePaint.setStyle(Paint.Style.FILL);
    canvas.drawPath(path, strokePaint);
} 

通过Vector你的意思是java.util.Vector? Android API包含完全相同的类...