Kardos's Blog

Happy coding

Thursday,April 21,2011-Eclipse_android_ApiDemo_学习2

6.App/Activity/Hello World

Demonstrates start normal an activity

7.App/Activity/Persistent State

Demonstrates preferences save,演示如何使用persistent preferences来保留切屏时原Activity的一些值,方便在切回时复原.

两点关键一为生命周期,OnResume()时读取数据,OnPause()时建立数据

        二为建立数据:SharedPreferences.Editor editor = getPreferences(0).edit();

                      editor.putString("text", mSaved.getText().toString());
                      editor.putInt("selection-start", mSaved.getSelectionStart());
                      editor.putInt("selection-end", mSaved.getSelectionEnd());
                      editor.commit();
            读取数据:SharedPreferences prefs = getPreferences(0); 
                      String restoredText = prefs.getString("text", null);
                      if (restoredText != null) {
                      mSaved.setText(restoredText, TextView.BufferType.EDITABLE);
 
                      int selectionStart = prefs.getInt("selection-start", -1);
                      int selectionEnd = prefs.getInt("selection-end", -1);
                      if (selectionStart != -1 && selectionEnd != -1) {
                          mSaved.setSelection(selectionStart, selectionEnd);
                      }
8.App/Activity/QuickContactsDemo
演示一个快速启动电话拨号的Activity.可以调取联系人资料然后直接拨号(看半天没看懂)
9.App/Activity/Receive Result
演示如何让第二个Activity向第一个activity返回时返回值.
这个例子由两个Activity组成:ReceiveResult运行pick activity且接收结果;SendResult可以让用户选择和发送回调的结果.实现这个功能涉及setResult()发送结果   onActivityResult()接收结果

按BACK键从一个Activity退出来的,一按BACK,android就会自动调用Activity的finish()方法,然后设置resultCode为RESULT_CANCELED,也就不会返回任何数据了 .解决方法就是在Activity里面捕获按BACK的事件,捕获到之后先setResult,然后自己来调用finish,就搞定了……把BACK事件直接自己给吞了:如果在startActivityForResult起来的Activity里面设置setResult,结果并不会马上返回给parent的Activity,只有当前Activity被finish,结果才会被发送给parent的onActivityResult去处理!

startActivityForResult(intent, requestCode)两个参数 一个是意图对象,另一个是请求代码。

这里的requestCode就是前面启动新Activity时的带过去的requestCode,而resultCode则关联上了setResult中的resultCode,data是参数,extras也是一个很重要的东西,后面再研究一下它的作用。

 

Wednesday,April 20,2011-Eclipse_android_ApiDemo_学习1

由于老版本的eclipse,最近大姨妈了,所以下载最新的eclipse 2011,下面有有关安装的重点:

   Eclipse 3.5插件安装与卸载的10个小窍门 http://developer.51cto.com/art/200907/136120.htm

   查看activity调用用adb shell   logcat

进入正题:

  1. App/Activity/Animation

可以学到不同activity直接动态跳转的设置,方法为

 

 public void overridePendingTransition (int enterAnim, int exitAnim)

Since: API Level 5

Call immediately after one of the flavors of startActivity(Intent) or finish() to specify an explicit transition animation to perform next.

Parameters
enterAnim A resource ID of the animation resource to use for the incoming activity. Use 0 for no animation.
exitAnim A resource ID of the animation resource to use for the outgoing activity. Use 0 for no animation. 

 

这个方法的参数有两部分,一部分是载入动画,部分是退出动画;载入动画是指下一个页面的载入方法,退出动画是指当前页面的退出方式,可以设置动画的持续时间长一些,来观察动画的整体过程

 2. App/Activity/Custom Dialog(1)

我们在开发程序是经常会需要软件全屏显示、自定义标题(使用按钮等控件)和其他的需求,今天这一讲就是如何控制Android应用程序的窗体显示.

演示如何编写一个类似弹出菜单的Activity.

建立一个 CustomDialogActivity.activity,在xml中模仿dialog设置参数即可(ugly frame)

 3. App/Activity/Custom Title

演示如何制作有左右标题的标题栏

启用窗体的扩展特性: requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

这是自己设置 Featrue:getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1);

 4. App/Activity/Dialog (2)

 

演示如何使用theme,对话框风格使你的activity看起来像一个对话框.

建立一个 DialogActivity.activity

启用窗体的扩展特性: requestWindowFeature(Window.FEATURE_LEFT_ICON);(测试启用title扩展也可以)

设置系统提供的窗体图片: getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, android.R.drawable.ic_dialog_alert);(布局可自定义)

 5. App/Activity/Forwarding

使某个Activity在task堆栈中终止,即按back按钮不能返回到这个Activity.

不需要返回值的启动另一个activity :    startActivity(intent);

   Intent intent = new Intent();

   intent.setClass(Forwarding.this, ForwardTarget.class);

   startActivity(intent);        

   finish();

Tuesday,April 19,2011-Eclipse_android_源码_追溯_方法

  1. Git 下载android framework 2.2 源码
  2. 打开Eclipse 创建一个Java项目叫android_src2.2
  3. 把eclipse工程配置文件复制到android源码根目录下
        cp development/ide/eclipse/.classpath ./
  4. 修改eclipse程序的配置
    1)、修改eclipse缓存设置
    把eclipse.ini(在eclipse软件的安装目录下)的3个值改为下面的值:
    -Xms128m
    -Xmx512m
    -XX:MaxPermSize=256m
    2)、把android-formatting.xml和android.importorder导入eclipse
    android-formatting.xml、.classpath和android.importorder都放在development/ide/eclipse/下
    android-formatting.xml用来配置eclipse编辑器的代码风格;android.importorder用来配置eclipse的import的顺序和结构。
    在window->preferences->java->Code style->Formatter中导入android-formatting.xml
    在window->preferences->java->Code style->Organize Imports中导入android.importorder
    把android源码作为一个工程导入eclipse
    导入前先检查.classpath里的文件在android源码中是否有相应的文件(文件夹),否则也会破坏android源码(一般是多添加文件/文件夹),.classpath里多余的路径可删除
    新建Java Project(不是android project,否则会破坏android源码),选择从已存在的工程导入,工程名任意,完成。
  5. 找出不能导入的代码,修改,删掉处理以便继续导入.
  6. 此时已经可以在本项目中查看库方法声明和实现(F3)或(Ctrl+鼠标左键)
  7. 鼠标右击,需要查看库的项目,单击属性(propreties),选择项目参考(project references),选择android_src2.2