版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、筆者最近需要移植一個(gè)J2ME的項(xiàng)目到Android平臺(tái)上,所以抽空研究了一下Android平臺(tái)的接口規(guī)范。 Android平臺(tái)除了在一些接口上采用了和J2ME不一樣的名稱之外,基本的接口內(nèi)容還是一樣的,那么移植J2ME到Android平臺(tái)最方便的方法就是利用Android平臺(tái)的接口重寫J2ME的接口,本著這個(gè)思路筆者寫了一個(gè)Wrap包,利用這個(gè)Wrap包,基本上J2ME程序不用修改,只需要重新導(dǎo)入一下重寫后的Graphics、Image等類,就可以無(wú)縫的運(yùn)行在Android平臺(tái)上,所以筆者題目中所說(shuō)的“兩個(gè)小時(shí)精通Android”的前提是先精通J2ME。 既然要重寫J2ME下的這些接口,那么就
2、要先了解Android和J2ME平臺(tái)到底有哪些不同,然后重寫這部分不同的接口即可。 Font類Android平臺(tái)里不再提供J2ME下面的Font類,而是以Typeface代替,這為讀者提供了更多的選擇空間,因?yàn)門ypeface是可以自定義的,但是為了無(wú)縫移植J2ME程序到Android平臺(tái)上,筆者封裝了以個(gè)類似于J2ME平臺(tái)下的Font類,如下: import android.graphics.Typeface; public class Font public static final int STYLE_PLAIN = 0; public static final int STYLE_BO
3、LD = 1; public static final 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; pr
4、ivate int size; private int 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.DEFAU
5、LT; public Typeface getTypeface() 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; pu
6、blic static Font getFont(int 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
7、(int face,int style,int size) 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
8、 DEFAULT_FONT; public int charWidth(char arg) return size; public int stringWidth(String arg) return size*(arg.length(); Graphics類Android平臺(tái)下不再提供Graphics類進(jìn)行“視圖上下文”的控制,而是以Canvas、Paint聯(lián)合進(jìn)行控制,筆者封裝的Graphics類如下: import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;im
9、port android.graphics.Paint;import android.graphics.Rect;import android.graphics.RectF;import android.graphics.Paint.Align;import android.graphics.Paint.FontMetrics;import android.graphics.Paint.Style; public class Graphics public static final int HCENTER = 1; public static final int VCENTER = 2; pu
10、blic static final 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; privat
11、e Paint paint; private Rect clip; private Font font; public Graphics(Bitmap bitmap) this.bitmap = bitmap; this.canvas = new Canvas(bitmap); this.canvas.clipRect(0, 0, bitmap.getWidth(), bitmap.getHeight(); this.canvas.save(Canvas.CLIP_SAVE_FLAG); this.paint = new Paint(); this.clip = canvas.getClipB
12、ounds(); public void setAlign(int align) if(LEFT = align |(Graphics.LEFT | Graphics.TOP) = align |(Graphics.LEFT | Graphics.BOTTOM) = align) paint.setTextAlign(Align.LEFT); else if(HCENTER = align |(Graphics.HCENTER|Graphics.TOP) = align) paint.setTextAlign(Align.CENTER); else if(RIGHT = align |(Gra
13、phics.RIGHT | Graphics.TOP) = align) paint.setTextAlign(Align.RIGHT); public void fillRoundRect(int x,int y,int width,int height,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,
14、int y,int width,int height,int arcWidth,int arcHeight) paint.setStyle(Style.STROKE); canvas.drawRoundRect(new RectF(x,y,x+width,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, pain
15、t); canvas.drawLine(x2, y2, x3, y3, paint); canvas.drawLine(x3, y3, x1, y1, paint); public void setFont(Font font) paint.setTypeface(font.getTypeface(); paint.setTextSize(font.getSize(); FontMetrics fontMetrics = paint.getFontMetrics(); float height = fontMetrics.bottom-fontMetrics.top; font.setHeig
16、ht(int)height); public void fillArc(int x,int y,int width,int height,int startAngle,int arcAngle) paint.setStyle(Style.FILL); 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.setSty
17、le(Style.STROKE); canvas.drawArc(new RectF(x,y,width,height), startAngle, arcAngle, true, paint); public Font getFont() return font; public void setAntiAlias(boolean flag) paint.setAntiAlias(flag); public void setAlphaValue(int alpha) paint.setAlpha(alpha); public void setAlpha(float alpha) setAlpha
18、Value(int) (255 * alpha); public void translate(int x,int y) canvas.translate(x,y); public void setColor(int rgb) paint.setColor(rgb); public void setColor(int r,int g,int b) int argb = (0xff)+(r16)+(g x2) x1+; else x2+; if (y1 y2) y1+; else y2+; canvas.drawLine(x1, y1, x2, y2, paint); public void d
19、rawRect(int x, int y, int width, int height) paint.setStyle(Paint.Style.STROKE); canvas.drawRect(x, y, x + width, y + height, paint); public void drawString(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
20、.drawText(str, x, y, paint); public void drawClear() paint.setColor(Color.BLACK); canvas.drawColor(Color.BLACK); public void fillRect(int x, int y, int width, int height) paint.setStyle(Paint.Style.FILL); canvas.drawRect(x, y, x + width, y + height, paint); public int getClipHeight() return clip.bot
21、tom - 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 paint.getColor(); public void dispose() paint = null; canvas = null; public void clearRect(int x, int y, int width, int
22、 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) width += x; x = 0; if (y bitmap.getWidth() width = bitmap.getWidth() - x; if (y + height bitmap.getHeight() height = bitm
23、ap.getHeight() - y; Bitmap copy = Bitmap.createBitmap(bitmap, x, y, width, height); canvas.drawBitmap(copy, x + dx, y + dy, null); 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,
24、int width, int height) if (x = clip.left & x + width = clip.right & y = clip.top & y + height = clip.bottom) return; if (x clip.right | y 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(
25、clip); public void drawOval(int x, int y, int width, int height) paint.setStyle(Paint.Style.STROKE); 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; i+) canvas.drawLine(xpointsi, ypointsi, xpointsi + 1, ypointsi + 1, paint); public Canvas getGraphics() return canvas; public Paint getPaint() return paint
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- (完整版)生理學(xué)試題及答案400題
- 郵政招聘考試真題及答案
- vivo秋招試題及答案
- 單體電壓技師考試題庫(kù)及答案
- 車子駕駛證考試題庫(kù)及答案
- 中共臺(tái)州市路橋區(qū)委全面深化改革委員會(huì)辦公室關(guān)于公開(kāi)選聘工作人員1人參考題庫(kù)必考題
- 中國(guó)金融出版社有限公司2026校園招聘4人考試備考題庫(kù)附答案
- 公主嶺市公安局2025年招聘警務(wù)輔助人員(150人)考試備考題庫(kù)必考題
- 南充市司法局2025年下半年公開(kāi)遴選公務(wù)員(參公人員)公 告(2人)備考題庫(kù)必考題
- 吉水縣園區(qū)開(kāi)發(fā)建設(shè)有限公司及下屬子公司2026年第一批面向社會(huì)公開(kāi)招聘?jìng)淇碱}庫(kù)附答案
- 2026年浙江高考語(yǔ)文真題試卷+答案
- 2025 年大學(xué)人工智能(AI 應(yīng)用)期中測(cè)試卷
- 《市場(chǎng)營(yíng)銷(第四版)》中職完整全套教學(xué)課件
- (正式版)DB61∕T 2121-2025 《風(fēng)力發(fā)電場(chǎng)集電線路設(shè)計(jì)規(guī)范》
- 疑難病例討論制度落實(shí)常見(jiàn)問(wèn)題與改進(jìn)建議
- 創(chuàng)傷性脾破裂的護(hù)理
- 蓬深102井鉆井工程(重新報(bào)批)項(xiàng)目環(huán)境影響報(bào)告表
- 大模型金融領(lǐng)域可信應(yīng)用參考框架
- (新教材)2025年人教版七年級(jí)上冊(cè)歷史期末復(fù)習(xí)常考知識(shí)點(diǎn)梳理復(fù)習(xí)提綱(教師版)
- 中國(guó)全色盲診療專家共識(shí)2026
- 中國(guó)地質(zhì)大學(xué)武漢本科畢業(yè)論文格式
評(píng)論
0/150
提交評(píng)論