Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。本篇博客将简述Android编程入门的基础知识。主要讲述开发环境,以及一些基础知识。后续我们将逐渐讲述如何开发具体的程序信息。
原文地址:http://www.datalearner.com/blog/90077
一、环境准备
二、创建一个Android App
暂略
三、Android开发中的一些基本概念
Android应用程序由一些零散的有联系的组件组成,通过一个工程manifest绑定在一起。在manifest中,描述了每一个组件以及组件的作用,其中有6个组件,它们是Android应用程序的基石。Android有四大组件(也有说六大组件的,外加Intent和Notification),分别是Activity,Service,Content Provider和BroadcastReceiver。这四大组件一起组成了完整的Android程序。我们将分别简要介绍。
3.1、Activity
3.2、Service
3.3、Content Provider
3.4、BroadcastReceiver
你的应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用NotificationManager 来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
除了这四个组件外,Intent也是一种非常重要的组件,它是各种组件之间通信的桥梁,可以执行很多相关的任务,我们在Android开发入门基础知识——Intent详解中有详细介绍。而Notification是通知组件,主要是和推送用户信息有关。
四、Android App项目中的文件(夹)简介
如下图所示,Android项目中的主要文件及文件夹包括几个。
图1 Android项目文件(夹)目录
4.1、AndroidManifest.xml文件
该文件是在mainfests文件夹下面,叫做清单文件,它描述了整个项目的信息,包括项目名称、SDK版本等等。假设我们项目的清单文件如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.localgo.localgo"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
intent-filter>
activity> <activity android:name=".DisplayMessageActivity">
activity> <activity android:name=".ProfileActivity">
activity>
application>
manifest>
例如,在这里,第3行是包的名称。从第6行开始,以android开头的行描述本项目程序的信息,比如第6行到第11行是描述一些图标,主题信息,里面引用了后面的资源文件夹中的values文件夹下面的资源信息。以activity开头的行则描述本程序涉及到哪些界面(翻译为活动,一个Activity活动对应一个屏幕的UI界面)。例如第12行描述了本项目的MainActivity页面。这个活动下面设置了意图过滤(intent-filter,为啥叫这个我也不清楚)的信息,它描述了该页面的一些信息,比如这个android.intent.action.MAIN表明这个活动是本程序的入口页面。你在应用程序中的每个活动必须在AndroidManifest.xml 文件中声明。
4.2、java文件夹
这个不用多说了,主要是存放java源程序的地方。注意我们这里有一些以Activity结尾的程序文件,每一个文件其实对应了一个Activity的页面。也就是和下面资源文件夹(res)中的layout里面的内容绑定的。具体操作我们后面会说。
4.3、res文件夹(提供资源)
我们应该始终外部化应用资源,例如图像和代码中的字符串,这样有利于您单独维护这些资源。 此外,还应该为特定设备配置提供备用资源,方法是将它们分组到专门命名的资源目录中。 在运行时,Android 会根据当前配置使用适当的资源。例如,我们可能需要根据屏幕尺寸提供不同的 UI 布局,或者根据语言设置提供不同的字符串。
外部化应用资源后,即可使用在项目 R 类中生成的资源 ID 访问这些资源。有关如何在应用中使用资源,我们将在访问资源中讨论。
而资源一般都是在这个res文件夹下面,包括图片、布局文件、菜单等等。我们将分别介绍。
4.3.1、drawable资源
drawable英语是可拉伸的意思,在这里我们可以理解为存放位图的文件夹,因此称之为位图资源。也就是存放jpg、png等图片资源的文件夹了。如下图所示(注意:这里的drawable没有区分不同分辨率的图片。一般情况需要根据高中低三种不同分辨率放置三种不同清晰度的图片,便于系统调用,同时也有可能需要存放不同尺寸的图片),这里有两种drawable资源,一种是我们常见的图像资源,如ec.jpg、hfut.jpg等。另一种是xml类型的drawable资源。前者叫Image Asset,后者叫Vector Asset。前面是图像资源,拥有固定大小和尺寸,因此放大和缩小都有问题。一般而言,这种资源要存放多个不同尺寸的版本供调用。而后者是响亮资源,它其实是一系列命令,告诉你应该如何画图。因此这种资源可以适应不同尺寸或者分辨率的情况。因为系统可以根据这些命令来画图。
图 2
比如下面这个是ic_card_giftcard_black_24dp.xml文件的内容,它其实描述的是一个黑色的公文包。代码中出了常见的尺寸等信息,那个pathData就是描述形状的代码。Android Studio本身已经自带了一些,右键单击drawable文件夹,选择New-Vector Assett就能看到了。其他的可以去网上搜索,正常情况下,大神们的图已经够我们使用了。
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillColor="#FF000000" android:pathData="M20,6h-2.18c0.11,-0.31 0.18,-0.65 0.18,-1 0,-1.66 -1.34,-3 -3,-3 -1.05,0 -1.96,0.54 -2.5,1.35l-0.5,0.67 -0.5,-0.68C10.96,2.54 10.05,2 9,2 7.34,2 6,3.34 6,5c0,0.35 0.07,0.69 0.18,1L4,6c-1.11,0 -1.99,0.89 -1.99,2L2,19c0,1.11 0.89,2 2,2h16c1.11,0 2,-0.89 2,-2L22,8c0,-1.11 -0.89,-2 -2,-2zM15,4c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM9,4c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM20,19L4,19v-2h16v2zM20,14L4,14L4,8h5.08L7,10.83 8.62,12 11,8.76l1,-1.36 1,1.36L15.38,12 17,10.83 14.92,8L20,8v6z"/>
vector>
4.3.2、layout资源
layout文件夹存放的是布局资源。布局也就是指Android里面的活动和视图了。在Android中,占用一个屏幕的UI界面称之为Activity(活动),页面中的按钮、标签、文本字段等称之为View(视图)。一个活动通常包含一个或者多个视图(也就是一个页面里面有按钮啊,文本啊之类的东西)。这里的布局文件都是XML文件,因为Android中视图都是从XML文件加载的。里面描述了位置、大小等等视图信息。布局资源下每个文件都将根据其文件名(不包含扩展名)生成一个唯一的常量,这些常量也就是其ID,可以通过某些手段与java源文件绑定,或者被其他页面调用。
layout的文件都是xml文件,在每一个xml文件中,我们可以定义一些TextView、ImageView,以及其他的等等。
4.3.3、values资源
values资源是Android中存放数组、颜色、尺寸、字符串和样式的文件夹。通常有如下文件:
/res/values/strings.xml /res/values/colors.xml /res/values/dimens.xml /res/values/attrs.xml /res/values/styles.xml
<string name="app_name">乐购
string> <string name="edit_message">请输入您想查询的地点
string>
4.3.4、minmap
minmap是Android软件存放程序启动图标的文件夹。一般地它只存放这个启动图标(就是桌面图标)。
五、Android中的资源访问(R类/R.java)
在上一节中我们说了Android开发,应当始终外部化资源,并将这些资源存放在res文件夹中。这样有利于我们单独维护这些资源。这一节我们将描述资源的访问方式。在Android开发中,所有的外部资源都通过其资源的ID来访问,而所有的资源ID都在项目中R类中定义。而R.java这个类是由aapt工具自动生成的,用户本身不用修改添加。只要在资源中申明了ID,那么R类会自动将该资源添加到其中。
编译应用时,aapt 会生成 R 类,其中包含您的 res/ 目录中所有资源的资源 ID。 每个资源类型都有对应的 R 子类(例如,R.drawable 对应于所有可绘制对象资源),而该类型的每个资源都有对应的静态整型数(例如,R.drawable.icon)。这个整型数就是可用来检索资源的资源ID。
定义资源ID主要包括两个部分,一个是资源类型如string、drawable和layout等。另一个是资源名称,不包括其扩展名(当然也可以是xml中android:name属性中的值)。
访问这些资源有两种方式,一种是在Java程序中,一种是在XML文件中。
//Java程序中访问资源,如下面的程序设置内容显示为某个activity,可以使用R.layout.activity名称的方式。其中layout是资源类型,后面的是资源名称 setContentView(R.layout.activity_display_message);
#这种方式是在XML文件中访问资源,使用@开头表示什么类型,然后价格斜杠后面写上资源名称 @string/hello
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218172.html原文链接:https://javaforall.net
