安卓黑马教程(四)

一,网页源码查看器

输入一个网站地址,获得网页的源码

httpUrlConnection:用于发送或者接受数据。


具体链接服务器逻辑:



把流转换成字符串的工具类:


注意,要加上一个联网的权限。


由于返回的内容太多,所以TextView显示不完全,而且不能滚动。这时就可以用到scrollView,此控件是可以滚动的。

ScrollView只能拥有一个孩子。但是,可以给一个布局文件给它,再在布局文件里加入多个控件。






二,消息机制的写法

【1】ANR异常:Application not response   应用无响应,也就是主线程(UI线程)操作耗时过长。

如果在主线程中进行了耗时操纵(连接网络,拷贝大的数据等等)。主线程不能阻塞,否则会报此错误。

NetworkOnMainThreadException异常:在系统4.0之后,谷歌强制要求连接网络不能在主线程进行访问。


修改上边的代码,把上边的代码放在一个新开的线程里边。但是,此时又会报错。

因为,只能在主线程中才能更新UI。  ---》tv_result.setText(context);    此语句就是更新UI线程




三,handler原理


handler--》助手的意思。

----》使用步骤

①在主线程定义一个Handler

②重写handlemessage方法

③在子线程发送消息

④发送消息之后,在handlemessage方法就会执行


handler的作用是用来发消息和处理消息的

looper的作用是去消队列里边取消息的

Looper是在主线程一创建,Looper就有了


注意:Toast也是一个view,不能在子线程使用。

安卓开发规则:不管什么版本的手机,只要做好使的操作(比如是连接网络,拷贝大数据等等)就自己开一个子线程,获取数据之后想要更新UI就使用Handler就可以了。




四,图片查看器

【1】把流信息转换成 bitmap对象

【2】使用bitmapFactory类,此类有许多方法

【3】加上访问网络访问权限


把输入流变成一个位图。




通过Message类的静态方法得到一个实例,这样不用new出来,效率更高。



缓存图片:




cache与filedir之间的区别:

cache一般用作于缓存。

代码:

filedir---》


cache---》



效果:


都在项目的文件夹下生成了对应的文件夹。

不过,在点击APP的chear  cache之后,cache文件夹被清空了,不过files文件夹还存在。

但是,点击了chear data(清除数据)之后,两个文件夹都没有了。


五,runOnUiThread写法

需求:在子线程发送消息给主线程更新UI。可以使用runOnUiThread的API。

修改代码如下:

如果在主线程处调用则立即执行,如果在子线程中调用则把这个操作加入到消息队里中。


同时也要把bitmap变成一个全局常量。


【1】如果仅仅更新UI,那么就用runOnUiThread就可以了

【2】如果是要携带数据到UI,则还是要使用Handler类。


六,常见消息API

API:应用开发的接口


Handler类:

---》postDelayed()方法

此方法接受一个runable接口和一个long的参数,前者表示一个子线程,后者表示这个子线程延迟多少毫秒后执行。相当于定时器:Timer 

注意:postDelayed方法是执行在UI线程中的,可以更新UI,但是使用Timer类的时候是在子线程执行的,不能更新UI。






七,新闻客户端








八,开源项目  smartiageview介绍

【1】把ser下的com包复制到项目中

【2】在布局定义的时候要使用完整的  包+类名称



九,smartiageview  原理介绍







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值