1. 环境搭建

Ubuntu+eclipse+ADT

2. Android 启动很慢?

没办法,确实是很慢,等着吧,普遍说法是启动第一次后不关闭,以后的就是部署了要快不少的,经测试,确实是要快一些的。最不能让我接受的是居然连点击Home键都是很慢的呢。

3.R.layout.main cannot be resolved

刚写了一行就出了这么个错误,让我没有一点脾气的来查找原因。

解决方案:

(1)删除第三行的“import android.R” 注:我不知道是什么时候加进来的。

(2)勾选Eclipse中的“Project->Build Automatically”

原因分析:

(1)删除“import andorid R”之后工程就是从/res文件夹下自动生成哦资源我呢间里去解析了,否则它会从Android的资源类里去找。

使用Eclipse进行Java开发,我们首先要注意到它的编译是智能的,进入Preferences 并启用动态构建(workbench>Build automatically)。这样的话,当我们每次保存文件时,Eclipse将会自动编译该文嘉以及依赖于该文件的文件。因此,当我们想运行应用程序的时候,它基本已经保存好并且是最新版本了。在处理大型代码量时,着可以节约不少时间。

4.关于布局

买来的书是基于以前版本的(Android SDK 1.0r2),对控件的布局还是android:layout_x=”61px”,现在已经要android:layout_marginLeft=”61px” 这样写了,不然不起作用的。好奇的是还必须是px值,不然编译器就报错了,编译器还能识别字符串里的内容!果然强大。

5. 要在TextView中显示网址需要在TextView节点中加入android:autoLink = “all”

6. 常数(res\values) 这个文件夹下定义项目中要用到的所有常数,预先定义好,是编程的一个好习惯。例如:

(1)定义颜色常量(color.xml)

<?xml version="1.0" encoding="utf-8" ><resources><drawable name="darkgray">#808080FF</drawable><drawable name="white">#FFFFFFFF</drawable></resources>

(2)定义字符串常量(strings.xml)

<?xml version="1.0" encoding="utf-8" ><resources><string  name="hello">Hello World Android</drawable><string name="app_name">Test Android </drawable><string  name="str_id">帐号</drawable><string name="str_pwd">密码</drawable></resources>

定义好了怎么用呢,有两种引用方式:

(1)标记引用:android:text=”@string/str_id”

(2)代码引用:

Resources resources = getBaseContenxt().getResources();Drawable HippoDrawable = resources.getDrawable(R.drawable.white);//String aa = resources.getString(R.string.app_name);//String bb = getString(R.string.app_name);TextView tv= (TextView)findViewByID(R.id.text);tv.setBackground(HippoDrawable);// 当然可以通过使用graphics.Color 这个android默认的颜色来使用,但是只有12种常见的颜色/×Color.BLACKColor.BLUEColor.CYANColor.DKGRAYColor.GRAYColor.GREENColor.LIGRAYColor.MAGENTAColor.RENColor.TRANSPARENTColor.WHITEColor.YELLOW×/
7.获取手机的分辨率
这个就是Android与ios的不同,这个系统被不同的手机厂商使用,造出的机器也就大小各异了,而苹果的系统只有他自己用,所以能做到统一。
DisplayMetrice dm = new DisplayMetrice();getWindowManager().getDefaultDisplay().getMetrice(dm);string strOpt="手机分辨率为:"dm.widthPixels + " x " + dm.heightPixels;

8.Style样式的定义

老是要一个个指定文字的大小,颜色也不是办法的啊,所以也就有类似CSS样式来登场了。样式表文件取名为:style.xml放在res/values/style.xml 位置

定义样式示例:

<?xml version="1.0" encoding="utf-8" ><resources><style name=DavidStyleText11><item name="android:textSize">18sp</item><item name="android:textColor">#EC9237</item></style><style name=DavidStyleText22><item name="android:textSize">18sp</item><item name="android:textColor">#EC9237</item><item name="android:fromAlphar">0.0</item><item name="android:toAlphar">0.0</item></style></resources>
怎么用呢?下面为main.xml文件中的两个TextView应用不同的样式。
<?xml version="1.0" encoding="utf-8" ><TextView style = "@style/DavidStyleTest11"/><TextView style = "@style/DavidStyleTest22"/>
8.页面切换
(1)在同一个Activity 中利用setContentView来置换页面(在res\layout\下定义main.xml 和mylayout.xml)
通过setContentView(R.layout.mylayout);setContentView(R.layout.main)来在两个layout中切换。在此有个优点:即所有的程序里的变量
都存在相同的状态,无论是类成员变量,类函数等,皆可以在一个Activiy的状态中直接取得,并没有参数传递的问题。
(2)调用另一个Activity
/× new 一个 Intent 对象,并指定要启动的Class×/Intent intent = new Intent();intent.setClass(TestAndroid.this,TestAndroid2.class);startActivity(intent);TestAndroid.this.finish();
当系统中新添加Activity时,必须在AndroidManifest.xml里定义一个新的activity:
<activity android:name=”TestAndroid2”></activity>
 否则系统将会因为找不到Activity而发生编译错误。
