知识点
Animator
- 参考文章
AsyncTask
ContentObserver
ExifInterface
GradientDrawable
- 参考文章
IntentService
- Android开发艺术-P403 参考文章
- 简单使用
- 创建Service继承自IntentService
- 覆写构造方法和onHandlerIntent()方法
- 在onHandlerIntent()中执行耗时操作
Logger + FileHandler + Formatter 保存日志到文件
- Demo
- 参考文章
快速使用:
通过name获取Logger
// 通过name获取Logger,同一个name的Logger只创建一个 mLogger = Logger.getLogger(TAG);
创建FileHandler对象
/* Handler 对象从 Logger 中获取日志信息,并将这些信息导出。 例如,它可将这些信息写入控制台或文件中,也可以将这些信息发送到网络日志服务中,或将其转发到操作系统日志中。 每个日志记录 Handler 都有关联的 Formatter。Formatter 接受 LogRecord,并将它转换为一个字符串 */ mFileHandler = new FileHandler(logFilePath, FILE_SIZE, FILE_COUNT, true);
设置Formatter转换格式
mFileHandler.setFormatter(new Formatter() { @Override public String format(LogRecord record) { return record.getLevel() + "/" + TAG + ": " + record.getMessage(); } });
设置FileHandler
mLogger.addHandler(mFileHandler);
输出log
// 使用Logger输出log mLogger.info("这是使用Logger输出的第 " + mId.incrementAndGet() + "条log" + "\n");
OnDragListener
RecylcerView Animator
- 参考文章
Shortcut
SwipeRefreshLayout
TabLayout + ViewPager + FragmentStatePagerAdapter
TextView(AutoCompleteTextView / InputFilter)
ViewStub
WeakReference弱引用
WebView
Xml解析
模式
- 单例模式
框架
Butter Knife
Gson
Otto 事件总线(Deprecated. Try use RxBus)
- Github
- Demo
- 参考文章
快速使用:
使用饿汉单例模式提供对象
// 可以继承重写post方法,实现主线程事件总线 private static Bus mBus = new Bus(); public static Bus getBus() { return mBus; }
订阅者和发布者都需要先注册并记得取消注册
// 注册 MyApplication.getBus().register(this) // 取消注册 MyApplication.getBus().unregister(this)
@Subscribe进行订阅,参数即订阅的内容,可以是任意类型
@Subscribe public void onPost(Object obj) { ... }
发布
MyApplication.getBus().post(msg);
Universal-Image-Loader(很久没更新)
Volley
- Github
- 参考文章