界面设计分析,ui界面设计技巧

2020-10-12 阅读 汪梅梅整理

内容简介:ui界面设计做什么最近,很多网友对Android用户界面的设计非常感兴趣。掌握Android用户界面的绘制基础是开发自绘制控件和游戏制作的必要条件。本主题分为10个部分,相关的Oui界面设计...

近期很多网友对Android用户界面的设计表示很感兴趣,对于AndroidUI开发自绘控件和游戏制作而言掌握好绘图基础是必不可少的。

本次专题分10节来讲述,有关OpenGLES相关的可能将放到以后再透露。

本次主要涉及以下四个包的相关内容:

android.content.res资源类

android.graphics底层图形类

android.view显示类

android.widget控件类

一、android.content.res.Resources

对于Android平台的资源类android.content.res.Resources可能很多网友比较陌生,一起来看看SDK上是怎么介绍的吧,Containsclassesforaccessingapplicationresources,suchasrawassetfiles,colors,drawables,mediaorotherotherfilesinthepackage,plusimportantdeviceconfigurationdetails(orientation,inputtypes,etc.)thataffecthowtheapplicationmaybehave.平时用到的二进制源文件raw、颜色colors、图形drawables和多媒体文件media的相关资源均通过该类来管理。

intgetColor(intid)对应res/values/colors.xml

DrawablegetDrawable(intid)对应res/drawable/

XmlResourceParsergetLayout(intid)对应res/layout/

StringgetString(intid)和CharSequencegetText(intid)对应res/values/strings.xml

InputStreamopenRawResource(intid)对应res/raw/

voidparseBundleExtra(StringtagName,AttributeSetattrs,BundleoutBundle)对应res/xml/

String[]getStringArray(intid)res/values/arrays.xml

floatgetDimension(intid)res/values/dimens.xml

二、android.graphics.Bitmap

作为位图操作类,Bitmap提供了很多实用的方法,常用的我们总结如下:

booleancompress(Bitmap.CompressFormatformat,intquality,OutputStreamstream)压缩一个Bitmap对象根据相关的编码、画质保存到一个OutputStream中。

其中第一个压缩格式目前有JPG和PNG

voidcopyPixelsFromBuffer(Buffersrc)从一个Buffer缓冲区复制位图像素

voidcopyPixelsToBuffer(Bufferdst)将当前位图像素内容复制到一个Buffer缓冲区

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

staticBitmapcreateBitmap(Bitmapsrc)

staticBitmapcreateBitmap(int[]colors,intwidth,intheight,Bitmap.Configconfig)

staticBitmapcreateBitmap(int[]colors,intoffset,intstride,intwidth,intheight,Bitmap.Configconfig)

staticBitmapcreateBitmap(Bitmapsource,intx,inty,intwidth,intheight,Matrixm,booleanfilter)

staticBitmapcreateBitmap(intwidth,intheight,Bitmap.Configconfig)

staticBitmapcreateBitmap(Bitmapsource,intx,inty,intwidth,intheight)

staticBitmapcreateScaledBitmap(Bitmapsrc,intdstWidth,intdstHeight,booleanfilter)//创建一个可以缩放的位图对象

finalintgetHeight()获取高度

finalintgetWidth()获取宽度

finalbooleanhasAlpha()是否有透明通道

voidsetPixel(intx,inty,intcolor)设置某像素的颜色

intgetPixel(intx,inty)获取某像素的颜色,android开发网提示这里返回的int型是color的定义

三、android.graphics.BitmapFactory

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

staticBitmapdecodeByteArray(byte[]data,intoffset,intlength)//从字节数组创建

staticBitmapdecodeByteArray(byte[]data,intoffset,intlength,BitmapFactory.Optionsopts)

staticBitmapdecodeFile(StringpathName,BitmapFactory.Optionsopts)//从文件创建,路径要写全

staticBitmapdecodeFile(StringpathName)

staticBitmapdecodeFileDescriptor(FileDescriptorfd,RectoutPadding,BitmapFactory.Optionsopts)//从输入流句柄创建

staticBitmapdecodeFileDescriptor(FileDescriptorfd)

staticBitmapdecodeResource(Resourcesres,intid)//从Android的APK文件资源中创建,android123提示是从/res/的drawable中

staticBitmapdecodeResource(Resourcesres,intid,BitmapFactory.Optionsopts)

staticBitmapdecodeResourceStream(Resourcesres,TypedValuevalue,InputStreamis,Rectpad,BitmapFactory.Optionsopts)

staticBitmapdecodeStream(InputStreamis)//从一个输入流中创建

staticBitmapdecodeStream(InputStreamis,RectoutPadding,BitmapFactory.Optionsopts)

四、android.graphics.Canvas

从J2MEMIDLET时我们就知道Java提供了Canvas类,而目前在Android平台中,它主要任务为管理绘制过程,TheCanvasclassholdsthedrawcalls.Todrawsomething,youneed4basiccomponents:ABitmaptoholdthepixels,aCanvastohostthedrawcalls(writingintothebitmap),adrawingprimitive(e.g.Rect,Path,text,Bitmap),andapaint(todescribethecolorsandstylesforthedrawing).

作者给您推荐的内容
  1. 许多小伙伴在套用PPT模板的时候,都应该遇到过自动播放的时候,可是应该如何取消自动播放呢?今天,小编就来教一教大家,希望对大家有帮助01、首先,打开一个ppt文件02、点击“幻灯片放映”...

  2. html锚点代码步骤1:插入链接1。用dreamwave打开网站,将光标放在S的前面。这将是你第一次点击链接2后跳转的地方。选择“插入命名锚定”,或单击插入栏3上的命名图标。在html锚点跳转...

  3. 01、首先,选择点击打开你的手机qq,并且登录自己的账号。02、在好友列表中点击选择一个你想要查看他历史签名的好友。03...

  4. PS羽化一。打开闪存软件2。创建新文档,参数默认值3。将两张图片导入库4。从默认层上的库中拖动图片对齐场景作为背景锁定层5。添加一个图层,从库中拖动一个图片对齐场景模糊p...

  5. 平时我们在使用QQ账号的时候,使用了一些第三方插件或者出现一些违规行为,QQ安全盾会自动检测出暂时冻结QQ账号,要想继续使用的话,必须通过验证后才能正常使用。01、打开QQ点击登录时弹出...

  6. 数据库在生活中的实例1、 第一个范式(1NF)没有重复的列。所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项。同一列中不能有多个值,即实体中的属性不能有多个...

  7. 浦发银行信用卡积分怎么兑换?下面就这个话题跟大家一起来说一下吧01、首先你要做的就是找到浦发银行的官方网站,然后点击进入如下图02、然后在上面找到一个积分兑换,然后点击进入,如下...

  8. 装系统磁盘分区只有U盘近日,有网友遇到只显示一个U盘分区的问题。他特地来问windows 7的小编辑,怎么只用一个U盘分区。如何解决在两个分区中显示一个U盘分区的问题?接下来,小编...

  9. 关于王者荣耀如何在钻石夺宝中大概率获得永久英雄,抽取技巧的分享与实操。01、打开王者荣耀02、进入商城―夺宝界面03、一般来说再十次夺宝后进行单抽会有一定概率获得英雄,但我获得英雄...

  10. 感动一个男生的套路我相信银幕前有很多小姐妹都在担心男友的生日。他们必须认真考虑该送什么礼物。你男朋友的生日礼物是什么?现在,超人软件编辑会给你一些建议,告诉你什么...