`
阿顺顺
  • 浏览: 8730 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android UI开发专题(一) 之界面设计

阅读更多
近期很多网友对Android用户界面的设计表示很感兴趣,对于Android UI开发自绘控件和游戏制作而言掌握好绘图基础是必不可少的。本次专题分10节来讲述,有关OpenGL ES相关的可能将放到以后再透露。本次主要涉及以下四个包的相关内容:

  android.content.res 资源类
android.graphics  底层图形类
android.view  显示类
android.widget  控件类

   一、android.content.res.Resources

   对于Android平台的资源类android.content.res.Resources可能很多网友比较陌生,一起来看看SDK上是怎么介绍的 吧,Contains classes for accessing application resources, such as raw asset files, colors, drawables, media or other other files in the package, plus important device configuration details (orientation, input types, etc.) that affect how the application may behave.平时用到的二进制源文件raw、颜色colors、图形drawables和多媒体文件media的相关资源均通过该类来管理。

  int  getColor(int id)  对应res/values/colors.xml
Drawable  getDrawable(int id)  对应res/drawable/ 
XmlResourceParser  getLayout(int id)  对应res/layout/
String  getString(int id) 和CharSequence  getText(int id)   对应res/values/strings.xml
InputStream  openRawResource(int id)  对应res/raw/
void parseBundleExtra (String tagName, AttributeSet attrs, Bundle outBundle) 对应res/xml/

  String[]  getStringArray(int id)  res/values/arrays.xml
float  getDimension(int id)  res/values/dimens.xml

  二、android.graphics.Bitmap

  作为位图操作类,Bitmap提供了很多实用的方法,常用的我们总结如下:
boolean  compress(Bitmap.CompressFormat format, int quality, OutputStream stream) 压缩一个Bitmap对象根据相关的编码、画质保存到一个OutputStream中。其中第一个压缩格式目前有JPG和PNG
void  copyPixelsFromBuffer(Buffer src) 从一个Buffer缓冲区复制位图像素
void  copyPixelsToBuffer(Buffer dst)  将当前位图像素内容复制到一个Buffer缓冲区

  我们看到创建位图对象createBitmap包含了6种方法在目前的Android 2.1 SDK中,当然他们使用的是API Level均为1,所以说从Android 1.0 SDK开始就支持了,所以大家可以放心使用。

static Bitmap  createBitmap(Bitmap src)
static Bitmap  createBitmap(int[] colors, int width, int height, Bitmap.Config config)
static Bitmap  createBitmap(int[] colors, int offset, int stride, int width, int height, Bitmap.Config config)
static Bitmap  createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)
static Bitmap  createBitmap(int width, int height, Bitmap.Config config)
static Bitmap  createBitmap(Bitmap source, int x, int y, int width, int height)
static Bitmap  createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter)  //创建一个可以缩放的位图对象

 final int  getHeight()  获取高度
final int  getWidth()   获取宽度
final boolean  hasAlpha()   是否有透明通道
void  setPixel(int x, int y, int color)   设置某像素的颜色
int  getPixel(int x, int y)  获取某像素的颜色,android开发网提示这里返回的int型是color的定义

 三、android.graphics.BitmapFactory

  作为Bitmap对象的I/O类,BitmapFactory类提供了丰富的构造Bitmap对象的方法,比如从一个字节数组、文件系统、资源ID、以及 输入流中来创建一个Bitmap对象,下面本类的全部成员,除了decodeFileDescriptor外其他的重载方法都很常用。

static Bitmap  decodeByteArray(byte[] data, int offset, int length) //从字节数组创建

static Bitmap  decodeByteArray(byte[] data, int offset, int length, BitmapFactory.Options opts)

static Bitmap  decodeFile(String pathName, BitmapFactory.Options opts) //从文件创建,路径要写全

static Bitmap  decodeFile(String pathName)

static Bitmap  decodeFileDescriptor(FileDescriptor fd, Rect outPadding, BitmapFactory.Options opts)  //从输入流句柄创建

static Bitmap  decodeFileDescriptor(FileDescriptor fd)

static Bitmap  decodeResource(Resources res, int id)  //从Android的APK文件资源中创建,android123提示是从/res/的drawable中

static Bitmap  decodeResource(Resources res, int id, BitmapFactory.Options opts)

static Bitmap  decodeResourceStream(Resources res, TypedValue value, InputStream is, Rect pad, BitmapFactory.Options opts)

static Bitmap  decodeStream(InputStream is)  //从一个输入流中创建

static Bitmap  decodeStream(InputStream is, Rect outPadding, BitmapFactory.Options opts)

 四、android.graphics.Canvas

 从J2ME MIDLET时我们就知道Java提供了Canvas类,而目前在Android平台中,它主要任务为管理绘制过程,The Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect, Path, text, Bitmap), and a paint (to describe the colors and styles for the drawing).

 该类主要提供了三种构造方法,分别为构造一个空的Canvas、从Bitmap中构造和从GL对象中创建,如下

Canvas() 
Canvas(Bitmap bitmap) 
Canvas(GL gl)

 同时Canvas类的一些字段保存着重要的绘制方法定义,比如Canvas.HAS_ALPHA_LAYER_SAVE_FLAG 保存时需要alpha层,对于Canvas类提供的方法很多,每个都很重要,下面我们一一作介绍

boolean  clipPath(Path path)
boolean  clipPath(Path path, Region.Op op)
boolean  clipRect(float left, float top, float right, float bottom)
boolean  clipRect(Rect rect)
boolean  clipRect(float left, float top, float right, float bottom, Region.Op op)
boolean  clipRect(Rect rect, Region.Op op)
boolean  clipRect(RectF rect)
boolean  clipRect(RectF rect, Region.Op op)
boolean  clipRect(int left, int top, int right, int bottom)
boolean  clipRegion(Region region, Region.Op op)
boolean  clipRegion(Region region)

void  concat(Matrix matrix)

void  drawARGB(int a, int r, int g, int b)
void  drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)

void  drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)
void  drawBitmap(int[] colors, int offset, int stride, float x, float y, int width, int height, boolean hasAlpha, Paint paint)
void  drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)
void  drawBitmap(Bitmap bitmap, float left, float top, Paint paint)
void  drawBitmap(int[] colors, int offset, int stride, int x, int y, int width, int height, boolean hasAlpha, Paint paint)
void  drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)
void  drawBitmapMesh(Bitmap bitmap, int meshWidth, int meshHeight, float[] verts, int vertOffset, int[] colors, int colorOffset, Paint paint)

void  drawCircle(float cx, float cy, float radius, Paint paint)
void  drawColor(int color)
void  drawColor(int color, PorterDuff.Mode mode)
void  drawLine(float startX, float startY, float stopX, float stopY, Paint paint)
void  drawLines(float[] pts, Paint paint) 
void  drawLines(float[] pts, int offset, int count, Paint paint)
void  drawOval(RectF oval, Paint paint)
void  drawPaint(Paint paint)
void  drawPath(Path path, Paint paint)

void  drawPicture(Picture picture, RectF dst)
void  drawPicture(Picture picture, Rect dst)
void  drawPicture(Picture picture)
void  drawPoint(float x, float y, Paint paint)
void  drawPoints(float[] pts, int offset, int count, Paint paint)
void  drawPoints(float[] pts, Paint paint)
void  drawPosText(char[] text, int index, int count, float[] pos, Paint paint)
void  drawPosText(String text, float[] pos, Paint paint)
void  drawRGB(int r, int g, int b)
void  drawRect(RectF rect, Paint paint)
void  drawRect(float left, float top, float right, float bottom, Paint paint)
void  drawRect(Rect r, Paint paint)
void  drawRoundRect(RectF rect, float rx, float ry, Paint paint)
void  drawText(String text, int start, int end, float x, float y, Paint paint)
void  drawText(char[] text, int index, int count, float x, float y, Paint paint)
void  drawText(String text, float x, float y, Paint paint)
void  drawText(CharSequence text, int start, int end, float x, float y, Paint paint)
void  drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint)
void  drawTextOnPath(char[] text, int index, int count, Path path, float hOffset, float vOffset, Paint paint)
void  drawVertices(Canvas.VertexMode mode, int vertexCount, float[] verts, int vertOffset, float[] texs, int texOffset, int[] colors, int colorOffset, short[] indices, int indexOffset, int indexCount, Paint paint)
static void  freeGlCaches()
boolean  getClipBounds(Rect bounds)
final Rect  getClipBounds()
int  getDensity() 
DrawFilter  getDrawFilter() 
GL  getGL()
int  getHeight()
void  getMatrix(Matrix ctm)
final Matrix  getMatrix()
int  getSaveCount()
int  getWidth()
boolean  isOpaque()
boolean  quickReject(Path path, Canvas.EdgeType type)
boolean  quickReject(float left, float top, float right, float bottom, Canvas.EdgeType type)
boolean  quickReject(RectF rect, Canvas.EdgeType type)
void  restore()
void  restoreToCount(int saveCount)
final void  rotate(float degrees, float px, float py)
void  rotate(float degrees)
int  save()
int  save(int saveFlags)
int  saveLayer(float left, float top, float right, float bottom, Paint paint, int saveFlags)
int  saveLayer(RectF bounds, Paint paint, int saveFlags)
int  saveLayerAlpha(float left, float top, float right, float bottom, int alpha, int saveFlags)
int  saveLayerAlpha(RectF bounds, int alpha, int saveFlags)
final void  scale(float sx, float sy, float px, float py)
void  scale(float sx, float sy)
void  setBitmap(Bitmap bitmap)
void  setDensity(int density) 
void  setDrawFilter(DrawFilter filter) 
void  setMatrix(Matrix matrix)
void  setViewport(int width, int height)
void  skew(float sx, float sy)
void  translate(float dx, float dy)


五、android.graphics.Color

 有关Android平台上表示颜色的方法有很多种,Color提供了常规主要颜色的定义比如Color.BLACK和Color.GREEN等等,我们平时创建时主要使用以下静态方法

static int argb(int alpha, int red, int green, int blue)  构造一个包含透明对象的颜色
static int rgb(int red, int green, int blue)  构造一个标准的颜色对象
static int parseColor(String colorString)  解析一种颜色字符串的值,比如传入Color.BLACK

 本类返回的均为一个整形类似  绿色为0xff00ff00,红色为0xffff0000。我们将这个DWORD型看做AARRGGBB,AA代表Aphla透明色,后面的就不难理解,每个分成WORD整好为0-255。

 

From:http://hi.baidu.com/lfcaolibin/blog/item/ea08fce842338634b80e2d3c.html

 

 

分享到:
评论

相关推荐

    Android UI开发专题之界面设计

    ### Android UI开发专题之界面设计 #### 一、概述与背景 随着移动互联网技术的飞速发展,用户体验(User Experience, UX)成为了决定一款应用能否成功的关键因素之一。特别是在Android平台上,良好的用户界面...

    Android UI开发专题

    本次Android UI开发专题旨在深入探讨Android平台上UI设计的关键技术和实践方法。 #### 二、资源管理:`android.content.res.Resources` **1. 概述** `android.content.res.Resources`类在Android开发中扮演着...

    Android UI开发专题(一) 之界面设计.docx

    在Android UI开发中,了解和熟练掌握界面设计是至关重要的,特别是对于自定义控件和游戏制作来说。本文将从Android的四大核心包——`android.content.res`、`android.graphics`、`android.view`和`android.widget`...

    Android_UI开发专题(一)_之界面设计

    本文档详细介绍了Android UI开发中的关键知识点,特别是与界面设计密切相关的`android.content.res.Resources`和`android.graphics.Bitmap`两个类。通过学习这些基础知识,开发者可以更好地理解和掌握如何在Android...

    AndroidUI开发专题(一)之界面设计[参照].pdf

    在Android UI开发中,界面设计是一项至关重要的任务,它直接影响到应用的用户体验和视觉效果。本文将深入探讨Android UI开发的界面设计,主要关注四个关键包:`android.content.res`、`android.graphics`、`android....

    Android_UI_开发专题(一)_之界面设计

    本专题将深入探讨Android UI开发中的关键知识点,特别是界面设计的基础和自定义控件的实现。 首先,我们要了解的是`android.content.res.Resources`包。这个包提供的类主要用于访问应用的资源,包括颜色、图形、...

    android UI开发专题

    ### Android UI开发专题:深入解析资源管理与图形处理 在Android开发中,用户界面(UI)设计占据了极其重要的地位,良好的UI不仅能够提升用户体验,还能增强应用的吸引力。本专题聚焦于Android界面设计的关键方面,...

    android ui开发专题

    ### Android UI 开发专题知识点详解 #### 一、概述 Android UI 开发是移动应用开发中的重要组成部分,它直接影响到用户的交互体验与视觉感受。在本篇内容中,我们将详细介绍 Android UI 开发的基础知识,包括核心...

    AndroidUI开发专题(一)(二)(三)[参照].pdf

    Android UI开发专题主要涵盖界面设计、自绘控件和游戏制作等核心概念,其中涉及到多个关键包,包括`android.content.res`、`android.graphics`、`android.view`和`android.widget`。这些包提供了Android UI开发的...

    android UI 界面设计专题

    本专题将深入探讨Android UI开发中的四个核心包:`android.content.res`、`android.graphics`、`android.view`和`android.widget`。下面我们将逐一解析这些包的核心知识点。 首先,`android.content.res`包提供了...

    Android_UI开发专题.doc

    ### Android UI开发专题知识点概述 #### 一、Android UI开发概览 Android用户界面(UI)设计是移动应用开发中的一个重要组成部分。随着智能手机和平板电脑的普及,越来越多的开发者和爱好者开始关注如何创建美观且...

    Android_UI开发专题

    总的来说,Android UI开发是一个涉及多方面知识的领域,包括资源管理、图形处理、控件使用、自定义视图、动画以及布局适配等。通过深入学习这些内容,开发者可以创建出既美观又功能强大的移动应用界面。

    AndroidUI开发专题之绘图基础.pdf

    在Android UI开发中,绘图基础是至关重要的,它涉及到如何在屏幕上绘制各种元素和图形。今天我们将深入探讨几个核心的绘图类:Matrix、NinePatch、Paint、Rect以及Region。 1. **Matrix** - 矩阵在图形变换中扮演着...

    Android UI开发专题(五) Bitmap和Canvas实例

    在Android UI开发中,Bitmap和Canvas是两个非常重要的概念,它们是实现图形和图像处理的基础。Bitmap类代表了位图图像,而Canvas则用于在屏幕上画图,包括图像、文字和其他图形元素。在这个实例中,我们将深入理解...

    Android UI开发专题(四) View自绘控件

    在Android UI开发中,自定义View控件是创建独特、美观界面的重要手段。当系统提供的标准控件不能满足设计需求时,开发者需要深入理解View的工作原理,并通过自绘来实现定制化界面。本文将详细讲解如何自定义View,并...

    Android_UI开发专题(二)_之绘图基础

    这些类在Android UI开发中扮演着核心角色,它们结合使用可以实现复杂的自定义界面设计和动态图形效果。熟练掌握这些绘图基础,将极大地提升开发者构建高效、美观且功能丰富的Android应用的能力。

Global site tag (gtag.js) - Google Analytics