Android入门(一)

初稿链接:http://www.orlion.ga/387/

如出一辙、安卓的体系架构

    1、

图片 1

 

  1. linux内核层,这同重叠为安卓设备提供底层的让

  2. 网运作库层,这无异于叠通过有些C/C++库来吗Android系统提供了要的特色支持。如SQLite库提供了数据库支持,OpenGL|EL库提供了3D绘图的支撑,Webkit库提供了浏览器内核的支持。另外还有安卓运行时库,主要提供一些核心库能够允许开发者使用java开发android应用。另外Android运行时库还含有了Dalvik虚拟机,它使各个一个android应用还能够运行在单身的过程遭到,并具有一个友好的Dalvik虚拟机实例

  3. 采取框架层,这同重合重要提供了构建App时或者就此到之API

  4. 应用层,所有安装在大哥大及之应用程序都属这等同层

 

    Android提供了呀:

  1. 季要命组件,Android四不行组件分别是活动Activity、服务Service、广播接收器Broadcast
    Receiver和内容提供器Content
    Provider。其中Activity是有所Android应用程序的伪装,凡是在动用被视的事物都是放在Activity中之。Service一直当后台默默运行,即使用户退了采取,服务还是是可以连续运行的。Broadcast
    Receiver可以允许应用程序接收各处的播音消息,如电话、短信等,当然好的行使也得为外有广播消息。Content
    Provider则为应用程序之间共享数据提供了说不定,比如想使读取系统电话仍被的关系人,就得经过情节提供器来实现。

  2. 累加的体系控件,Android系统也开发者提供了长的系统控件,使得我们好很自在地修出良好的界面。当然如果你尝试比较大,不饱于系统自带的控件效果,也截然好定制属于自己之控件。

  3. SQLite数据库,Android系统还自带了这种轻量级、运算速度快的嵌入式关系数据库,不仅支持标准SQL还得经Android封装好的API进行操作

  4. 地理位置一定,Android基本都放到了GPS

  5. 有力的多媒体,Android提供了长的多媒体服务,如音乐、视频、录音、拍照、闹铃等,这些还好在APP中经代码控制。

  6. 传感器,很多手机还放了强传感器,如方向传感器、加速度传感器

 

二、第一个Android项目HelloWorld

    1、创建一个安卓project

    File->new-> Android Application Project

图片 2

    然后同next。

图片 3

    2、运行项目

    首先创建一个android模拟器,点击eclipse工具栏Android Virtual Device
Manager

图片 4

    然后项目右键run as->Android Application。

 

    3、项目目录介绍:

        a.src:存放java代码的地方

        b.gen:自动生成的情,主要发生一个R.java文件,在项目被另外地方长的其他资源且见面在其中变化一个应和之资源id,不要改动该文件

        c.assets:主要得存放有按照程序打包的文本。另外要以先后中因故到了WebView加载本地网页的职能,所有网页相关的文件也都坐落这目录下

        d.bin:主要涵盖部分当编译时自动发出的文书,其中会来一个时档编译好的apk安装包

        e.libs:如果项目被因故到了第三方jar包,就设管jar包放到libs目录下,放在这目录下之jar包都见面吃自动添加到构建路径中

        f.res:项目中运用到的所有图片、布局、字符串等资源还置身这目录下,前面提到的R.java中之始末吧是因这个目录下的文件自动生成的。这个目录下产生异常多子目录,图片在drawable目录下,布局在layout目录下,字符串放在values目录下

        g.AndroidMainfest.xml:这是百分之百项目之安排文件,在次中定义的有四不行组件都需要以此文件中登记。另外还好当斯文件中受App添加权限声明。也可更指定构建项目时指定的先后最低兼容版本与对象版本。

        h.project.properties:这个文件通过一行代码指定了编译程序时所采取的SDK版本。

 

老三、HelloWorld如何运转起来的

先是打开AndroidMainfest.xml文件可以找到如下代码:

<activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

就段代码表示针对MainActivity这个activity注册,没有于AndroidMainfest.xml里登记之Activity是勿可知运用的。其中intent-filter里的片实践代码很重要,<action
android:name=”android.intent.action.MAIN”/>和<category
android:name=”android.intent.category.LAUNCHER”/>表示MainActivity是这个项目的主Activity,在手机上点击应用图标,首先启动之虽是是Activity。

    那么MainActivity有什么用也?Activity是Android应用程序的假相,凡是在应用被视的事物还是放在Activity中之,因此程序运行的界面就MainActivity这个Activity。MainActivity.java代码:

package ga.orlion.helloworld;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

MainActivity是继续自Activity,Activity是Android系统提供的一个基类,我们项目面临具有的活动且不能不使持续它们才会有所Activity的表征,然后可以看来MainActivity中生三只措施,onCreateOptionsMenu()这个法是用来创造菜单的,我们可优先无视其,主要关押一下onCreate()方法,onCreate()方法是一个运动呗创建时必然要履行的艺术。Android程序的宏图讲究逻辑与视图分离,不推荐Activity中直接写界面,通常是布局文件被写界面然后以Activity中引入进来。onCreate()方法第二执调用了setContentView()方法,就是是措施吃当下之Activity引入了一个activity_main布局。布局文件都是概念在res/layout目录下。打开activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="ga.orlion.helloworld.MainActivity" >

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

</RelativeLayout>

此处用说明的是咱们于程序界面中见到的HelloWorld!字符串不是以这文件被定义的而是单独的在res/values/string.xml中定义之,

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

    <string name="app_name">HelloWorld</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>

</resources>

以布局文件activity_main.xml中通过”@string/hello_world”的方式引用的。

 

res目录生,所有为drawable开头的文书夹都是存放图片的,所有以values开头的公文夹都是加大字符串的,layout文件夹是因此来加大布局文件之,menu文件夹是用来放大菜单文件的。这么多drawable文件夹是以给程序兼容更多的配备。在制造程序的早晚太好会给同样摆放图纸提供几乎个不同分辨率的副本,分别于这些文件夹下,当程序运行的上因当下配备分辨率的音量自动选择加载哪个文件夹下之公文。如果单独发同栽分辨率的图就放drawable-hdpi文件夹下就是哼了。

当代码中经过R.string.hello_world可以博得该字符串的援,在xml中通过@string/hello_world可以获取该字符串的援