ListView之BaseAdapter详解

ListView是安卓中使用最重要的控件之一。实现ListView可以通过多种Adapter来完成。本文以BaseAdapter为例讲述ListView的用法,重点在于分析getView方法。

首先,在主Activity里初始化listview,同时在主Activity里建立内部类继承BaseAdapter(当然也可以新建一个文件在外面单独建立一个Adapter类或者直接建立匿名内部类)。
代码如下
MainActivity.java

普通广播和有序广播

安卓的广播分为普通广播和有序广播

  • 1.普通广播

    对于普通广播来说,多个Receiver都可以接收到同一条广播
    同样拿检测飞行模式的例子来示范,先新建三个Receiver类,实现onReceiver方法,除了第二个类中多了一个abortBroadcast方法外,其他两个类都没有这个方法。下面给出第二个类的代码
    MyReceiver2.java

BroadcastReceiver

BroadcastReceiver也是安卓的四大组件之一,它负责接受安卓系统或者应用发出的广播。比如安卓自身会在手机电量快耗尽时发出广播,通过BroadcastReceiver,我们就能在应用中检测到电量即将耗尽;再比如想要在一个应用中检测到安卓系统是否处于飞行模式,,那么也可以使用BroadcastReceiver来接受安卓系统在切换飞行模式时候发出的广播,再例如想要实现应用开机自启动,也要靠接收开机时的广播,再比如检测网络状态变化等等。

这一组件的原理很简单:

广播源在特定时刻发出广播,通过静态注册或者动态注册广播源地址,使应用能接收到广播,然后应用通过继承BroadcastReceiver类重写onReceive方法来接收广播,一旦接收到广播,就会执行onReceive方法。

用java压缩图片

从网络上看到的一个很好的java压缩图片类,修改了下,使得更符合面向对象的编程习惯

首先在我的输入目录下有这样一张图片
示例图片

代码如下

imgDemo.java

1
2
3
4
5
public class ImgDemo {
public static void main(String[] args) {
new CompressPic("F:\\Desktop\\1.jpg","F:\\Desktop\\img\\","2.jpg",50,50,true);
}
}

CompressPic.java

进程内与Service通信

安卓的组件之间一般来说是不会有交流的,但是可以通过BindService的方式实现在Activity与Service的通信。这个通信的媒介就是IBinder。

例如有下面的需求:在Activity内”指挥”一个Service去播放一段音频,当Activity退出时就不再播放,即不支持后台。当用户进行某个操作之后,再点播放,音乐就支持后台。

代码如下:

MainActivity.java