android环境搭建以及一些注意事项

Adriod官方站:http://developer.android.com/index.html

Andriod源代码下载网站:http://rgruet.free.fr/public/

环境搭建

1.安装成功Eclipse之后,需要安装ADT (AndroidDevelopment Tools)

启动动Eclipse后,选择Help->Install New Software

然后添加ADT plus-in网址:https://dl-ssl.google.com/android/eclipse/(如果这个网址不行将https改为http)

然后选择并安装Android DDMS(Android Dalvik Debug Moniter Server)和Android Development Tools(ADT)

See http://developer.android.com/sdk/eclipse-adt.html

 

2.下载sdk 我选择在线安装的版本android-sdk_r05-windows.zip(22M) 点击 SDK Setup.exe安装android tools后重启程序后 选择available paclages 选择需要下载的sdk

 

3配置 Eclipse 里的 ADT,使其指向 AndroidSDK 。

选取 Eclipse Window > Preferences... 选择 Android. 点击 Browse... 定位 Android SDK 目录。(即android-sdk_r05-windows.zip安装包中解压下来的android-sdk-windows文件夹目录) 点击 Apply, 然后 OK.

 

4创建虚拟设备

运行 Eclipse, 选取 Window > Android SDK and AVD Manager.

在左侧面板选择 Virtual Devices-> New.

出现 Create New AVD 对话框

输入 AVD 名字, 例如 "my_avd".

选取一个目标。目标是一个平台 (即,Android SDK 的版本,如 2.2)

暂时忽略其他设置

点击 Create AVD.

 

生命周期:

一个Activity1 创建后 执行顺序Activity1.onCreate->Activity1 .onStart->Activity1 onResume   如果这时候切换到其他Activity  比如Activity2 那么继续执行

Activity1.onPause->Activity2.onCreate->Activity2.onStart->Activity2.onResume->Activity1.onStop->Activity1.onDestroy

 

注意:Activity销毁 是经历onPause,onStop,onDestroy

Activity切换 是先让第一个Actiity暂停 然后第二个Activity 创建好了才销毁第一个Activity

onCreate(Bundle savedInstanceState)中 参数的作用

在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有 种机制,能保存当时的状态,这就是savedInstanceState的作用。 当一个Activity在PAUSE时,被kill之前,它可以调用onSaveInstanceState()来保存当前activity的状态信息 (在paused状态时,要被KILLED的时候)。用来保存状态信息的Bundle会同时传给两个method,即 onRestoreInstanceState() andonCreate().

与SharedPreferences的区别  SharedPreferences是简单的存储持久化的设置,就像用户每次打开应用程序时的主页,它只是一些简单的键值对来操作。它将数据保存在一个xml文件中 Bundle是将数据传递到另一个上下文中或保存或回复你自己状态的数据存储方式。它的数据不是持久化状态。

 

 

 

 

 

事件处理:

对于控件的事件和j2se 类似

    另外android 还可以对view进行监听

重写方法

按键按下所触发的事件 public boolean onKeyDown(int keyCode, KeyEvent event)

按键弹起所触发的事件 public boolean onKeyUp(int keyCode, KeyEvent event)

按钮重复点击 public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEventevent)

触笔事件 public boolean onTouchEvent(MotionEvent event)

 

 

 

UI设计

本身自带UI设计 可是不太好用

网上有一款开源的小工具DroidDraw 非常好用 下载地址:http://www.droiddraw.org/

 

findViewById 方法可以获得xml里面的view 需要注意的是

他只能获得调用这个方法的view里面的对象 在activity中 就是 onCreate(Bundle).中使用的xml的视图 就是setContentView(R.layout.main);中作为参数的xml中的view 

可以 通过

LayoutInflater inflater = LayoutInflater.from(context);

view = inflater.inflate(R.layout.main, null);

view. findViewById(R.id.image);

获得需要的其他xml中的 view对象

   

 

 

生命周期:

一个Activity1 创建后 执行顺序Activity1.onCreate->Activity1 .onStart->Activity1 onResume   如果这时候切换到其他Activity  比如Activity2 那么继续执行

Activity1.onPause->Activity2.onCreate->Activity2.onStart->Activity2.onResume->Activity1.onStop->Activity1.onDestroy

 

注意:Activity销毁 是经历onPause,onStop,onDestroy

Activity切换 是先让第一个Actiity暂停 然后第二个Activity 创建好了才销毁第一个Activity

onCreate(Bundle savedInstanceState)中 参数的作用

在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有 种机制,能保存当时的状态,这就是savedInstanceState的作用。 当一个Activity在PAUSE时,被kill之前,它可以调用onSaveInstanceState()来保存当前activity的状态信息 (在paused状态时,要被KILLED的时候)。用来保存状态信息的Bundle会同时传给两个method,即 onRestoreInstanceState() andonCreate().

与SharedPreferences的区别  SharedPreferences是简单的存储持久化的设置,就像用户每次打开应用程序时的主页,它只是一些简单的键值对来操作。它将数据保存在一个xml文件中 Bundle是将数据传递到另一个上下文中或保存或回复你自己状态的数据存储方式。它的数据不是持久化状态。

 

 

关于导入第三方包

错误的导入是:右键工程--Build path---java build path--libraries--“Add Library”---“Userlibrary---“User librarys”--“New..”--起了个amsck的名---“Addjars”添加asmack包。

这样不会导入到APK中去

导入改为:右键工程--Build path---java build path-- add External Archives

 

要使用http  android必须加入权限  在AndroidManifest.xml文件中加入

<uses-permissionandroid:name="android.permission.INTERNET" />

 