另外,当程序中出现两个以上的Activity时,系统要决定主程序是哪一支(entry point)
<activity android:name=”.TestAndroid” android:lable="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.catetory.LAUNCHER"/></intent-filter></activity>
其中有一行为<category android:name="android.intent.catetory.LAUNCHER"/> ,这就代表程序启动时候,会先启动这个Activity,
而不是其他的,这个是必须定义一个的,如果xml中没有一个定义了,那么程序将不会启动的。
(3)不同的Activity之间的数据传递
Intent intent = new Intent();intent.setClass(TestAndroid.this,TestAndroid2.class);//new 一个bundle对象,并将要传递的数据传入Bundle bundle = new Bundle();bundle.putDouble("height",height);bundle.putString("Sex",sex);//将Bundle对象assign给Intentintent.putExtras(bundle);startActivity(intent);TestAndroid.this.finish();
那么在TestAndroid2如何取得来自TestAndroid的数据呢,是这样子的
//取得Intent中的Bundle对象Bundle bunde = this.getIntent().getExtras();String sex = bunde.getString("Sex");double height = bunde.getDouble("height");

这样就取到数据了,除了上述简单的传递类型之外,还有String[]和ArrayList<String>等封装的方式。不知道能不能对Bundle 做C#中的扩展方法来传递自己的对象?需要研究一下。

(4)返回数据到前一个Activity

在第一个Activity这样开始数据初始化

Intent intent = new Intent();intent.setClass(TestAndroid.this,TestAndroid2.class);//new 一个bundle对象,并将要传递的数据传入Bundle bundle = new Bundle();bundle.putDouble("height",height);bundle.putString("Sex",sex);//将Bundle对象assign给Intentintent.putExtras(bundle);//调用Activity TestAndroid2startActivityForResult(intent,0);
在第二个Activity中取到数据后(按上一种方法取),使用完毕,这样返回
//返回result 回上一个activityTestAndroid2.this.setResult(RESULT_OK, intent);//结束这个activityTestAndroid2.this.finish();

回到第一个Activity是这样来取得返回的数据

//覆盖 onActivityResult()Protcted void onActivityResult(int requestCode,int resultCode,Intent data){switch(resultCode){ case: RESULT_OK:Bundle bunde = data.getExtras();String sex=bunde.getString("Sex");double height = bunde.getDouble("height");...}...}

如果要在次页面加上一个“回上页”的按钮,而非通过模拟器的回复键,且回上页后又能保留之前输入的相关信息,那么就必须使用startActivityForResult()来唤起一个Activity。利用这个方法,前一哦Activity1便会有一个等待次Activity2的返回,而返回的数据就可以达到我们想要的结果。

更多相关文章

  1. Android(安卓)Clipboard(复制/剪贴板)
  2. Android之Android的数据存储--File
  3. Android(安卓)JNI 使用的数据结构JNINativeMethod详解
  4. Android(安卓)Handler机制
  5. Android(安卓)NDK编译C/C++为so共享对象
  6. 【异步加载】Android(安卓)网络数据异步加载解决方案
  7. Android(安卓)中的XMPP 应用
  8. 秒懂Android注解处理器(Android(安卓)Annotation Processor)
  9. Android(安卓)性能优化(二)Handler运行机制原理,源码分析

随机推荐

  1. 在Eclipse中加入Android源码
  2. 【腾讯开源】Android性能测试工具APT使用
  3. android用贝塞尔曲线完成viewpager轮播指
  4. Git | 上传 Android(安卓)项目到 GitHub
  5. Android(安卓)- 分享内容 - 给其他APP发
  6. Android(安卓)使用 Usb Accessory 模式与
  7. 一个Android应用的汉化的技术
  8. android 调用系统相册选取照片或者打开相
  9. Android(安卓)事件传递流程 - 基于WMS、I
  10. Android(安卓)Loader 机制浅谈