版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、笔者最近需要移植一个J2ME的项目到Android平台上,所以抽空研究了一下Android平台的接口规范。 Android平台除了在一些接口上采用了和J2ME不一样的名称之外,基本的接口内容还是一样的,那么移植J2ME到Android平台最方便的方法就是利用Android平台的接口重写J2ME的接口,本着这个思路笔者写了一个Wrap包,利用这个Wrap包,基本上J2ME程序不用修改,只需要重新导入一下重写后的Graphics、Image等类,就可以无缝的运行在Android平台上,所以笔者题目中所说的“两个小时精通Android”的前提是先精通J2ME。 既然要重写J2ME下的这些接口,那么就
2、要先了解Android和J2ME平台到底有哪些不同,然后重写这部分不同的接口即可。 Ø Font类Android平台里不再提供J2ME下面的Font类,而是以Typeface代替,这为读者提供了更多的选择空间,因为Typeface是可以自定义的,但是为了无缝移植J2ME程序到Android平台上,笔者封装了以个类似于J2ME平台下的Font类,如下: public class Font public static final int STYLE_PLAIN = 0; public static final int STYLE_BOLD = 1; public static final
3、 int STYLE_ITALIC = 2; public static final int STYLE_UNDERLINED = 4; public static final int SIZE_SMALL = 22; public static final int SIZE_MEDIUM = 31; public static final int SIZE_LARGE = 40; public static final int FACE_SYSTEM = 0; private int face; private int style; private int size; private int
4、 baseline; private int width; private int height; public void setWidth(int width) this.width = size; public void setHeight(int height) this.height = height; public int getWidth() return size; public int getHeight() return height; private Typeface iTypeface = Typeface.DEFAULT; public Typeface getType
5、face() return iTypeface; public void setSize(int fontSize) size = fontSize; public int getSize() return size; private static final Font DEFAULT_FONT = new Font(null,22); public Font(Typeface aTypeface,int aSize) if(iTypeface != null) iTypeface = aTypeface; size = aSize; public static Font getFont(in
6、t fontSepcifier) switch(fontSepcifier) case SIZE_SMALL: return new Font(null,22); case SIZE_MEDIUM: return new Font(null,31); case SIZE_LARGE: return new Font(null,40); return DEFAULT_FONT; public static Font getDefaultFont() return DEFAULT_FONT; public static Font getFont(int face,int style,int siz
7、e) switch(style) case STYLE_PLAIN: return new Font(Typeface.defaultFromStyle(Typeface.NORMAL),size); case STYLE_BOLD: return new Font(Typeface.defaultFromStyle(Typeface.BOLD),size); case STYLE_ITALIC: return new Font(Typeface.defaultFromStyle(Typeface.ITALIC),size); return DEFAULT_FONT; public int c
8、harWidth(char arg) return size; public int stringWidth(String arg) return size*(arg.length(); Ø Graphics类Android平台下不再提供Graphics类进行“视图上下文”的控制,而是以Canvas、Paint联合进行控制,笔者封装的Graphics类如下: public class Graphics public static final int HCENTER = 1; public static final int VCENTER = 2; public static fina
9、l int LEFT = 4; public static final int RIGHT = 8; public static final int TOP = 16; public static final int BOTTOM = 32; public static final int BASELINE = 64; public static final int SOLID = 0; public static final int DOTTED = 1; private Bitmap bitmap; private Canvas canvas; private Paint paint; p
10、rivate Rect clip; private Font font; public Graphics(Bitmap bitmap) this.bitmap = bitmap; this.canvas = new Canvas(bitmap); this.paint = new Paint(); this.clip = canvas.getClipBounds(); public void setAlign(int align) if(LEFT = align |(Graphics.LEFT | Graphics.TOP) = align |(Graphics.LEFT | Graphics
11、.BOTTOM) = align) paint.setTextAlign(Align.LEFT); else if(HCENTER = align |(Graphics.HCENTER|Graphics.TOP) = align) paint.setTextAlign(Align.CENTER); else if(RIGHT = align |(Graphics.RIGHT | Graphics.TOP) = align) paint.setTextAlign(Align.RIGHT); public void fillRoundRect(int x,int y,int width,int h
12、eight,int arcWidth,int arcHeight) paint.setStyle(Style.FILL); canvas.drawRoundRect(new RectF(x,y,x+width,y+height), arcWidth, arcHeight, paint); public void drawRoundRect(int x,int y,int width,int height,int arcWidth,int arcHeight) paint.setStyle(Style.STROKE); canvas.drawRoundRect(new RectF(x,y,x+w
13、idth,y+height), arcWidth, arcHeight, paint); public void fillTriangle(int x1,int y1,int x2,int y2,int x3,int y3) paint.setStyle(Style.FILL); canvas.drawLine(x1, y1, x2, y2, paint); canvas.drawLine(x2, y2, x3, y3, paint); canvas.drawLine(x3, y3, x1, y1, paint); public void setFont(Font font) paint.se
14、tTypeface(font.getTypeface(); paint.setTextSize(font.getSize(); FontMetrics fontMetrics = paint.getFontMetrics(); float height = fontMetrics.bottom-fontMetrics.top; font.setHeight(int)height); public void fillArc(int x,int y,int width,int height,int startAngle,int arcAngle) paint.setStyle(Style.FILL
15、); canvas.drawArc(new RectF(x,y,width,height), startAngle, arcAngle, true, paint); public void drawArc(int x,int y,int width,int height,int startAngle,int arcAngle) paint.setStyle(Style.STROKE); canvas.drawArc(new RectF(x,y,width,height), startAngle, arcAngle, true, paint); public Font getFont() ret
16、urn font; public void setAntiAlias(boolean flag) paint.setAntiAlias(flag); public void setAlphaValue(int alpha) paint.setAlpha(alpha); public void setAlpha(float alpha) setAlphaValue(int) (255 * alpha); public void translate(int x,int y) canvas.translate(x,y); public void setColor(int rgb) paint.set
17、Color(rgb); public void setColor(int r,int g,int b) int argb = (0xff000000)+(r<<16)+(g<<8)+b; paint.setColor(argb); public void drawImage(Image img, int x, int y) canvas.drawBitmap(img.getBitmap(), x, y, paint); public void drawImage(Image img, int x, int y,int align) setAlign(align); dr
18、awImage(img, x, y); public void drawLine(int x1, int y1, int x2, int y2) if (x1 > x2) x1+; else x2+; if (y1 > y2) y1+; else y2+; canvas.drawLine(x1, y1, x2, y2, paint); public void drawRect(int x, int y, int width, int height) canvas.drawRect(x, y, x + width, y + height, paint); public void dr
19、awString(String str, int x, int y) canvas.drawText(str, x, y, paint); public void drawString(String str, int x, int y,int align) setAlign(align); canvas.drawText(str, x, y, paint); public void drawClear() paint.setColor(Color.BLACK); canvas.drawColor(Color.BLACK); public void fillRect(int x, int y,
20、int width, int height) canvas.drawRect(x, y, x + width, y + height, paint); public int getClipHeight() return clip.bottom - clip.top; public int getClipWidth() return clip.right - clip.left; public int getClipX() return clip.left; public int getClipY() return clip.top; public int getColor() return p
21、aint.getColor(); public void dispose() paint = null; canvas = null; public void clearRect(int x, int y, int width, int height) canvas.clipRect(x, y, x + width, y + height); canvas.drawARGB(0xff, 0xff, 0xff, 0xff); public void copyArea(int x, int y, int width, int height, int dx, int dy) if (x < 0
22、) width += x; x = 0; if (y < 0) height += y; y = 0; if (x + width > bitmap.getWidth() width = bitmap.getWidth() - x; if (y + height > bitmap.getHeight() height = bitmap.getHeight() - y; Bitmap copy = Bitmap.createBitmap(bitmap, x, y, width, height); canvas.drawBitmap(copy, x + dx, y + dy, n
23、ull); public void clipRect(int x, int y, int width, int height) canvas.clipRect(x, y, x + width, y + height); clip = canvas.getClipBounds(); public void setClip(int x, int y, int width, int height) if (x = clip.left && x + width = clip.right && y = clip.top && y + height = cl
24、ip.bottom) return; if (x < clip.left | x + width > clip.right | y < clip.top | y + height > clip.bottom) canvas.restore(); canvas.save(Canvas.CLIP_SAVE_FLAG); clip.left = x; clip.top = y; clip.right = x + width; clip.bottom = y + height; canvas.clipRect(clip); public void drawOval(int x, int y, int width, int height) canvas.drawOval(new RectF(x, y, x + width, y + height), paint); public void drawPolygon(int xpoints, int ypoints, int npoints) canvas.drawLine(xpointsnpoints - 1, ypointsnpoints - 1, xpoints0, ypoints0, paint); for (int i = 0; i < npoints
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025 高中信息技术数据与计算之数据在社交媒体用户信任网络分析中的应用课件
- 社区春季健康防护课件
- 农业遥感监测技术及应用
- 绿色农产品标准化生产与质量管控体系
- 2026年eVTOL应急救援场景任务规划与调配
- 2026年理财公司 消费金融公司 汽车金融公司纳入列举范围的法律适用
- 2026年智能监测防走失设备与陪伴机器人开发路径
- 2026年电网末端季节性过载地区储能应急保供方案
- 2026年海外仓员工绩效考核与计件工资设计方案
- 2026年热塑性淀粉TPS与淀粉基聚合物共混物改性技术
- 2026年销售精英招聘面试问题集
- 国家安全政治安全课件
- 击剑运动课件
- (2025年)政工师职称考试题库及答案
- 传媒行业编导岗位招聘考试试卷及答案
- 江苏护理历年单招题库及答案解析
- 2025年农村房屋租赁合同协议
- 2025年易性症测试题及答案
- DB51T 3062-2023 四川省高标准农田建设技术规范
- 安全员题库宝破解版及答案解析
- 《政务信息系统运行维护费用定额测算方法》
评论
0/150
提交评论