使用Gson 对集合对象序列化反序列化事 Gson使用的是LinledList 转化的所以 类里声明的对象必须是LinledList或者它的接口

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1、 一个好的Andriod博客:

http://www.android123.com.cn/

http://www.android123.com.cn/kaifafaq/531.html

http://www.beijibear.com

http://blog.csdn.net/hellogv/article/details/4548659(非常棒的原创blog)

 

2、  一个Andriod资源相关网站:

http://www.android123.com/

API Level对照表,更新至2.3.3

http://www.android123.com.cn/androidkaifa/789.html

  Google近期更新Android SDK频率加快,很多网友还不知道API Level 10是多少,还有就是Android 3.0 honeycomb的API Level又是多少呢? 下面Android123整理出最新的SDK API版本号对照表:

Android 3.0 – honeycomb

Android 2.3.3 - API Level 10

    Android 2.3 - API Level 9

    2.2 - 8

    2.1 - 7

    2..0.1 - 6

    2.0 - 5

    1.6 - 4

    1.5 -3

    1.1 - 2

   Android 1.0 - API Level 1

   怎么样,是不是很多版本的SDK你没有用过,不过一般开发而言目前90%的Android设备运行在2.0以上的固件,如果考虑99%兼容使用1.5 Level 3的SDK,如果兼容90%的固件可以考虑冒险使用2.0 Level 5的SDK,不过Android开发网提示大家很多国内山寨的Android平板使用的固件版本低于2.0,以及部分低端Android山寨机型固件一直停留在1.5、1.6,如果你的应用主要针对国外,使用高版本的2.0的SDK开始可以。

 

Android 3.0 SDK如何安装呢?

时间:2011-02-19来源:Android之家 作者:Android之家开发频道 点击:1031次

很多开发者可能发现appspot.com的Android开发站点也被和谐了,那么Android3.0 SDK如何安装呢?今天告诉大家如何通过现有的SDK来自动下载安装Android 3.0honeycomb SDK。

             很多开发者可能发现appspot.com的Android开发站点也被和谐了,那么Android 3.0 SDK如何安装呢? 今天告诉大家如何通过现有的SDK来自动下载安装Android 3.0 honeycomb SDK。

               1. 如果你没有老版本的SDK,可以先在 Android开发包下载  页面下载 SDK Setup 工具、Eclipse、JDK这3个东西搭建好Android开发环境。(已有老版本的开发环境可以略过此步)

   2. 对于新的SDK,我们习惯性的更新ADT插件,在Eclipse中菜单中找到Help=>Software Updates=>Find and Install,接下来在新弹出的对话框中选择第二项Search for new features to install,


   然后单击Next进行下一步操作,接着在Sites to include in search中找到你安装ADT插件时起的名称,如图


  单击Finish,这时ADT插件会自动下载进行更新,使用Android 3.0 SDK的ADT插件版本号为9.0.0至少。

   3.  下载SDK更新

   在Eclipse的工具栏中找到Opens the Android SDK and AVD Manager按钮,如图:

  

  接下来在Android SDK and AVD Manager对话框中选择左边的Available packages,右边在Android Repository中,勾选Android SDK Tools, revision 9等等前四个,其中Honeycomb字样的就是3.0 SDK,如图

  

  接下来单击Install Selected后SDK会自动下载安装,最终重新启动你的Eclipse就下载安装好Android 3.0 SDK了。

(责任编辑:Android之家)

 

 

 

 

各种问题集锦

    1、Andriod的SDK不能安装在中文目录,否则出现以下错误而无法启动模拟器:

 

2、关于书中例子3.2  查询联系人的方法在 android2.0 以后有区别(老的查号码方式新版用不了!)

android2.2的例子(JS在2.1上测试通过):

       //得到ContentResolver对象

              ContentResolvercr = getContentResolver();

              //取得电话本中开始一项的光标

              Cursorcursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,

                            null,null, null);

              //向下移动一下光标

              //遍历通讯录

//            ArrayList<HashMap<String,Object>> listItem = new ArrayList<HashMap<String, Object>>();

              for(int i = 0; i < cursor.getCount(); i++) {

                     cursor.moveToPosition(i);

                     //取得联系人名字

                     intnameFieldColumnIndex = cursor

                                   .getColumnIndex(PhoneLookup.DISPLAY_NAME);

                     Stringname = cursor.getString(nameFieldColumnIndex);

                     //取得联系人ID

                     StringcontactId = cursor.getString(cursor

                                   .getColumnIndex(ContactsContract.Contacts._ID));

                     Cursorphone = cr.query(

                                   ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,

                                   ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = "

                                                 +contactId, null, null);

 

                     Stringnumber = "";

                     //取得电话号码(可能存在多个号码)

                     for(int j = 0; j < phone.getCount(); j++) {

                            phone.moveToPosition(j);

                            StringstrPhoneNumber = phone

                                          .getString(phone

                                                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                            if(j > 0) {

                                   number+= " , ";

                            }

                            number+= strPhoneNumber;

                     }

                     phone.close();

                     string+= (name+":"+number+"\n");

              }

              cursor.close();

              //设置TextView显示的内容

              tv.setText(string);

 

老例子是:

        Stringname = csr.getString(csr.getColumnIndex(PhoneLookup.DISPLAY_NAME));

        String num =csr.getString(csr.getColumnIndex(PhoneLookup.HAS_PHONE_NUMBER));

估计Andriod老版本里设计的不像像版本一个人多个号码,那时是一个人一个号,现在现在在新版本里老代码用不了!

----------------------------------------------------------------------------------------------------------------------------------

 

 

 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值