Android入门基础:从这里开始
英文: http://developer.android.com/training/index.html
中文: http://hukai.me/android-training-course-in-chinese/basics/index.html
Intent的发送
验证是否有App去接收这个Intent
示例
Intent 返回结果
Android分享操作(Building Apps with Content Sharing)
给ActionBar增加分享功能 - Adding an Easy Share Action
更新菜单声明(Update Menu Declarations)
Set the Share Intent(设置分享的intent)
接收从其他App传送来的数据
可以与上个应用互测
过滤
Intent filters告诉Android系统一个程序愿意接受的数据类型。
处理接受到的数据(Handle the Incoming Content)
由于无法知道其他程序发送过来的数据内容是文本还是其他类型的数据,若数据量巨大,则需要大量处理时间,因此我们应避免在UI线程里面去处理那些获取到的数据。
拍照
请求使用相机权限
使用相机应用程序进行拍照
获取缩略图
将照片添加到相册中
解码一幅缩放图片
高效显示Bitmap
如何在加载并处理bitmaps的同时保持用户界面响应,防止超出内存限制。
高效的加载大图(Loading Large Bitmaps Efficiently)
如何解析很大的Bitmaps并且避免超出程序的内存限制。
非UI线程处理Bitmap(Processing Bitmaps Off the UI Thread)
处理Bitmap(裁剪,下载等操作)不能执行在主线程。这节课会带领你学习如何使用AsyncTask在后台线程对Bitmap进行处理,并解释如何处理并发带来的问题。
缓存Bitmaps(Caching Bitmaps)
如何使用内存与磁盘缓存来提升加载多张Bitmaps时的响应速度与流畅度。
管理Bitmap的内存使用(Managing Bitmap Memory)
如何管理Bitmap的内存占用,以此来提升程序的性能。
在UI上显示Bitmap(Displaying Bitmaps in Your UI)
这节课会综合之前章节的内容,演示如何在诸如ViewPager与GridView等控件中使用后台线程与缓存加载多张Bitmaps。
如何使用Android app framework绘制OpenGL图形并响应触摸。
如何给你的用户界面添加过渡动画。
View间渐变
学习在重叠View间的淡入淡出。作为一个例子,我们将会学习如何在一个进度条与一个包含了文本内容的View之间实现淡入淡出的效果。
用ViewPager实现屏幕滑动
学习怎样为水平相邻的界面提供滑动动画。
展示Card翻转动画
学习怎样实现两个View之间的翻转动画。
缩放View
学习怎样通过触控放大一个View。
布局变更动画
学习在增加、移除或更新子View时,怎样使用内置的动画效果。
执行网络操作
连接到网络
选择一个 HTTP Client, 推荐 HttpURLConnection
检查网络连接
在我们的 app 尝试连接网络之前,应通过函数 getActiveNetworkInfo() 和 isConnected() 检测当前网络是否可用。
在一个单独的线程中执行网络操作
网络操作会遇到不可预期的延迟。为了避免造成不好的用户体验,总是在 UI 线程之外单独的线程中执行网络操作。
AsyncTask 类提供了一种简单的方式来处理这个问题。
- doInBackground() 执行 downloadUrl() 方法。它以网页的 URL 作为参数,方法 downloadUrl() 获取并处理网页返回的数据。执行完毕后,返回一个结果字符串。
- onPostExecute() 接收结果字符串并把它显示到 UI 上。
主要处理流程
- 当用户点击按钮时调用 myClickHandler(),app 将指定的 URL 传给 AsyncTask 的子类 DownloadWebpageTask。
- AsyncTask 的 doInBackground() 方法调用 downloadUrl() 方法。
- downloadUrl() 方法以一个 URL 字符串作为参数,并用它创建一个 URL 对象。
- 这个 URL 对象被用来创建一个 HttpURLConnection。
- 一旦建立连接,HttpURLConnection 对象将获取网页的内容并得到一个 InputStream。
- InputStream 被传给 readIt() 方法,该方法将流转换成字符串。
- 最后,AsyncTask 的 onPostExecute() 方法将字符串展示在 main activity 的 UI 上。
连接并下载数据
InputStream 是一种可读的 byte 数据源。如果我们获得了一个 InputStream,通常会进行解码(decode)或者转换为目标数据类型。
下面会演示如何把 InputStream 转换为字符串,以便显示在 UI 上。