知识小结(Android)

Android中的adb工具的使用

 adb(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作:
  1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;
  2、在设备上运行shell命令;
  3、管理设备或手机模拟器上的预定端口;
  4、在设备或手机模拟器上复制或粘贴文件;

平台分化可能导致Android平台退出历史舞台

Android平台开源,导致每个手机的配置并不一样,Android开发工程师们要买很多手机去测试自己的Android应用能否正常运行,是否存在bug。一个手机的测试就已经是很痛苦的事情了。这个手机测试数量可能是30,在将来可能是90,180也未可知。并且Android越是流行,采用Android的手机制造商越多,不是每个手机硬件都完美的。越多的次品将会给Android带来严重的负面效应。

 

【强大HTML5的移动Web应用或将一统天下】

可以用Rexsee(http://www.rexsee.com)等优秀的移动中间件产品将Web应用转换成Apk程序,作为原生的Android应用进行发布。
移动终端之所以风靡全球,除了强大的硬件特性之外,更关键的因素在于其庞大的移动应用软件。在目前看来,在AppStore和Android Market上的应用都是基于两大公司提供给第三方应用开发人员的SDK进行开发的。



【Flurry介绍及使用】

  • 完全免费
  • 提供准确的实时数据,服务稳定
  • 支持iphone、Java、Android、Blackberry平台,并将陆续推出Symbian和WM
  • 后台统计分析界面直观,可查看全球用户分布图等多项服务
  • 支持开发者定义事件(event),更好的追踪用户等

添加 FlurryAgent.jar 到你的classpath

 配置AndroidManifest.xml文件,添加权限 

    android.permission.INTERNET 

    android.permission.ACCESS_COARSE_LOCATION 
    android.permission.ACCESS_FINE_LOCATION
    在程序中使用 Flurry

import com.flurry.android.FlurryAgent;  
Map<String, String> map = new HashMap<String, String>();  
map.put("logout_desc", "username [" + user.name + "] logout");  
FlurryAgent.onEvent("user Logout", map);  
public void onStart() {  
    super.onStart();  
    FlurryAgent.onStartSession(this, FLURRY_API_KEY);  
}  
public void onStop() {  
    super.onStop();  
    FlurryAgent.onEndSession(this);  
}  

 【android.preference.PreferenceActivity】保存设置

界面XML文件:preference_setting.xml

<?xml version="1.0" encoding="UTF-8"?>  
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">  
    <PreferenceCategory android:title="我的位置源">  
        <CheckBoxPreference  
            android:key="my_wireless_network"  
            android:title="使用无线电"  
            android:summary="使用无线网络查看应用程序(例如Google地图)中的位置"  
        />  
        <CheckBoxPreference  
            android:key="my_gps_satellite_setting"  
            android:title="启用GPS卫星设置"  
            android:summary="定位时,精确到街道级别(取消选择可节约电量)"  
        />  
    </PreferenceCategory>  
      
    <PreferenceCategory android:title="个人信息设置">  
        <CheckBoxPreference  
            android:key="my_yesno_save_individual_info"  
            android:title="是否保存个人信息"  
        />  
        <EditTextPreference  
            android:key="my_individual_name"  
            android:title="姓名"  
            android:summary="请输入真实姓名"  
        />  
        <PreferenceScreen   
            android:key="my_other_individual_msg"  
            android:title="其他个人信息"  
            android:summary="是否工作、手机">  
            <CheckBoxPreference  
                android:key="my_is_an_employee"  
                android:title="是否工作"  
            />  
            <EditTextPreference  
                android:key="my_mobile"  
                android:title="手机"  
                android:summary="请输入您的手机号码"  
            />  
        </PreferenceScreen>  
    </PreferenceCategory>  
</PreferenceScreen> 

PreferenceActivity 的类文件:

package com.icitylife.preference;  
  
import android.content.SharedPreferences;  
import android.os.Bundle;  
import android.preference.Preference;  
import android.preference.PreferenceActivity;  
import android.preference.PreferenceScreen;  
import android.preference.Preference.OnPreferenceChangeListener;  
  
public class Main extends PreferenceActivity implements OnPreferenceChangeListener {  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        //设置PreferenceActivity保存数据使用的XML文件的名称   
        getPreferenceManager().setSharedPreferencesName("mySetting");  
        //加载XML资源文件:此处就不能使用Activity的setContentView()   
        addPreferencesFromResource(R.xml.preference_setting);  
        //获取【姓名】设置项对应的Preference对象   
        Preference  individualNamePreference=findPreference("my_individual_name");  
        //获得指向mySetting.xml文件的SharedPreference对象   
        SharedPreferences sharedPreferences=individualNamePreference.getSharedPreferences();  
        //设置【姓名】设置项的summary   
        individualNamePreference.setSummary(sharedPreferences.getString("my_individual_name",""));  
        //判断【是否保存个人信息】设置项是否被选中   
        if(sharedPreferences.getBoolean("my_yesno_save_individual_info",false)){  
            individualNamePreference.setEnabled(true);  
        }else{  
            individualNamePreference.setEnabled(false);  
        }  
        individualNamePreference.setOnPreferenceChangeListener(this);  
        //获得【电话号码】设置项对应的Preference对象   
        Preference mobileNamePreference=findPreference("my_mobile");  
        SharedPreferences mobileSharedPreferences=mobileNamePreference.getSharedPreferences();  
        //设置【电话号码】的summary   
        mobileNamePreference.setSummary(mobileSharedPreferences.getString("my_mobile",""));  
        mobileNamePreference.setOnPreferenceChangeListener(this);  
    }  
  
    @Override  
    public boolean onPreferenceChange(Preference preference, Object newValue) {  
        preference.setSummary(String.valueOf(newValue));  
        return true;  
    }  
      
    /** 
     * 处理【是否保存个人信息】的改变事件 
     */  
    @Override  
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,  
            Preference preference){  
        if("my_yesno_save_individual_info".equals(preference.getKey())){  
            findPreference("my_individual_name").setEnabled(!findPreference("my_individual_name").isEnabled());  
        }  
        return super.onPreferenceTreeClick(preferenceScreen, preference);  
    }  
}  

