第一部分 个性化控件(View)
主要介绍那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、 GridView、ImageView、ProgressBar、TextView、ScrollView、TimeView、TipView、 FlipView、ColorPickView、GraphView、UI Style等等。
一、ListView
android-pulltorefresh
一个强大的拉动刷新开源项目,支持各种控件下拉刷新,ListView、ViewPager、WevView、ExpandableListView、 GridView、ScrollView、Horizontal ScrollView、Fragment上下左右拉动刷新,比下面johannilsson那个只支持ListView的强大的多。并且它实现的下拉刷新 ListView在item不足一屏情况下也不会显示刷新提示,体验更好。项目地址:Demo地址:APP示例:新浪微博各个页面android-pulltorefresh-listview
下拉刷新ListView项目地址:Demo地址:PS:这个被很多人使用的项目实际有不少bug,推荐使用上面的android-pulltorefreshDropDownListView
下拉刷新及滑动到底部加载更多ListView项目地址:Demo地址:文档介绍:DragSortListView
拖动排序的ListView,同时支持ListView滑动item删除,各个Item高度不一、单选、复选、CursorAdapter做为适配器、拖动背景变化等项目地址:Demo地址:APP示例:Wordpress AndroidSwipeListView
支持定义ListView左右滑动事件,支持左右滑动位移,支持定义动画时间项目地址:Demo地址:APP示例:微信Android-SwipeToDismiss
滑动Item消失ListView项目地址:支持3.0以下版本见:Demo地址:PinnedHeaderExpandableListView
首先它是一个ExpandableListView,但是它的头部可以固定,其次,在它的上面还有一个头部可以来回伸缩项目地址:APP示例:百度手机卫士垃圾清理界面
StickyListHeaders
GroupName滑动到顶端时会固定不动直到另外一个GroupName到达顶端的ExpandListView,支持快速滑动,支持Android2.3及以上项目地址:APP示例:Android 4.0联系人
pinned-section-listviewGroupName滑动到顶端时会固定不动直到另外一个GroupName到达顶端的ExpandListView项目地址:
PinnedHeaderListView
GroupName滑动到顶端时会固定不动直到另外一个GroupName到达顶端的ExpandListView项目地址:QuickReturn
ListView/ScrollView的header或footer,当向下滚动时消失,向上滚动时出现项目地址:Demo地址:QuickReturnHeader
ListView/ScrollView的header或footer,当向下滚动时消失,向上滚动时出现项目地址:Demo地址:APP示例:google plusIndexableListView
ListView右侧会显示item首字母快捷索引,点击可快速滑动到某个item项目地址:Demo地址:APP示例:微信通讯录、小米联系人CustomFastScrollView
ListView快速滑动,同时屏幕中间PopupWindows显示滑动到的item内容或首字母项目地址:
Android-ScrollBarPanel
ListView滑动时固定的Panel指示显示在scrollbar旁边项目地址:效果展示:SlideExpandableListView
用户点击listView item滑出固定区域,其他item的区域收缩项目地址:Demo地址:JazzyListView
ListView及GridView item以特殊动画效果进入屏幕,效果包括grow、cards、curl、wave、flip、fly等等项目地址:Demo地址:效果展示:ListViewAnimations
带Item显示动画的ListView,动画包括底部飞入、其他方向斜飞入、下层飞入、渐变消失、滑动删除等项目地址:Demo地址:APP示例:Google plus、Google Now卡片式进入、小米系统中应用商店、联系人、游戏中心、音乐、文件管理器的ListView、Ultimate、Light Flow Lite、TreinVerkeer、Running Coach、Pearl Jam Lyrics、Calorie Chart、Car Hire、Super BART、DK FlashCards、Counter Plus、Voorlees Verhaaltjes 2.0DevsmartLib-Android
横向ListView项目地址:Demo地址:TwoWayView
横向ListView的效果,继承自AdapterView项目地址:HorizontalVariableListView
支持Item宽度不一致的ListView项目地址:LinearListView
用LinearLayout实现的ListView,可解决多个ListView并存等问题。目前自己也有需要,等亲自尝试过后会再具体介绍项目地址:MultiChoiceAdapter
支持多选的ListView Adapter项目地址:Demo地址:EnhancedListView
支持横向滑动删除列表项以及撤销删除的ListView,该项目的前身是项目地址:Demo地址:ListBuddies
自动滚动的双列ListView ,两个ListView滚动速度不一致,有视差效果项目地址:Demo地址:效果展示:
PullToZoomInListView
滑动ListView时使其HeaderView跟随滑动缩放项目地址:二、ActionBar
ActionBarSherlock
为Android所有版本提供统一的ActionBar,解决4.0以下ActionBar的适配问题项目地址:Demo地址:APP示例:太多了。。现在连google都在用ActionBar-PullToRefresh
下拉刷新,ActionBar出现加载中提示项目地址:Demo地址:APP示例:Gmail,Google plus,知乎等FadingActionBar
ListView向下滚动逐渐显现的ActionBar项目地址:Demo地址:APP示例:google music,知乎NotBoringActionBar
google music下拉收缩的ActionBar项目地址:Demo地址:APP示例:Google音乐RefreshActionItem
带进度显示和刷新按钮的ActionBar项目地址:Demo地址:APP示例:The New York Times,DevAppsDirect.GlassActionBar
类似玻璃的有一定透明度的ActionBar项目地址:Demo地址:APP示例:google music
三、Menu
MenuDrawer
滑出式菜单,通过拖动屏幕边缘滑出菜单,支持屏幕上下左右划出,支持当前View处于上下层,支持Windows边缘、ListView边缘、ViewPager变化划出菜单等。项目地址:Demo地址:APP示例:Gmail、Google Music等大部分google appSlidingMenu
滑出式菜单,通过拖动屏幕边缘滑出菜单,支持屏幕左右划出,支持菜单zoom、scale、slide up三种动画样式出现。项目地址:Demo地址:APP示例:Foursquare, LinkedIn, Zappos, Rdio, Evernote Food, Plume, VLC for Android, ESPN ScoreCenter, MLS MatchDay, 9GAG, Wunderlist 2, The Verge, MTG Familiar, Mantano Reader, Falcon Pro (BETA), MW3 BarracksMenuDrawer和SlidingMenu比较:SlidingMenu支持菜单动画样式出现,MenuDrawer支持菜单view处于内容的上下层ArcMenu
支持类似Path的左下角动画旋转菜单及横向划出菜单、圆心弹出菜单项目地址:APP示例:Path
android-satellite-menu
类似Path的左下角动画旋转菜单项目地址:Demo地址:APP示例:Pathradial-menu-widget
圆形菜单,支持二级菜单项目地址:效果图:Android Wheel Menu
圆形旋转选取菜单项目地址:
FoldingNavigationDrawer
滑动并以折叠方式打开菜单项目地址:Demo地址:AndroidResideMenu
仿 Dribbble 的边栏菜单项目地址:CircularFloatingActionMenu
一个可定制的圆形的浮动菜单控件,类似于Path的圆形菜单。这个控件的可定制性更强,可以很容易的定制菜单出现消失时的动画,起始角度和半径。项目地址:Demo地址:NavigationDrawerSI
Navigation Drawer的一个简单实现,滑动并以折叠方式打开菜单项目地址:Demo地址:四、ViewPager 、Gallery
Android-ViewPagerIndicator
配合ViewPager使用的Indicator,支持各种位置和样式项目地址:Demo地址:APP示例:太多了。。JazzyViewPager
支持Fragment切换动画的ViewPager,动画包括转盘、淡入淡出、翻页、层叠、旋转、方块、翻转、放大缩小等项目地址:Demo地址:效果类似桌面左右切换的各种效果,不过桌面并非用ViewPager实现而已Android-DirectionalViewPager
支持横向和纵向(垂直)的ViewPager项目地址:Demo地址:android-pulltorefresh
支持下拉刷新的ViewPager项目地址:Demo地址:APP示例:新浪微博各个页面FancyCoverFlow
支持Item切换动画效果的类似Gallery View项目地址:Demo地址:效果图:AndroidTouchGallery
支持双击或双指缩放的Gallery(用ViewPager实现),相比下面的PhotoView,在被放大后依然能滑到下一个item,并且支持直接从url和文件中获取图片,项目地址:Demo地址:APP示例:类似微信中查看聊天记录图片时可双击放大,并且放大情况下能正常左右滑动到前后图片Android Auto Scroll ViewPager
Android自动滚动 轮播循环的ViewPager项目地址:Demo地址:文档介绍:Salvage view
带View缓存的Viewpager PagerAdapter,很方便使用项目地址:Android PagerSlidingTabStrip
配合ViewPager使用的Indicator,支持ViewPager Scroll时Indicator联动项目地址:Demo地址:ViewPager3D
ViewPager3D效果项目地址:AnimaTabsview
仿网易云音乐标签切换的动画,带透明小三角项目地址: 在线演示:
五、GridView
StaggeredGridView
允许非对齐行的GridView,类似Pinterest的瀑布流,并且跟ListView一样自带View缓存,继承自ViewGroup项目地址:Demo地址:APP示例:Pinterest等AndroidStaggeredGrid
允许非对齐行的GridView,类似Pinterest的瀑布流,继承自AbsListView项目地址:APP示例:Pinterest等PinterestLikeAdapterView
允许非对齐行的GridView,类似Pinterest的瀑布流,允许下拉刷新项目地址:APP示例:Pinterest等DraggableGridView
Item可拖动交换位置的GridView,实际是自己继承ViewGroup实现,类似桌面的单屏效果,可屏幕自动上下滚动进行Item移动交换,多屏效果见下面PagedDragDropGrid项目地址:Demo地址:StickyGridHeaders
GroupName滑动到顶端时会固定不动直到另外一个GroupName到达顶端的GridView项目地址:效果图:
PagedDragDropGrid
Item可拖动交换位置、拖动删除的自定义控件,实际是自己继承ViewGroup实现,类似桌面的多屏效果,可拖动到屏幕边缘,屏幕自动左右滚动进行Item移动交换,可拖动进行删除,单屏效果见上面DraggableGridView项目地址:在线演示:Android-DraggableGridViewPager
Item可拖动交换位置的GridView,实际是自己继承ViewGroup实现,类似桌面的多屏效果,可屏幕自动左右滚动进行Item移动交换,单屏效果见上面DraggableGridView项目地址:Demo地址:TwoWayGridView
可横向滚动的GridView项目地址:
六、ImageView
PhotoView
支持双击或双指缩放的ImageView,在ViewPager等Scrolling view中正常使用,相比上面的AndroidTouchGallery,不仅支持ViewPager,同时支持单个ImageView项目地址:Demo地址:APP示例:photupandroid-gif-drawable
支持gif显示的view,用jni实现的,编译生成so库后直接xml定义view即可,而且本身不依赖于其他开源项目所以相对下面的ImageViewEx简单的多项目地址:ImageViewEx
支持Gif显示的ImageView项目地址:Demo地址:依赖很多,编译过程很繁琐!|_|!RoundedImageView
带圆角的ImageView项目地址:
ColorArt
根据图片的均色设置背景色显示文字和图片,类似itune11中效果项目地址:Demo地址:CircleImageView
圆形的ImageView项目地址:
ImageViewZoom
支持放大和平移的ImageView项目地址:APP示例:KenBurnsView
实现Ken Burns effect效果,达到身临其境效果的ImageView项目地址:CustomShapeImageView
各种形状的ImageView, 相比上面的圆形ImageView,多了更多形状项目地址:效果图:
七、ProgressBar
SmoothProgressBar
水平进度条项目地址:Demo地址:ProgressWheel
支持进度显示的圆形ProgressBar项目地址:Demo地址:android-square-progressbar
在图片周围显示进度项目地址:Demo地址:APP示例:square效果图:HoloCircularProgressBar
Android4.1 时钟App样式项目地址:APP示例:Android4.1时钟App效果图:
ProgressButton
通过图钉的不同状态显示进度项目地址:文档介绍:效果图:
GoogleProgressBar类似google 多个圆形卡片翻转的progressBar项目地址:
TH-ProgressButton带圆形进度显示的按钮项目地址;
NumberProgressBar带数字进度的进度条项目地址:
CircularProgressDrawable带圆形进度显示的进度条项目地址:
circular-progress-button带进度显示的Button项目地址:
八、TextView
包括TextView及所有继承自TextView控件,如EditText、Button、RadioButton
android-flowtextview
文字自动环绕其他View的Layout项目地址:效果图:Android Form EditText
验证输入合法性的编辑框,支持输入、英文、ip、url等多种正则验证项目地址:Demo地址:Emojicon
支持emojis的TextView和EditText项目地址:文档地址:android-circlebutton
Android圆形按钮,实际实现是继承自ImageView项目地址:Demo地址:Segmented Radio Buttons for Android
iOS’s segmented controls的实现项目地址:Demo地址:
Chips EditText Library
支持国家名字联想从而选择显示该国国旗的EditText,实际就是通过SpannableStringBuilder实现项目地址:Demo地址:AutoFitTextView
可固定边界内容字体大小自适应的TextView项目地址:Shimmer for Android
文字发淡光的TextView项目地址:Titanic
可以显示水位上升下降(不知道该怎么描述 囧)的TextView项目地址:
android-iconify
提供带Icon的TextView,Menu,Button等项目地址:Calligraphy
让我们在android开发中使用自定义字体变得更加简单项目地址 :
CreditsRoll
类似星球大战字幕效果的TextView项目地址:android-process-buton
带加载或提交进度的Button项目地址:FButton
扁平化的Button项目地址:Demo地址:FloatingActionButton
一个类似Android版Google+浮动功能按钮的控件,可以响应ListView的滚动事件。当列表向上滚动的时候会自动显示,向下滚动的时候自动隐藏。项目地址:Demo地址:
Android Saripaar
Android表单验证项目地址:JumpingBeans
文字像 Mexican beans 一样跳动项目地址:Demo地址:
FancyButtons
一个不用图片就可以帮助我们创建出漂亮按钮的库。项目地址:Demo地址:九、ScrollView
Discrollview
支持滚动时Item淡入淡出,平移,缩放效果的ScrollView项目地址:Demo地址:PullScrollView
仿照新浪微博Android客户端个人中心的ScrollView,下拉背景伸缩回弹效果。项目地址:效果图:
ParallaxScrollView
支持视差滚动的ScrollView ,背景图片的滚动速度小于ScrollView中子控件的滚动速度项目地址:Demo地址:十、TimeView
包括TimePicker、DatePicker、CalendarView、Clock等时间相关控件
android-times-square
Android日历时间部件,支持选取单个日期,多个日期,及日期区间段和对话框形式显示项目地址:Demo地址:android-calendar-card
日历项目地址:Demo地址:
AndroidWheel
Android Wheel支持城市、多种日期时间、密码、图片项目地址:效果图:GoogleDateTimePickers
时间选择部件项目地址:文档地址:DateTimePicker
日期选择部件(Google Agenda的样式风格)项目地址:Demo地址:效果图:
android-betterpickers
提供日期、数字、时间(数字方式和钟表方式)、重复周期(闹钟的周期重复)、HMS(时、分、秒)的选择,支持以DialogFragment的弹窗选择项目地址:Demo地址: 效果图:
十一、TipView
包括Toast、角标、UndoBar等提示性控件
Crouton
丰富样式的Toast,允许alert、comfirm、info样式及点击消失样式,允许设置Toast显示时间,允许自定义View。 本文32. SuperToasts为其扩展版项目地址:Demo地址:supertooltips
带动画效果的Tips显示项目地址:Demo地址:Android ViewBadger
为其他View添加角标等项目地址:Demo地址:
SuperToasts
更丰富样式的toast,支持Button、Progress、Horizontal Progress样式、支持进入动画、支持撤销及其动画设置项目地址:Demo地址:效果图:
UndoBar屏幕底部显示取消或是确认的PopupWindows项目地址:
UndoBar屏幕底部显示取消或是确认某操作项目地址:
Android-ActionItemBadge可以在ActionBar的MenuItem上显示一个小角标项目地址:
十二、FlipView
android-flip
类似Flipboard翻转动画的实现项目地址:Demo地址:APP示例:flipboardFlipImageView
支持x、y、z及动画选择的翻转动画的实现项目地址:Demo地址:FoldableLayout
Flip翻转效果的ListView,目前还不支持ListView缓存项目地址:Demo地址:
十三、ColorPickView
ColorPickerView
颜色选择器,支持PopupWindows或新的Activity中打开项目地址:
HoloColorPicker
颜色选择器项目地址:Demo地址:ColorPickerPreference
颜色选择器项目地址:
ColorPicker
颜色选择器(Google Agenda中的样式风格)项目地址:Demo地址: 效果图:十四、GraphView
achartengine
强大的图表绘制工具,支持折线图、面积图、散点图、时间图、柱状图、条图、饼图、气泡图、圆环图、范围(高至低)条形图、拨号图/表、立方线图及各种图的结合项目地址:官方网站:
- APP示例:Wordpress Android,Google Analytics
GraphView
绘制图表和曲线图的View,可用于Android上的曲形图、柱状图、波浪图展示项目地址:Demo地址:Demo项目:APP示例:Wordpress Android,Google AnalyticsHoloGraphLibrary
绘制现状图、柱状图、饼状图项目地址:文档介绍:XCL-Charts
XCL-Charts基于原生的Canvas来绘制各种图表,在设计时,尽量在保证开发效率的同时,给使用者提供足够多的定制化能力。因此使用简便,同时具有相当灵活的定制能力。目前支持3D/非3D柱形图(Bar Chart)、3D/非3D饼图(Pie Chart)、堆积图(Stacked Bar Chart)、面积图(Area Chart)、 折线图(Line Chart)、曲线图(Spline Chart)、环形图(Dount Chart)、南丁格尔玫瑰图(Rose Chart)、仪表盘(Dial Chart)、刻度盘(Gauge Chart)、雷达图(Radar Chart)、圆形图(Circle Chart)等图表。其它特性还包括支持图表缩放、手势移动、动画显示效果、高密度柱形显示、图表分界定制线、多图表的混合显示及同数据源不同类型图表切换等。项目地址:Demo地址:EazeGraph
Android 图表库,支持柱状图、分层柱状图、饼状图、线性图项目地址:Demo地址:MPAndroidChart
一个简单的绘制图表和曲线图View的库,可绘制线性图、2D/3D柱状图、饼图、散点图等项目地址:Demo项目:效果图:
十五、UI Style
不同样式的系统UI风格,如IOS、Bootstrap风格
UITableView
ios风格控件,包括Button、ListView、TableView项目地址:Demo地址:ATableView
ios风格控件项目地址:Demo地址:Cards-UI
卡片式View,支持单个卡片,item为卡片的ListView项目地址:Demo地址:cardslib
卡片式View,支持单个卡片,item为卡片的ListView和GridView项目地址:Demo地址:Android-Bootstrap
Bootstrap 风格的按钮项目地址:
十六、其他
SwipeBackLayout
左右或向上滑动返回的Activity项目地址:Demo地址:APP示例:知乎android-styled-dialogs
可自定义样式的dialog,默认与Holo主题样式一致,在Android2.2以上同一样式项目地址:Demo地址:Android Sliding Up Panel
可拖动的View,能在当前Activity上扶起一个可拖动的Panel项目地址:Demo地址:APP示例:Google Music精简播放栏AndroidWheel
Android Wheel支持城市、多种日期时间、密码、图片项目地址:效果图:
TableFixHeaders
第一列固定的Table项目地址:Demo地址:Inscription
可用于展示应用change和new feature信息项目地址:ActivityTransition
Activity切换动画,包括渐变、flip、某个位置进入等等项目地址:使用介绍:效果图:类似桌面左右切换的各种效果,不过桌面并非用ViewPager实现而已GlowPadBackport
将Android4.2的锁屏界面解锁扩展到Android1.6及1.6+项目地址:Demo地址:
GlowPadView
Android4锁屏界面解锁项目地址:效果图:android-lockpattern
Android的图案密码解锁项目地址:Demo地址:使用介绍:APP示例:Android开机的图案密码解锁,支付宝的密码解锁RangeBar
类似于SeekBar,不同的是可以选择一个范围内的值而不是单个值项目地址:Demo地址:
ChromeView
利用Chromium实现的WebView,解决各个Android版本WebView不同的问题,同时利用最新Chrome代码项目地址:Android Slider Preference Library
可添加到设置中的基于对话框的RankBar小部件项目地址:ShowcaseView library
用于高亮显示应用程序的特定部分,从而突出突出重点项目地址:android-segmented-control
Android上的Segmented Controls,相当于RadioButton组项目地址:Swipeable Cards
类似Tinder的卡片效果,可以加载图片并动画效果展示,向左滑动表示喜欢,向右表示不喜欢项目地址:Demo地址:EdgeEffectOverride
改变ScrollView, ListView, ExpandableListView, GridView, ViewPager等滚动控件滚动到边缘的颜色效果项目地址:android-pinned-header-listviews
使ExpandListView的Group滑动到顶端时会固定不动直到另外一个Group到达顶端项目地址:
第二部分 工具库
主要包括那些不错的开发库,包括依赖注入框架、图片缓存、网络相关、数据库ORM建模、Android公共库、Android 高版本向低版本兼容、多媒体相关及其他。
一、依赖注入DI
通过依赖注入减少View、服务、资源简化初始化,事件绑定等重复繁琐工作
AndroidAnnotations(Code Diet)
android快速开发框架项目地址:文档介绍:官方网站:特点:(1) 依赖注入:包括view,extras,系统服务,资源等等(2) 简单的线程模型,通过annotation表示方法运行在ui线程还是后台线程(3) 事件绑定:通过annotation表示view的响应事件,不用在写内部类(4) REST客户端:定义客户端接口,自动生成REST请求的实现(5) 没有你想象的复杂:AndroidAnnotations只是在在编译时生成相应子类(6) 不影响应用性能:仅50kb,在编译时完成,不会对运行时有性能影响。PS:与roboguice的比较:roboguice通过运行时读取annotations进行反射,所以可能影响应用性能,而AndroidAnnotations在编译时生成子类,所以对性能没有影响roboguice
帮你处理了很多代码异常,利用annotation使得更少的代码完成项目项目地址:文档介绍:butterknife
利用annotation帮你快速完成View的初始化,减少代码项目地址:文档介绍:Dagger
依赖注入,适用于Android和Java项目地址:文档介绍:
二、图片缓存
Android-Universal-Image-Loader
图片缓存,目前使用最广泛的图片缓存,支持主流图片缓存的绝大多数特性。项目地址:Demo地址:文档介绍:picasso
square开源的图片缓存项目地址:文档介绍:特点:(1)可以自动检测adapter的重用并取消之前的下载(2)图片变换(3)可以加载本地资源(4)可以设置占位资源(5)支持debug模式ImageCache
图片缓存,包含内存和Sdcard缓存项目地址:Demo地址:文档介绍:特点:(1)支持预取新图片,支持等待队列(2)包含二级缓存,可自定义文件名保存规则(3)可选择多种缓存算法(FIFO、LIFO、LRU、MRU、LFU、MFU等13种)或自定义缓存算法(4)可方便的保存及初始化恢复数据(5)支持不同类型网络处理(6)可根据系统配置初始化缓存等
三、网络相关
Asynchronous Http Client for Android
Android异步Http请求项目地址:文档介绍:特点:(1) 在匿名回调中处理请求结果(2) 在UI线程外进行http请求(3) 文件断点上传(4) 智能重试(5) 默认gzip压缩(6) 支持解析成Json格式(7) 可将Cookies持久化到SharedPreferencesandroid-query
异步加载,更少代码完成Android加载项目地址: 或 文档介绍:?Demo地址:特点:?Async Http Client
Java异步Http请求项目地址:文档介绍:Ion
支持图片、json、http post等异步请求项目地址:文档介绍:HttpCache
Http缓存项目地址:Demo地址:文档介绍:特点是:(1) 根据cache-control、expires缓存http请求(2) 支持同步、异步Http请求(3) 在匿名回调中处理请求结果(4) 在UI线程外进行http请求(5) 默认gzip压缩Http Request
项目地址:文档介绍:okhttp
square开源的http工具类项目地址:文档介绍:特点:(1) 支持SPDY( )协议。SPDY协议是Google开发的基于传输控制协议的应用层协议,通过压缩,多路复用(一个TCP链接传送网页和图片等资源)和优先级来缩短加载时间。(2) 如果SPDY不可用,利用连接池减少请求延迟(3) Gzip压缩(4) Response缓存减少不必要的请求Retrofit
RESTFUL API设计项目地址:文档介绍:RoboSpice
Android异步网络请求工具,支持缓存、REST等等项目地址:Demo地址:
四、数据库 orm工具包
orm的db工具类,简化建表、查询、更新、插入、事务、索引的操作
greenDAO
Android Sqlite orm的db工具类项目地址:文档介绍:官方网站:特点:(1) 性能佳(2) 简单易用的API(3) 内存小好小(4) 库大小小ActiveAndroid
Android Sqlite orm的db工具类项目地址:文档介绍:Sprinkles
Android Sqlite orm的db工具类项目地址:文档介绍:特点:比较显著的特点就是配合 能保存从服务器获取的数据ormlite-android
项目地址:文档介绍:Schematic
根据SQLite生成ContentProvider项目地址:
五、Android公共库
Guava
Google的基于java1.6的类库集合的扩展项目,包括collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O等等. 这些高质量的API可以使你的JAVa代码更加优雅,更加简洁项目地址:文档介绍:Volley
Google提供的网络通信库,使得网络请求更简单、更快速项目地址:Github地址:文档地址:AndroidCommon
Android公共库项目地址:Demo地址:文档介绍:包括:(1)缓存(图片缓存、预取缓存、网络缓存)(2) 公共View(下拉及底部加载更多ListView、底部加载更多ScrollView、滑动一页Gallery)(3) Android常用工具类(网络、下载、Android资源操作、shell、文件、Json、随机数、Collection等等)shipfaster
整合了Dagger Otto Retrofit Robolectric Picasso OkHttp,方便快速开发项目地址:CleanAndroidCode
整合了Dagger Otto AndroidAnnotations,方便快速开发项目地址:xUtils
基于Afinal,包含DbUtils、ViewUtils、HttpUtils、BitmapUtils四大模块,可用于快速开发项目地址:Afinal
Afinal是一个android的ioc,orm框架,内置了四大模块功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通过finalActivity,我们可以通过注解的方式进行绑定ui和事件。通过finalBitmap,我们可以方便的加载bitmap图片,而无需考虑oom等问题。通过finalDB模块,我们一行代码就可以对android的sqlite数据库进行增删改查。通过FinalHttp模块,我们可以以ajax形式请求http数据项目地址:官方网站:
六、Android 高版本向低版本兼容
ActionBarSherlock
为Android所有版本提供统一的ActionBar,解决4.0以下ActionBar的适配问题项目地址:Demo地址:APP示例:太多了。。现在连google都在用Nine Old Androids
将Android 3.0(Honeycomb)所有动画API(ObjectAnimator ValueAnimator等)兼容到Android1.0项目地址:Demo地址:文档介绍:HoloEverywhere
将Android 3.0的Holo主题兼容到Android2.1++项目地址:Demo地址:文档介绍:SherlockNavigationDrawer
将Android NavigationDrawer和ActionbarSherlock结合,解决4.0以下NavigationDrawer的适配问题项目地址:文档地址:Notifications4EveryWhere
将Android 4.1的Notification兼容到Android2.2++项目地址:Android Switch Widget Backport
将Android Switch和SwitchPreference的兼容到Android2.1++项目地址:Demo地址:文档介绍:android-datepicker
将Android 4.0的datepicker兼容到Android2.2++项目地址:GlowPadBackport
Android 4.2的GlowPadView向后适配到API4以上
项目地址:
七、多媒体相关
cocos2d-x
跨平台的2d游戏框架,支持Android、IOS、Linux、Windows等众多平台项目地址:文档介绍:官方网站:Vitamio
是一款Android与iOS平台上的全能多媒体开发框架项目地址:网站介绍:特点:(1) 全面支持硬件解码与GPU渲染(2) 能够流畅播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常见格式的视频(3) 在Android与iOS上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8)等常见的多种视频流媒体协议,包括点播与直播。PhotoProcessing
利用ndk处理图片库,支持Instafix、Ansel、Testino、XPro、Retro、BW、Sepia、Cyano、Georgia、Sahara、HDR、Rotate(旋转)、Flip(翻转)等各种特效项目地址:Demo地址:Android StackBlur
图片模糊效果工具类项目地址:Demo地址:文档介绍:Bitmap Smart Clipping using OpenCV
图片智能裁剪保留重要部分显示项目地址:利用淘宝的 库完成一淘玩客正在使用的图片裁剪,自动识别图片中的重要区域,并且在图片裁剪时保留重要区域特点:(1). 能进行人脸识别。图片中有人脸,将自动视为人脸区域为重要区域,将不会被裁剪掉(2).自动其它重要区域。如果图片中未识别出人脸,则会根据特征分布计算出重区域Cropper
图片局部剪切工具,可触摸控制选择区域或旋转项目地址:使用介绍:
android-crop
图片裁剪Activity项目地址:TileView
可分块显示大图,支持2D拖动、双击、双指放大、双指捏合项目地址:Demo地址:BlurEffectForAndroidDesign
图片模糊效果项目地址:android-eye
PC端网页查看同一局域网内的手机摄像头内容,可以用来监控哦项目地址:Demo地址:libpng for Android
PNG图片的jni库,支持几乎png的所有特性项目地址:文档地址:android-gpuimage
基于GPU的图片滤镜项目地址:AndroidFaceCropper
图片脸部自动识别,将识别后的局部图片返回项目地址:Android Video Crop
利用TextureView播放和剪切视频,类似ImageView.setScaleType项目地址:Demo地址:svg-android
Android Svg矢量图形支持项目地址:Android Visualizer
从Android MediaPlayer获得音频,然后像iTunes及WinAmp一样展示音轨项目地址:ExoPlayer
包括仪表板和SmoothStreaming自适应回放,缓存持久化和自定义渲染器,方便自定义和扩展,并且可以通过应用商店更新项目地址:
八、事件总线(订阅者模式)
通过发布/订阅事件解耦事件发送和接受,从而简化应用程序组件(Activities, Fragments及后台线程)之间的通信
EventBus
greenrobot的开源项目项目地址:文档介绍:特点:(1) 支持在不同类型的线程中处理订阅,包括发布所在线程,UI线程、单一后台线程、异步线程(2) 支持事件优先级定义,支持优先级高的订阅者取消事件继续传递,支持粘性事件,是不是跟系统的有序广播、粘性广播很像啊(3) 不是基于annotations(4) 性能更优(5) 体积小(6) 支持单例创建或创建多个对象(7) 支持根据事件类型订阅Otto
Square的开源项目,基于Guava的Android优化项目地址:文档介绍:
九、传感器
Great Android Sensing Toolkit
Android感应器工具包,包含示例及使用过程中可能需要的算法项目地址:Demo地址:文档介绍:SensorManager
Android传感器管理项目地址:文档介绍:GPSLogger
记录GPS信息项目地址:Demo地址:文档介绍:Pedometer
计步器,使用硬件计步感应器项目地址:leapcast
ChromeCast模拟器的App项目地址:Arduino-Communicator
与Arduino通信的App项目地址:android-pedometer
Android计步器项目地址:Demo地址:OwnTracks for Android
自己的轨迹记录项目地址:Shake Detector library for Android
Android手机震动摇晃检测库,提供供UI线程调用的回调接口项目地址:Demo地址:Android heart rate monitor
Android心跳检测项目地址:Bluetooth LE Library for Android
蓝牙源信息,包括宝库Mac、更新时间、RSSI、UUID、信号源距离、影响范围等信息项目地址:Demo地址:farebot
通过NFC 从公交卡中读取数据的一个应用项目地址:
十、安全
SQLCipher
Sqlite加密工具项目地址:帮助文档:Conceal
快速高效的进行文件加密解密项目地址:文档介绍:Android-PasscodeLock
应用锁,每次启动或从任何Activity启动应用都需要输入四位数字的密码方可进入项目地址:Demo地址:APP示例:Wordpress Android,支付宝,挖财GlowPadBackport
将Android4.2的锁屏界面解锁扩展到Android1.6及1.6+项目地址:Demo地址:
GlowPadView
Android 4锁屏界面解锁项目地址:效果图:android-lockpattern
Android的图案密码解锁项目地址:Demo地址:使用介绍:示例APP:Android开机的图案密码解锁,支付宝的密码解锁
十一、插件化
dynamic-load-apk
Android动态加载Apk,热部署。支持一定程度不安装升级项目地址:文档介绍:xCombine
Android App插件式插件开发,插件必须先安装项目地址:文档介绍:Android Plugin Framework
Android插件式开发,开放的源码目前不完整项目地址:
十二、文件
对不同文档类型的处理,包括PDF、Word、EPub、Html、Zip等
purePDF
允许从任何运行的SWF文件读取和创建PDF文档项目地址:Office 365 SDK for Android Preview
可支持Microsoft SharePoint Lists, Microsoft SharePoint Files, Microsoft Exchange Calendar, Microsoft Exchange Contacts, Microsoft Exchange Mail项目地址:OpenSpritz-Android
EPub阅读器项目地址:jsoup
一个解析html的java库,可方便的提取和操作数据项目地址:官方网站:作用:(1) 从一个url、文件或string获得html并解析(2) 利用dom遍历或css选择器查找、提取数据(3) 操作html元素(4) 根据白名单去除用于提交的非法数据防止xss攻击(5) 输出整齐的htmlZIP
java压缩和解压库项目地址:文档介绍:作用:(1) 解压和压缩,并支持文件夹内递归操作(2) 支持包含和排除某些元素(3) 支持重命名元素(4) 支持遍历zip包内容(5) 比较两个zip包等功能
十三、其他
Salvage view
带View缓存的Viewpager PagerAdapter,很方便使用项目地址:Android Priority Job Queue
Android后台任务队列项目地址:文档介绍:Cobub Razor
开源的mobile行为分析系统,包括web端、android端,支持ios和window phone项目地址:Demo地址:网站介绍:Countly
Android移动端数据采集分析系统项目地址:官网地址:aFileChooser
文件选择器,可内嵌到程序中,而无需使用系统或三方文件选择器。项目地址:androidpn
基于xmpp协议的消息推送解决方案,包括服务器端和android端。项目地址:Bolts
Android的异步编程模式项目地址:与AsyncTask比较:(1) 使用的是无大小限制的线程池(2) 任务可组合可级联,防止了代码耦合CastCompanionLibrary-android
使Android程序中更快的接入Google Cast项目地址:文档介绍:CastVideos-android
从Android设备分享Video通过Google Cast项目地址:文档介绍:Uninstall_Statics
Android应用自身被卸载监听及打开浏览器等反馈功能实现项目地址:文档介绍:Memento
保证在系统配置改变时,Activity中的某些数据可以简单安全的保持不变项目地址:文档介绍:FreeFlow
布局引擎,更简单的创建自定义布局,并且当数据和布局改变时更美观的过渡动画项目地址:Demo地址:Android Gesture Detectors Framework
Android手势框架,支持双指旋转、移动、平移、缩放等项目地址:Mapbox Android SDK
Android Map的替代版项目地址:Activity animation
Activity跳转动画,支持各个方向波浪的效果项目地址:在线演示:KryoNet
通过NIO提供客户端和服务器端TCP/UDP网络传输的Java库项目地址:Rebound
一个模仿弹簧反弹的Java库,可用于创建动画项目地址:Android Social Networks
社交网络接入统一管理器,可方便的从Twitter, LinkedIn, Facebook, Google Plus登陆、获得个人信息、发送消息、发送专篇、添加或删除好友项目地址:Demo地址:Magnet
创建类似 Facebook 聊天桌面悬浮窗的效果项目地址:Parceler
通过注解及工具类自动完成实体类 Parcelable及值传递项目地址:AcDisplay
将 Android 的通知都集中到锁屏显示项目地址:Demo地址:
第三部分 优秀项目
主要介绍那些Android还不错的完整项目,目前包含的项目主要依据是项目有意思或项目分层规范比较好。
Linux项目地址:Android项目地址: 或 以上两个项目,不解释(1) ZXing
二维码扫描工具项目地址: 或 APK地址:PS:现在市面上很多应用的二维码扫描功能都是从这个修改而来(2) photup
编辑机批量上传照片到facebook上项目地址:APK地址:PS:代码分包合理,很棒。不过这个项目依赖的开源项目比较多,比较难编译(3) github-android
Github的Android客户端项目项目地址:APK地址:(4) Notes
MIUI便签项目地址:APK地址:PS:项目分包比较合理,相比较miui的文件管理器 代码规范较好得多(5) weicuiyuan
四次元-新浪微博客户端项目地址:APK地址:(6) gnucash-android
一个记账理财软件项目地址:APK地址:(7) AntennaPod
支持rss订阅、音乐订阅项目地址:APK地址:(8) ChaseWhisplyProject
打鬼游戏项目地址:APK地址:(9) Tweet Lanes
功能完整的Twitter客户端项目地址:APK地址:(10) Financius
简单易用的记账程序项目地址:APK地址:(11) todo.txt-android
todo.txt的官方Android应用项目地址:APK地址:(12) simpletask
基于todo.txt官方应用的另一个客户端项目地址:APK地址:(13) Muzei Live Wallpaper
定时更换桌面精美壁纸项目地址:APK地址:第四部分 开发工具及测试工具
主要介绍和Android开发工具和测试工具相关的开源项目。
一、开发效率工具
Parceler
通过注解及工具类自动完成实体类 Parcelable及值传递项目地址:Json2Java
根据JSon数据自动生成对应的Java实体类,还支持Parcel、Gson Annotations对应代码自动生成。期待后续的提取父类以及多url构建整个工程的功能项目地址:在线演示:IntelliJ Plugin for Android Parcelable boilerplate code generation
Android studio插件,生成Parcelable代码项目地址:
Android Holo Colors IntelliJ Plugin
Android studio插件,生成holo样式9 patch图片项目地址:效果图:
Android Drawable Factory用于生成各个分辨率的图片项目地址:
SelectorChapek for Android
Android Studio插件,可根据固定文件名格式资源自动生成drawable selectors xml文件。项目地址:Android Action Bar Style Generator
Android ActionBar样式生成器,可在线选择ActionBar样式自动生成所需要的图片资源及xml文件项目地址:在线演示:ButterKnifeZelezny
用于快速生成View注入代码的Android Studio/IDEA插件项目地址:RoboCoP
利用Gradle task根据固定格式的json文件生成ContentProvider项目地址:appiconsizes
用于生成各个分辨率的图片项目地址:Gradle Retrolambda Plugin
是将Java8的Lambdas应用于Java7的工具,本项目是Gradle插件,通过Retrolambda从而使Java或Android项目用Java8的Lambdas编写,将编译后的字节码转换为Java6和7的字节码从而正常运行项目地址:Dagger IntelliJ Plugin
dagger的intellij插件项目地址:Android Gen Drawable Maven plugin
在编译时根据SVG描述文件生成不同分辨率的jpg、png或点9图片项目地址:Android Asset Studio
各种Android资源自动生成器,包括启动图标、ActionBar图标、通知栏图标、点9等项目地址:在线演示:
二、开发自测相关
Quality Tools for Android
Android测试及自测工具集合和示例项目地址:android-test-kit
Google的Android测试工具包括GoogleInstrumentationTestRunner(增强版的InstrumentationTestRunner)和Espresso(用于快速写出可靠测试用例的API)项目地址:文档介绍:robolectric
测试用例编写框架项目地址:Demo地址:文档介绍:特点:(1). 不需要模拟器在一般JVM就可以运行测试用例(2). 能完成在真机上的大部分测试包括感应器其他的测试用例及相关模块Mock可见:, ,Android FEST
提供一些列方便的断言,可用于提高编写Android自测代码效率项目地址:BoundBox
可用于测试类各种访问权限的属性、方法。实际是通过BoundBox这个annotation生成一个属性和方法都是public权限的中间类并对此类进行测试完成的项目地址:Hugo
用于打印函数信息及执行时间的工具,仅在debug模式生效项目地址:scalpel
在应用下面添加一层用于界面调试,待详细补充 // TODO项目地址:Android Screenshot library
Android截图工具类,用于在持续集成时截图项目地址:sonar-android-lint-plugin
将android lint的错误在sonar中展现项目地址:
三、测试工具
Spoon
可用于android不同机型设备自动化测试,能将应用apk和测试apk运行在不同机器上并生成相应测试报告。项目地址:Tencent APT
APT是腾讯开源的一个Android平台高效性能测试组件,提供丰富实用的功能,适用于开发自测、定位性能瓶颈;测试人员完成性能基准测试、竞品对比测试项目地址:Emmagee
网易开源的性能测试工具,包括CPU、内存、网络流量、启动时间、电池状态等项目地址:Android py-uiautomator
py-uiautomator是一个对Android uiautomator用python进行封装的测试框架.项目地址:
四、开发及编译环境
Buck
facebook开源的Android编译工具,效率是ant的两倍。主要优点在于:(1) 加快编译速度,通过并行利用多核cpu和跟踪不变资源减少增量编译时间实现(2) 可以在编译系统中生成编译规则而无须另外的系统生成编译规则文件(3) 编译同时可生成单元测试结果(4) 既可用于IDE编译也可用于持续集成编译(5) facebook持续优化中项目地址:Android Maven Plugin
Android Maven插件,可用于对android三方依赖进行管理。在J2EE开发中,maven是非常成熟的依赖库管理工具,可统一管理依赖库。项目地址:umeng-muti-channel-build-tool
渠道打包工具项目地址:另可参见Google的构建系统Gradle:Genymotion
目前最好用最快的android模拟器项目地址:Android studio集成控件: Cyril Mottier推荐:gradle-mvn-push
方便的将Gradle的Artifacts上传到Maven仓库项目地址:文档介绍:Android Emulator Plugin for Jenkins
Android模拟器 jenkins插件,用于Jenkins做持续集成时跑模拟器测试项目地址:Android Maven Plugin
管理应用所需要的依赖库。包括的构建工具有Maven、Gradle、ant、sbt项目地址:SDK Manager Plugin
下载和管理Android SDK的Gradle插件项目地址:Gradle Protobuf Plugin
将.proto文件转换成Java文件的gradle插件项目地址:
五、其他
ViewServer
允许app运行在任何手机上都可以用HierarchyViewer查看项目地址:GridWichterle for Android
在整个系统上显示一个grid,用来帮助查看应用布局及使得布局更美观,可设置grid网格大小和颜色,android推荐48dp和8dp,可见 Android Design Guidelines – Metrics and Grids项目地址:APK地址:PS:比起hierarchyviewer相差甚远,不过偶尔可用来作为布局查看工具。Catlog
手机端log查看工具,支持不同颜色显示、关键字过滤、级别过滤、进程id过滤、录制功能等项目地址:在线演示:PID Cat
根据package查看logcat日志项目地址:ACRA
应用崩溃信息上报到GoogleDoc工具,网页版展现结果三方开源地址项目地址:文档地址:Crashlytics
提供丰富的应用崩溃信息收集轻量级,丰富,可自定义应用崩溃信息收集器,附有邮件通知项目地址:集成插件:Android Resource Navigator
chrome插件,可以方便的查看github上android源码工程的styles.xml和themes.xml。主要功能:(1) 快速打开android styles.xml themes.xml(2) 方便在资源间跳转。styles.xml themes.xml文件中资源链接跳转,可以方便跳转到某个资源(3) 方便查找某个style和theme。chrome地址栏输入arn+tab+搜索内容回车即可(4) 自动下载不同分辨率下的drawable(5) 通过映射查找那些不是按照固定命名规则命名的style和theme项目地址:在线演示:android-resource-remover
根据lint的提示删除项目中无用的资源,减少包的大小项目地址:Telescope
通过手势截图以特定主题发送到特定邮箱地址报告Bug项目地址:Complete Android Fragment & Activity Lifecycle
完整的Android Fragment/Activity生命周期图项目地址:
第五部分
主要介绍那些乐于分享并且有一些很不错的开源项目的个人和组织。Follow大神,深挖大神的项目和following,你会发现很多。
一、个人
JakeWharton
就职于Square,绝对牛逼的大神,项目主要集中在Android版本兼容,ViewPager及开发工具上Github地址:代表作:ActionBarSherlock,Android-ViewPagerIndicator,Nine Old Androids,SwipeToDismissNOA,hugo,butterknife,Android- DirectionalViewPager, scalpelpidcat另外对square及其他开源项目有很多贡献主页:Chris Banes
Github地址:代表作:ActionBar-PullToRefresh,PhotoView,Android-BitmapCache,Android-PullToRefresh主页:Koushik Dutta
就职于ClockworkModGithub地址:代表作:Superuser,AndroidAsync,UrlImageViewHelper,ion, 另外对的开源项目有很多贡献主页:Simon Vig
Github地址:代表作:android-menudrawer,MessageBar主页:Manuel Peinado
Github地址:代表作:FadingActionBar,GlassActionBar,RefreshActionItem,QuickReturnHeaderEmil Sj?lander
Github地址:代表作:StickyListHeaders,sprinkles,android-FlipView主页:greenrobot
Github地址:代表作:greenDAO,EventBus主页:Jeff Gilfelt
Github地址:代表作:android-mapviewballoons,android-viewbadger,android-actionbarstylegenerator,android-sqlite-asset-helper主页:Romain Guy
Android team成员(2013.10已离开Android team,仍在Google)Github地址:代表作:ViewServer主页:個人攝影作品:sephiroth74
就职于Aviary.comGithub地址:代表作:ImageViewZoom,HorizontalVariableListView,AndroidWheel,purePDF主页:Cyril Mottier
Google开发者专家认证,发布一些Android技巧及文章Github地址:代表作:GreenDroid,Polaris主页:
二、组织
Square
有态度有良心的企业,很多不错的分享Github地址:代表作:okhttp、fest-android,android-times-square、picasso、dagger、spoon等等主页:Inmite s.r.o.
Github地址:代表作:android-styled-dialogs,android-grid-wichterle,android-selector-chapek主页:
三、博客
Chet Haase
Android framework UI team 成员主页:
新增:
类似网易新闻 的tab栏
https://github.com/JakeWharton/ViewPagerIndicator
可拖拽的GridView
https://github.com/mrKlar/PagedDragDropGrid
https://github.com/xiaanming/DragGridView