名称 | 描述 |
---|---|
actionbar01 | 主要actionbar的显示隐藏控制,以及最基础的使用且没用到xml来加载菜单 |
actionbar02 | 主要actionbar的位置控制(底部) |
actionbar03 | 主要actionbar添加搜索视图 |
actionbar04 | 主要actionbar添加默认actionProvide (分享按钮) |
actionbar05 | 主要添加自定义actionProvide(自定义二级菜单) |
actionbar06 | 主要添加tab+ fragment |
Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)
Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)
Android Working with Action Bar
借助第三方库SlidingMenu,组合+Fragment实现。
通过SlidingMenu+Fragment实现当前最流行的侧滑
利用PreferenceFragment进行实现
Using PreferenceFragment to Store User Preferences
Android: Using Switch Preference pre API level 14
多任务异步下载,自定义scrollView,图片压缩等
网络图片/sd卡图片/资源图片 -----BitmapFactory----> BitMap
当然为了避免OO,在生成BitMap的之前(在分配内存之前),合理压缩图片的大小。一般情况下都会指定高度和宽度进行图片现实。
Android异步消息处理机制完全解析,带你从源码的角度彻底理解
Android AsyncTask完全解析,带你从源码的角度彻底理解
名称 | 描述 |
---|---|
TabActivity01 | 借助TabActivity实现旧的tab页切换demo1 |
TabActivity02 | 借助TabActivity实现旧的tab页切换demo2 |
TabActivity03 | 组合 TabHost + Fragment 实现tab页切换,并且将其置于视图底部 |
设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。
String/Json/Gson
图片
不要在广播中添加过多的逻辑或者进行任何耗时的操作,因为在广播中不允许开启线程的,当onReceive方法运行了较长时间而没有结束,程序就回报错。 因此,一般建议在广播接收器中完成打开程序或者组建的角色。
系统广播之网络状态变更广播【动态注册】
系统广播之系统启动广播【静态注册】
自定义广播【静态注册】
自定义广播之发送有序广播【静态注册】
自定义本地广播之发送标准广播【动态注册】
-
在原有布局上添加新的子元素
-
动态修改子元素margin
Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色。它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务。必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持运行状态。
简单使用Activity启动Service
指定Service执行某具体任务
Service内创建子线程来执行任务
防止内存不足而被回收,而前台service不会被回收
跨进程共享Service(demo略)
综合了标准service以及自动关闭service(stopself)的优点而出现的
两种方案:
无需setRepeating
需要setRepeating
关于service生命周期
Android Service完全解析,关于服务你所需知道的一切(上)
Android Service完全解析,关于服务你所需知道的一切(下)
有一个耗时的操作(例如,网络读取数据或者本地读取较大文件),并同时需要根据所得数据进行UI操作。如果放在主线程中(UI线程),那么app会出现"强制关闭"的错误,因此只能放在子线程中。但是问题又来了,主线程(UI线程)是非线程安全的,因此如果在子线程中同时进行UI操作,那么程序容易奔溃。
为此我们使用异步消息处理机制来解决该问题(Thread + Handler)。
Android异步消息处理机制完全解析,带你从源码的角度彻底理解
耗时操作必须在子线程操作否则会堵塞主线程。然而正因为在子线程中操作,网络请求返回的结果不可能直接通过return返回()。为此引进回调机制。
《第一行代码》(网络编程章节)
使用一个placeholder视图作为占位,高度和宽度与真正需要显示的sticky视图完全一致。对于滚动操作,这里有两种情况需要处理。
第一:滚动没有超出占位所在的Y位置时,那么不需要置顶固定,只需要显示在占位视图所在的位置。
第二:滚动超出占位所在Y位置时,那么则需要置顶固定。
实现的时候分别取占位的getTop和getScrollY。
有空深入--!
Android View坐标getLeft, getRight, getTop, getBottom解惑
图解Android View的scrollTo(),scrollBy(),getScrollX(), getScrollY()
延伸:
解决: viewHolder以及重用view解决
解决:在Button控件定义中追加
android:focusable="false" android:focusableInTouchMode="false"
重绘和刷新的区别
重绘:重新设置adapter,便会重绘ListView。滚动条位置重置。
刷新:只改变adapter数据,则不会重绘ListView,会刷新。滚动条位置不变。
目的:利用泛型和抽象使得代码更清爽
引用第三方项目(含资源文件)难点:
Intellij如何引用第三方项目作为主项目使用
Step:
1: 先将其以modlue方式导入
2:将其在Facets中将其设置为Library module
3: 设置原项目的Dependences添加该module
按钮响应以及按钮样式 帮助文档
定义键盘的表现形式(InputType),定制键盘指定的Action,创建自动提(AutoCompleteTextView)
注:inputType中的textCapSentences|textCapWords在4.2上没有作用。经验证其他同仁也又类似问题发生。
Android library for using the Honeycomb (Android 3.0) animation API on all versions of the platform back to 1.0!
-
旋转,渐变,滑动等基础动画使用
-
动画菜单最佳实践
Android动画进阶—使用开源动画库nineoldandroids 官网
- 自定义标题栏
数据的持久化方案:将数据保存到存储设备上。
1、 批量插入
效率:
不开启事务 < 开启事务 < 开启事务 + Statement
2、cursor的关闭(防止内存泄漏)
cursor关闭不了的情况:在close之前抛出异常。
参考:
Android学习系列(32)--App调试内存泄露之Cursor篇 How to properly close a cursor in android Android 中的 SQLite 数据库支持
3、database如何关闭
查了较多资料,感觉没有明确的指出database是否该关闭。暂且搁置。
参考:
SQLiteDatabase close() function causing NullPointerException when multiple threads
注:生成SQLiteDataBase实例必须引入上下文,因此在Activity层进行Dao的实例化。
参考:
1.github:litepal 2.blog:Android数据库高手秘籍(二)——创建表和LitePal的基本用法