【android的selector背景选择器 】

Android selector选择器可以让你切换自定义的背景风格,比如button、ListView、或者布局点击时候的背景切换等,都需要用到它背景可以是自定义到颜色,或者图片资源

把下面的XML文件保存成你自己命名的.xml文件(比如list_item_bg.xml),在系统使用时根据ListView中的列表项的状态来使用相应的背景图片。

drawable/list_item_bg.xml

<?xml version="1.0" encoding="utf-8" ?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 默认时的背景图片-->

    <item android:drawable="@drawable/pic1" />

    <!-- 没有焦点时的背景图片-->

    <item android:state_window_focused="false" android:drawable="@drawable/pic1" />

    <!-- 非触摸模式下获得焦点并单击时的背景图片-->

    <item android:state_focused="true" android:state_pressed="true"

        android:drawable="@drawable/pic2" />

    <!-- 触摸模式下单击时的背景图片-->

    <item android:state_focused="false" android:state_pressed="true"

        android:drawable="@drawable/pic3" />

    <!--选中时的图片背景-->

    <item android:state_selected="true" android:drawable="@drawable/pic4" />

    <!--获得焦点时的图片背景-->

    <item android:state_focused="true" android:drawable="@drawable/pic5" />

</selector>

使用些xml文件:第一种是在listview中配置android:listSelector="@drawable/list_item_bg"

或者在listview的item中添加属性android:background=“@drawable/list_item_bg"即可实现,或者在java代码中使用:Drawable drawable = getResources().getDrawable(R.drawable.list_item_bg); ListView.setSelector(drawable);同样的效果

 

 【AchartEngine 】

AChartEngine(简称ACE)是Google的一个开源图表库(for Android)。它功能强大,支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。


 【jQuery Mobile 】

 jQuery Mobile 是jQuery 在手机上和平板设备上的版本。jQuery Mobile 不仅会给主流移动平台带来jQuery核心库,而且会发布一个完整统一的jQuery移动UI框架。支持全球主流的移动平台。jQuery Mobile开发团队说:能开发这个项目,我们非常兴奋。移动Web太需要一个跨浏览器的框架,让开发人员开发出真正的移动Web网站。

 【ViewSwitcher 】

使用ViewSwitcher实现ListView的数据动态加载

 【Layout_width="match_parent" 】

"match_parent"(在API level 8之前被称之为"fill_parent"),控件的高度和宽度将和父控件的大小一样。

 【 DefaultHandler】

sax解析xml文件的DefaultHandler处理类

 【AsyncTask对比Thread加Handler】

从Android 1.5开始系统 将AsyncTask引入到android .os包中

使用AsyncTask代替Thread+Handler的方式,不仅调用上更为简单,经过实测更可靠一些,Google在Browser中大量使用了异步任务 作为处理耗时的I/O操作,比如下载文件 、读写数据 库等等,它们在本质上都离不开消息,但是AsyncTask相比Thread加Handler更为可靠,更易于维护,但AsyncTask缺点也是有的比如一旦线程开启即dobackground方法执行后无法给线程发送消息,仅能通过预先设置 好的标记来控制逻辑,当然可以通过线程的挂起等待标志位的改变来通讯,对于某些应用Thread和Handler以及Looper可能更灵活。

 【Android读写XML 】

Android读写XML主要有2种方法:DOM与SAX(Simple API for XML)

DOM(文档对象模型),为XML文档的解析定义了一组接口,解析器读入整个文档,然后构造一个驻留内存的树结构,然后代码就可以使用DOM接口来操组整个树结构,其他点如下:

  • 优点:整个文档树都在内存当中,便于操作;支持删除、修改、重新排列等多功能。
  • 缺点:将整个文档调入内存(经常包含大量无用的节点),浪费时间和空间。
  • 使用场合:一旦解析了文档还需要多次访问这些数据,而且资源比较充足(如内存、CPU等)。

为了解决DOM解析XML引起的这些问题,出现了SAX。SAX解析XML文档为事件驱动,详细说明请阅读Android读写XML(中)–SAX。当解析器发现元素开始、元素结束,文本、文档的开始或者结束时,发送事件,在程序中编写响应这些事件的代码,其特点如下:

  • 优点:不用事先调入整个文档,占用资源少。尤其在嵌入式环境中,极力推荐采用SAX进行解析XML文档。
  • 缺点:不像DOM一样将文档长期驻留在内存,数据不是持久的,事件过后,如没有保存数据,那么数据就会丢失。
  • 使用场合:机器性能有限,尤其是在嵌入式环境,如Android,极力推荐采用SAX进行解析XML文档。

在 Android 上使用 XML

 

【Android拆分函数split】

如果使用"."、"|"、"^"等字符做分隔符时,要写成s3.split("//|")的格式,否则不能拆分

 

Android应用签名

 

【Android DatePicker】

 getMonth ()
获取选择的月份。(注意:返回数值为0..11,需要自己+1来显示)


 

【Android源码下载】

贡献15本pdf完整版经典Android教程和海量Android源码

 

DEVDIV

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值