Android应用开发的几个小技巧

来源:互联网 发布:矩阵a与b相似 编辑:程序博客网 时间:2024/03/28 19:42

Android应用开发的几个小技巧

 

       本人在开发Android版手机离线地图应用程序中的几个小经验,拿出来和大家分享。

 

1、  AndroidAdb shell下常用的命令

ls : 列出目录下的文件项(相当于DOS下的dir

 

        ls -l 列出详细目录信息

        ls -R 列出系统中的所有文件

       

cat :查看文本文件内容

 

        cat text1.txt 查看text1的文件内容,ctrl + D,退出cat状态

 

rm :删除文件

mkdir :建立目录

rmdir :删除目录

 

2、  Android下的文件读写

使用Context关联的文件输入输出流是指向应用私有文件夹下的,比如:打开:

/data/data/应用名/files/数据文件.dat,可以直接使用:

       Context.openFileInput(“数据文件.dat”)将文件打开成输入流,或:

       Context.openFileOutput(“数据文件.dat”)将文件打开成输出流。

 

注意:这里的文件是直接使用文件名,没有前面的路径。

如果要想打开成随机输入输出文件流,使用RandomAccessFilefilemode)函数此时使用的文件名则必须是全路径文件名:

 

        RandomAccessFile/data/data/应用名/files/数据文件.dat,“rw”);

 

在使用RandomAccessFile()函数打开文件之前一般应该用Filefile)类检查一下文件是否存在,以保证打开的可靠性。

 

3、  Android下读取Windows下文件数据的整数、浮点数的转换问题

 

android下读取整数,浮点数,有时需要调序,因为Windows下写的数据文件一般是低位在前,高位在后,而android中使用的数据是高位在前,低位在后,也就是通常所说的big_end。为此androidInteger类中给出了一个方法reverseBytes(),对于整数和长整数可以直接调序,对于double则需要先读成long型整数(8B),使用long.reverseBytes()调序后,再使用Double.longBitsToDouble(long)转换长整数到Double

 

4、  关于Button等控件的焦点,有时对于屏幕上的Button等控件,需要禁止其接收焦点,以保证键盘按键的特殊服务功能。一般禁止焦点,使用Buttonfocusablefocusable in touch mode,但有时这还不够,还需要设置Descendant focusability = blockdDescendants,也就是要阻止焦点的传递,比如ZoomControls控件的禁止焦点过程。

 

5、  图片的背景透明处理,这里讲的背景透明,不是整个图片的透明,而是部分指定Pixels的透明那个。也就是说图片的背景部分需要透明,而前景部分正常显示,就像Button上的图片,其背景的灰色是处理成透明颜色的。这样看上去才没有背景方框。在Android下,编一个小程序进行转换即可:

 

private boolean ImgTransparentToView(ImageView Img,int clr){

 

    Bitmap bmp =

BitmapFactory.decodeResource(getResources(),R.drawable.wait);

    int i,j;

    int w = bmp.getWidth();

    int h = bmp.getHeight();

    int[] Pixs = new int[w * h];

    bmp.getPixels(Pixs, 0, w, 0, 0, w, h);

    int TmpClr = clr & 0x00ffffff;//Alpha = 0;

 

    for(j = 0; j < (h - 1); j ++){

       for(i = 0; i < w; i++){

           if(Pixs[j * w + i] == clr)

              Pixs[j * w + i] = TmpClr;

       }

    }

    Bitmapbmp1=Bitmap.createBitmap(Pixs, w, h, Config.ARGB_8888);

    Img.setImageBitmap(bmp1);

    return true;

}

 

以上是本人在编写“离线地图应用”时遇到的小问题,确实花费了一些时间才解决,看起来非常简单,如果你不知道,也许会引起麻烦。

 

本人编写了几款程序,除了《手机离线地图GPS定位》,还有《反应测试》《对比反应速度测试》等,在编写过成中的一些教训,写出来,供各位参考。

 

2011-4-25

ch2zh1@tom.com