兩個(gè)小時(shí)精通Android開(kāi)發(fā)之界面篇_第1頁(yè)
兩個(gè)小時(shí)精通Android開(kāi)發(fā)之界面篇_第2頁(yè)
兩個(gè)小時(shí)精通Android開(kāi)發(fā)之界面篇_第3頁(yè)
兩個(gè)小時(shí)精通Android開(kāi)發(fā)之界面篇_第4頁(yè)
兩個(gè)小時(shí)精通Android開(kāi)發(fā)之界面篇_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論