`
hwfantasy
  • 浏览: 20917 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Android开发学习笔记之一

阅读更多
   学习android也有一段时间了,之前由于各种原因停了一段时间,回来再继续学的时候发现有些东西就生疏了,所以决定把自己学习的历程纪录下来,一方面加深理解,一方面便于以后再回来看。

   如下图就是android的系统构架  

   从图中我们可以看到android系统是依靠linux提供的核心服务,这包括安全、内存管理、进程管理、网络、硬件驱动等等与硬件相关的服务。
   我们再从底层往上看,可以看到存在于linux内核之上的是程序库和android的运行程序。libraries即是程序库,它们主要通过Android应用程序框架为开发者提供服务和支持。核心库有:
引用
• 系统C 库- 一个从BSD 继承来的标准C 系统函数库( libc ), 它是专门为基于embedded linux
的设备定制的。
• 媒体库- 基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持
静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
• SurfaceManager - 对显示子系统的管理,并且为多个应用程序提供了2D和3D 图层的无缝融合。
• LibWebCore - 一个最新的web 浏览器引擎用,支持Android 浏览器和一个可嵌入的web 视图。
• SGL - 底层的2D图形引擎
• 3D libraries - 基于OpenGL ES 1.0 APIs 实现;该库可以使用硬件3D 加速(如果可用)或者使用高
度优化的3D 软加速。
• FreeType -位图(bitmap)和矢量(vector)字体显示。
• SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

而其中的android runtime就是运行程序,但是我认为把它翻译为运行时的环境或许更恰当一点。它由android的核心代码库和运行Delvik虚拟机组成(这也是我认为翻译为运行环境的理由之一),核心代码库为我们提供了java的语言支持,而Delvik虚拟机是android运行的依托。
    再往上我们看到的是Application Framwork也就是应用框架,这部分是所有的核心应用。android作为一个开源手机系统,开发人员也可以完全访问核心应用程序所使用的API 框架。该应用程序的架构设计简化了组件的重用,任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块。而且我们开发手机应用大部分都是在操作这个部分。
    最上层就是应用程序了,Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的。

    android的基本系统结构就是这些了,话说光说不练假把式,现在就来写一个简单的对EditText,Button,LinearLayout和AlertDialog的测试程序。
    android作为一个手机平台,界面是十分重要的。因为Activity是Android程序与用户交互的窗口,所以要做界面就必须用到Activity这个组件。而每次当你需要用到这个组件的时候都不要忘了,每一个新的Activity都必须在res/AndroidManifest.xml中先进行定义声明的。但是当你建立一个新的android工程时,它会先帮你建立一个*(工程名)Activity.java的类,所以第一个Activity不需要自己在AndroidManifest.xml中定义声明。我们的第一个Activity是UITestActivity.java。
    那么我们也可以先看看这个定义:
 <activity
            android:name=".UITestActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    所以我们可以看出基本的定义申明格式是
<activity 
            android:name=".*(Activity类名)"
            android:label="@string/next_name">
        </activity>

    现在我们已经有了一个基本的页面了但是页面上只有hello World这样的字眼。那么就让我们加上一些东西吧。
    首先我们在页面上加上一个文本框和2个按钮。在android中要在页面上加入按钮等构件,需要先在res/layout/*.xml中设置。*.xml取决于Activity中setContentView()中的对象。
    在这里我们使用LinearLayout,线性布局。具体设置如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <EditText
        android:id="@+id/text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/text" />

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/linearlayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center" >

        <Button
            android:id="@+id/showButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/showButton" />

        <Button
            android:id="@+id/clearButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/clearButton" />

        </LinearLayout>

</LinearLayout>

    这里使用了2重线性布局。其中的fill_parent为强制性地使构件扩展,以填充布局单元内尽可能多的空间。而wrap_content为强制性地使视图扩展以显示全部内容。
    然后在UITestActivity.java中加上java代码
showButton = (Button) findViewById(R.id.showButton);
clearButton = (Button) findViewById(R.id.clearButton);
text = (EditText) findViewById(R.id.text);

    这段代码的意义是取得视图中的构件,以便操作。
    然后我们设置它们的监听器对象实现功能。
//设置show按钮的监听器对象
		showButton.setOnClickListener(new View.OnClickListener() {

			public void onClick(View v) {

				new AlertDialog.Builder(UITestActivity.this)
						.setTitle("imfomation")//设置标题
						.setIcon(android.R.drawable.ic_dialog_map)//设置图标
						.setMessage(text.getText()).show();//设置其内容并显示
				//创建一个AlertDialog并将text中的内容输出到其中
			}
		});
		
		//设置clear按钮的监听器对象
		clearButton.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				text.setText("");
			}
		});

    到这儿其实还有问题,大家可以看到在定义新的Activity时有一个android:label="@string/*,在设置视图的构件时也有android:id="@+id/*,这些东西都还是在报错。其实将它们删了,程序也能再ADK上运行,但是你会发现文本中没有字符,按钮上没有标签。它们就是代表了*这个字符串的值,而这个值是在/res/values/strings.xml中定义声明的。如下:
<resources>
    <string name="hello">Hello World, UITestActivity!</string>
    <string name="app_name">TestPage1</string>
	<string name="text">input you want</string>
	<string name="showButton">show</string>
	<string name="clearButton">clear</string>	    
</resources>

   
    这样我们就完成了一个简单的android程序。

  • 大小: 93.7 KB
  • 大小: 22 KB
  • 大小: 22 KB
分享到:
评论

相关推荐

    【Android开发学习笔记之一】5大布局方式详解 - Angel_Kitty - 博客园.pdf

    Android开发学习笔记五大布局方式详解,线性布局,相对布局,帧布局,绝对布局,表格布局。。。。 。。。。。

    Android代码-AndroidNote Android笔记

    Android学习笔记 &gt; 十年生死两茫茫,不思量,自难忘,华年短暂,陈辞岁月悠悠伤, &gt; 满腔热血已芜荒,展未来,后生强,战战兢兢,如履薄冰心彷徨, &gt; 青丝化雪、鬓角成霜,已是英雄迟暮,人生怎慷慨激昂? 目录 ...

    Android+学习笔记

    Activity是Android开发中非常重要的一个基础类。我把它想像成J2ME中的Display类,或者是Win32平台上的Form类,也许不准确,但是它的重要性我觉得应该是一样的(当然,如果我们写的是一个没有界面的应用,例如后台...

    大话企业级Android应用开发实战 PDF 完整版 ZIP.002(二个压缩包)

    国内最早(2007年年底开始)从事于Android应用程序软件开发和创业人之一,国士工作室的创始人和总负责人,致力于成为企业级Android应用开发培训名师。 培训案例:对北京三星研究院等企业成功实施Android企业级开发培训...

    Android 开发随手笔记之使用摄像头拍照

    在Android中,使用摄像头拍照一般有两种方法, 一种是调用系统自带的Camera,另一种是自己写一个摄像的界面,本篇文章给大家介绍android开发随手笔记之使用摄像头拍照,感兴趣的朋友一起学习吧

    Android开发笔记之Intent初级学习教程

    本文讲述了Android开发笔记之Intent初级学习教程。分享给大家供大家参考,具体如下: 项目创建步骤: New Android Project-&gt; Project name:Intent Build Target:Android 2.2 Application name:IntentDemo Package ...

    移动终端学习笔记之Android(一)Android第一堂课

    所以笔者在后续学习当中所针对的都是手机应用开发。 从1993年,IBM推出了首台智能手机IBM Simon。1996年,微软开发Window CE系统,随后的2001年,Symbian S60面向消费者,2007年6月,ios登上历史舞台,2008年9月,...

    Android学习笔记45之gson解析json

    JSON即JavaScript Object Natation,是一种轻量级的数据交换格式,采用完全独立于语言的...通过本篇文章给大家介绍Android学习笔记45之gson解析json的相关内容,对android gson解析json相关知识感兴趣的朋友一起学习吧

    FastAndroid开源电商项目系列之Android客户端.zip

    为了满足广大Android开发爱好者与从业者的学习需求,我们精心整理并上传了一份全面而实用的Android项目资源包。这份资源包内容丰富,涵盖了从基础知识到实战应用的全方位内容,旨在为开发者们提供一个便捷、高效的...

    黑马程序员 从零开始征服Android之旅(第一季)源码和笔记 下

    学习完本次公开课,你将真正开启Andorid开发之旅。从理论到实战,轻松学会Android开发,做出属于自己的Android小案例。

    Android学习笔记之ContentProvider和Uri详解

    本文介绍了自定义Content Provider的相关内容,完全解析内容提供者的用法。Content Provider,内容提供者,相信大家对这个组件的名字都...ContentProvider在Android中的作用是对外共享数据,也就是说你可以通过Content

    Android开发自学笔记(六):声明权限和Activity

    不好意思哦,上一篇Android自学开发第六篇代码控制界面挖了个坑,如果运行不起来的同学,请注意查看本篇文章。 Android Project的灵魂大师AndroidManifest.xml终于要登场了,我们可以亲切的称呼它为AM文件,认识和...

    黑马程序员_从零开始征服Android之旅(第一季)源码和笔记

    学习完本次公开课,你将真正开启Andorid开发之旅。从理论到实战,轻松学会Android开发,做出属于自己的Android小案例。

    Android开发入门之对话框简单用法

    本文实例讲述了Android开发入门之对话框简单用法。分享给大家供大家参考,具体如下: 注:本文只是一个学习笔记 用以记录自己学到哪了 1.获得AlertDialog的静态内部类Builder对象,由此类来创建对话框 2.通过Builder...

    学习笔记之Android自动化测试工具Monkey

    Monkey测试是Android平台下自动化测试的一种快速有效的手段,通过Monkey工具可以模拟用户触摸屏幕、滑动轨迹球、按键等操作来对模拟器或者手机设备上的软件进行压力测试,检测该软件的稳定性、健壮性。它的原理是向...

    Android学习笔记之AndroidManifest.xml文件解析(详解)

    一、关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和...

    Android自定义控件之开关按钮学习笔记分享

    第一个为构造函数,重写一个参数的函数和两个参数的函数就够了,因为两个参数的函数能够使用自定义属性 第二个为控制控件的大小–&gt;protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {} 第三...

    Android开发之电话拨号器实例详解

    主要介绍了Android开发之电话拨号器,结合实例形式详细分析了Android电话拨号器的实现步骤与具体代码,并附带了一个Android开放电话拨号器的学习笔记,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics