在学习Android开发的时候,apidemos是一个帮助开发者快速入门的范例,也是了解一个新版本Api变化的有效途径。接下来我们就详细了解一下android的 apidemos:

apidemos是什么?

apidemos是google为开发者提供的一些 调用api的合集,包含了很多范例,查看起来非常方便。那么apidemo在哪呢?apidemos位于 sdk/simples/android-xx/apidemos目录下,如果找不到这个文件夹的话,那说明你需要去下载它,通过sdk manager下载Simples for SDK 即可,这个过程可能会需要翻墙操作,笔者是用的云梯,速度还不错,大家可以参考一下。

怎么查看apidemos?

现在apidemos已经乖乖的躺到了我们的硬盘里,下面就要导入Android studio去探索它了。apidemos采用的是eclipse的目录结构,再导入的时候使用important project(Eclipse ADT, Gradle, etc)导入即可,导入的过程中Android studio 会对目录结构等进行自动调整,并重新编译。需要注意的是在android-18之后apidemos的目录被放到了legacy目录下,并不是没有了哦。下面就说说导入过成中会遇到哪些坑吧。
先说说笔者的开发环境吧,系统用的 os x 11.1,Androis studio版本用的比较新的1.5的稳定版本,gradle用的版本为2.2.1。

progressbar_2.xml报错

这个问题只有在eclipse导入的时候每个都会报错,但是Android studio只有导入第一个apidemos时有问题,这个有点奇怪。报错的原因是因为 “@+android:id/progress_large” 为系统级的id,编译器没有找到就报错咯。修改方式也很简单,把\”android:\”去掉即可,用自己的id就好了。

preference_switch报错

这个问题有点坑,报错原因是因为xml文件没有以.xml的形式保存文件,简单点说就是没有后缀名,改成preference_switch.xml就可以了。

没有导入v4包

这个问题就很简单了,添加一个v4包得依赖就可以了,这个问题在android-19之后的版本才会有,因为用到了v4包下一个PrintHelper类。

minSdkVersion 1 cannot be smaller than version 4…

这个报错的原因是是在gradle在构建项目的时候,没有自动生成minSdkVersion节点,所以默认的minSdkVersion就为了1了,但是v4包只能在api 版本4及以上才可以用,在gradle的配置文件加上minSdkVersion节点并且为4以上就可以了。

程序包com.google.android.mms不存在的一系列问题

这个问题是因为MmsMessagingDemo用到Mms包下东西,但是这货有事系统的@hide的api,所以根本没办法导入,解决办法就是编译一份mms包的源码,把@hide给开放了就好了,这个问题笔者给搁置到一边了,目前也不是主要看mms部分,所以就直接把报错的代码给注掉了。

笔者在导入过程中,遇到主要就是以上几个问题,剩下还有一些包找不到的就直接给注掉了,要知道我们的精力有限,不能为了一些问题就停滞不前了,先运行起来demo,其余的带到必须用了,再去跟它死磕也不迟。

apidemos的组织结构

经过上面的一阵折腾,所有版本的apidemos都可以正常运行了。各个版本的apidemos的组织结构基本都是类似的,主要包括Accessibility,Animation,App,Content,Graphics,Media,OS,Preference,Text,Views,security11部分,下面我进行详细介绍:

Accessibility:

辅助功能的示例,包括:Accessibility Node Querying,Accessibility Service,Custom View

Animation:

动画的示例,包括:Bouncing Balls,Cloning,Custom Evaluator,
Default Layout Animations,Events,Hide-Show Animations,Layout Animations,Loading,Multiple Properties,Reversing,Seeking,View Flip

App:

应用的组成部分的示例,包括:Activity,Alarm,Device Admin,Dialog,Intents,Launcher Shortcuts,Menu,Notification,Preferences,Search,Service,Text-To-Speech,Voice Recognition

Content:

资源类的调用示例,包括:Assets,Provider,Resources,Storage

<

h3>Graphics:</h3图形类示例,包括:AlphaBitmap,AnimateDrawables,Arcs,BitmapDecode,BitmapMesh,BitmapPixels,CameraPreview,Clipping,ColorFilters,ColorMatrix,Compass,CreateBitmap,Density,Drawable,FingerPaint,Layers,MeasureText,OpenGL ES,PathFillTypes,Patterns,Pictures,Points,PolyToPoly,Purgeablebitmap,Regions,RoundRects,ScaleToFit,SensorTest,Surface Window,SurfaceView Overlay,Sweep,Text Align,Touch Paint,Typefaces,UnicodeChart,Vertices,Xfermodes

Media:

媒体部分示例,包括:AudioFx,MediaPlayer,VidesView

OS:

系统部分示例,包括:Morse Code,Sensors,SMS Messageing

Preference:

Preference文件使用示例,包括:Preferences from XML,Launching preferences,Preference dependencies,Default values,Preferences from code,Advanced preferences,Fragment,Headers,Switch

Text:

文本类控件示例,包括:Linkify,LogTextBox,Marquee

Security:

安全相关示例,包括:KeyStore

Views

:视图类示例,包括:Animation,Auto Complete,Buttons,Chronometer,Controls,Custom,Date Widgets,Expandable Lists,Focus,Gallery,Grid,Imagebutton,ImageSwitcher,ImageView,Layout Animation,Layouts,Lists,Progess Bar,Radio Group,Rating Bar,ScrollBars,Secure View,Seek Bar,Spinner,Tabs,TestSwitcher,VisiBility,WebView

以上就是apidemos一个大概的结构,接下来的文章会分析各个apidemo,敬请关注。

发表评论

电子邮件地址不会被公开。 必填项已用*标注