有米手机应用广告(优蜜信息科技)画图指南试阅:……用通俗的一点的话理解就是:动画的进度使用Interpolator控制。Interpolator定义了动画的变化速度,可以实现匀速、正加速、负加速、无规则变加速等。Interpolator是基类,封装了所有Interpolator的共同方法,它只有一个方法,即getInterpolation(floatinput),该方法mapsapointonthetimelinetoamultipliertobeappliedtothetransformationsofananimation。Android提供了几个Interpolator子类,实现了不同的速度曲线,如下:对于LinearInterpolator,变化率是个常数,即f(x)=x.publicfloatgetInterpolation(floatinput){returninput;}Interpolator其他的几个子类,也都是按照特定的算法,实现了对变化率。还可以定义自己的Interpolator子类,实现抛物线、自由落体等物理效果。……有米手机应用广告(优蜜信息科技)正文:目录(一)类的简介(二)Bitmap(三)Drawable(四)Animation(上)(四)Animation(中)(四)Animation(下)(五)PaintAndroid画图学习总结(一)类的简介学习Android有一段时间了,看完了AndroidSDK中的大部分文档,但是始终感觉自己还缺少很多,后来发现,AndroidSDK中只是介绍了Google自己开发的那一部分如何使用,Android中引用至Java的部分如何使用却没有说明。当然这也不是Google的职责,但是这对我们C++程序员来说的确是缺少了很多,在这里我们将对Google“缺少的部分”并结合AndroidSDK中Reference说明来详细介绍,并不断的补充完善。首先,如何获取res中的资源数据包package:android.content.res主要类:ResourcesAndroidSDK中的简介:Classforaccessinganapplication’sresources.Classforaccessinganapplication’sresources.Thissitsontopoftheassetmanageroftheapplication(accessiblethroughgetAssets())andprovidesahigher-levelAPIforgettingtypeddatafromtheassets.其主要接口按照功能,划分为以下三部分:getXXXX()例如:intgetColor(intid)DrawablegetDrawable(intid)StringgetString(intid)直接获取res中存放的资源InputStreamopenRawResource(intid)获取资源的数据流,读取资源数据voidparseBundleExtras(XmlResourceParserparser,BundleoutBundle)从XML文件中获取数据Resource为每种资源提供了相应的接口来获取这种资源,除了可以直接获取资源外,还额外提供了以数据流的方式获取资源,这在以后的应用程序开发中会经常使用,那么如何获取Resources了,如下:Resourcesr=this.getContext().getResources();有米手机应用广告(优蜜信息科技)其次,如何获取资源中的画图对象数据包package:android.graphics.drawable主要类:DrawableAndroidSDK中的简介:ADrawableisageneralabstractionfor“somethingthatcanbedrawn.”MostoftenyouwilldealwithDrawableasthetypeofresourceretrievedfordrawingthingstothescreen;theDrawableclassprovidesageneric看了以上简介,发现Drawable是个virtualclass,具体如何画图,需要具体分析Drawable的子类,例如:BitmapDrawableAndroidSDK中的简介:ADrawablethatwrapsabitmapandcanbetiled,stretched,oraligned.YoucancreateaBitmapDrawablefromafilepath,aninputstream,throughXMLinflation,orfromaBitmapobject.ItcanbedefinedinanXMLfilewiththebitmapelement.其主要接口如下:BitmapDrawable()BitmapDrawable(Bitmapbitmap)BitmapDrawable(Stringfilepath)BitmapDrawable(InputStreamis)voiddraw(Canvascanvas)Drawinitsbounds(setviasetBounds)respectingoptionaleffectssuchasalpha(setviasetAlpha)andcolorfilter(setviasetColorFilter).finalBitmapgetBitmap()finalPaintgetPaint()Drawable是个抽象类,在BitmapDrawable中我们就看到位图的具体操作,在仔细看下BitmapDrawable的构造函数,我们就会发现与Resource中的openRawResource()接口是相对应的,就可以通过以下方法来获取位图:Resourcesr=this.getContext().getResources();Inputstreamis=r.openRawResource(R.drawable.my_background_image);BitmapDrawablebmpDraw=newBitmapDrawable(is);Bitmapbmp=bmpDraw.getBitmap();关于Drawable深入的学习与理解,请阅读Android画图学习总结(三)——Drawable然后,看几个常用的辅助类1.Paint数据包package:android.graphicsAndroidSDK中的简介:ThePaintclassholdsthestyleandcolorinformationabouthowtodrawgeometries,textandbitmaps.主要就是定义:画刷的样式,画笔的大小/颜色等。2.Typeface数据包package:android.graphicsAndroidSDK中的简介:TheTypefaceclassspecifiesthetypefaceandintrinsicstyleofafont.主要就是定义:字体。有米手机应用广告(优蜜信息科技)最后,核心类显示资源数据包package:android.graphics主要类:CanvasAndroidSDK中的简介:TheCanvasclassholdsthe“draw”calls.Todrawsomething,youneed4basiccomponents:ABitmaptoholdthepixels,aCanvastohostthedrawcalls(writingintothebitmap),adrawingprimitive(e.g.Rect,Path,text,Bitmap),andapaint(todescribethecolorsandstylesforthedrawing).按照结构的功能,将主要接口分为以下3部分:Region在这里需要特殊说明下:Region就是一个区域,也就是画布(Canvas)中的有效区域,在无效区域上draw,对画布没有任何改变。总结说明在写代码前,必须先仔细看下这几个主要的类,在这里我也只是把SDK中的介绍稍微总结下,它代替不了你对SDK的详细阅读,毕竟SDK是最详细的说明文档,在后续篇幅中再深入详细的介绍。相关文章•Activity、Intent深入解析•Android实现联网(一)——package说明•Android画图学习总结(五)——PaintAndroid画图学习总结(四)——Animation(下)•Android画图学习总结(四)——Animation(中)Android画图学习总结(二)——Bitmap通过前一篇的学习,对Android画图核心部分有了一定的了解,后面篇幅,我们将详细介绍Android中的各种画图对象的使用,首先介绍我们最常用的Bitmap(位图)。位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力的。按有米手机应用广告(优蜜信息科技)照对位图的操作,分为以下几个功能分别介绍:1.从资源中获取位图2.获取位图的信息3.显示位图4.位图缩放5.位图旋转1.从资源中获取位图在前一篇幅介绍了:先获取Resource,然后可以通过资源ID获取Drawable,也可以通过资源ID获取资源文件的数据流。使用第一种方法比较容易,下面详细说明第二种方法。通过Resource的函数:InputStreamopenRawResource(intid)获取得到资源文件的数据流后,也可以通过2种方法来获取Bitmap,如下:以上方法在编程的时候可以自由选择,在AndroidSDK中说明可以支持的图片格式如下:png(preferred),jpg(acceptable),gif(discouraged),虽然bmp格式没有明确说明,但是在AndroidSDKSupportMediaFormat中是明确说明了。2.获取位图的信息要获取位图信息,比如位图大小、是否包含透明度、颜色格式等,获取得到Bitmap就迎刃而解了,这些信息在Bitmap的函数中可以轻松获取到。AndroidSDK中对Bitmap有详细说明,阅读起来也比较容易,不在此详细说明,这里只是辅助说明以下2点:•在Bitmap中对RGB颜色格式使用Bitmap.Config定义,仅包括ALPHA_8、ARGB_4444、ARGB_8888、RGB_565,缺少了一些其他的,比如说RGB_555,在开发中可能需要注意这个有米手机应用广告(优蜜信息科技)小问题;•Bitmap还提供了compress()接口来压缩图片,不过AndroidSAK只支持PNG、JPG格式的压缩;其他格式的需要Android开发人员自己补充了。3.显示位图显示位图需要使用核心类Canvas,可以直接通过Canvas类的drawBirmap()显示位图,或者借助于BitmapDrawable来将Bitmap绘制到Canvas。具体如何显示位图不是主要的问题,主要问题是如何获取Canvas,参考Snake中的方法,做了个简单的例子testView,提供给大家下载。testView例子介绍:其包含2个类testActivity,testView;testActivity继承与Activity,testView继承与View。这个例子就是将testView直接作为test