Adroid学习系列-入门(1)
1. 安装
安装Eclipse,安装Adroid插件。安装Adroid SDK。
2. 项目目录说明
2.1. 建立Adroid项目
与一般的Java项目一样
)src文件夹是项目的所有包及源文件(.java),
)res文件夹中则包含了项目中的所有资源,比如:程序图标(drawable)、布局文件(layout)、常量(values)等。
)下面来介绍其他Java项目中没有的的gen文件夹中的R.java文件和每个Android项目都必须有的AndroidManfest.xml文件。
R.java文件是定义该项目所有资源的索引文件。自动生成,只读不能修改。
2.2. R.java代码清单
AndroidManfest.xml文件则包含了该项目中所使用的Activity、Service、Receiver。
2.3. AndroidManfest.xml代码清单
AndroidManfest.xml分析
|
manifest |
根节点,描述了package中所有的内容 |
|
xmlns:android |
包含命名空间的声明。xmlns:android=http://schemas. android.com/apk/res/android,使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据 |
|
Package |
声明应用程序包 |
|
application |
包含package中application级别组件声明的根节点。此元素也可包含application的一些全局和默认的属性,如标签、icon、主题、必要的权限,等等。一个manifest能包含零个或一个此元素(不能大余一个) |
|
android:icon |
应用程序图标 |
|
android:label |
应用程序名字 |
|
Activity |
用来与用户交互的主要工具。Activity是用户打开一个应用程序的初始页面,大部分被使用到的其他页面也由不同的activity所 实现,并声明在另外的activity标记中。注意,每一个activity必须有一个<activity>标记对应,无论它给外部使用或是只用于 自己的package中。如果一个activity没有对应的标记,你将不能运行它。另外,为了支持运行时查找Activity,可包含一个或多个<intent-filter>元素来描述activity所支持的操作 |
|
android:name |
应用程序默认启动的activity |
|
intent-filter |
声明了指定的一组组件支持的Intent值,从而形成了IntentFilter。除了能在此元素下指定不同类型的值,属性也能放在这里来描述一个操作所需的唯一的标签、icon和其他信息 |
|
action |
组件支持的Intent action |
|
category |
组件支持的Intent Category。这里指定了应用程序默认启动的activity |
|
uses-sdk |
该应用程序所使用的sdk版本相关 |
资源文件中一些常量的定义。
2.4. String.xml代码清单
<resources>
<stringname="app_name">测试</string>
<stringname="h0">《黄鹤楼》</string>
<stringname="h1">唐-崔颢[hào]</string>
<stringname="h2">昔人已乘黄鹤去,此地空余黄鹤楼。</string>
<stringname="h3">黄鹤一去不复返,白云千载空悠悠。</string>
<stringname="h4">晴川历历汉阳树,芳草萋萋鹦鹉洲。</string>
<stringname="h5">日暮乡关何处是?烟波江上使人愁。</string>
<stringname="menu_settings">设置</string>
</resources>
String中的代码与R.java代码对应。
publicstaticfinalclass string {
publicstaticfinalintapp_name=0x7f050000;
publicstaticfinalinth0=0x7f050003;
publicstaticfinalinth1=0x7f050004;
publicstaticfinalinth2=0x7f050005;
publicstaticfinalinth3=0x7f050006;
publicstaticfinalinth4=0x7f050007;
publicstaticfinalinth5=0x7f050008;
publicstaticfinalinthello_world=0x7f050001;
publicstaticfinalintmenu_settings=0x7f050002;
}
另外也可以定义颜色常量:例如:color.xml
<?xml version="1.0"encoding="utf-8"?>
<resources>
<color name="status_idle">#cccccc</color>
<color name="status_done">#637a47</color>
<color name="status_sync">#cc9900</color>
<color name="status_error">#ac4444</color>
</resources>
资源文件的使用:
Resources r =this.getContext().getResources();
String appname= ((String) r.getString(R.string.app_name));
String h0= ((String) r.getString(R.string.h0));
2.5. 布局文件activity_main.xml代码清单
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/textView0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/h0"
android:textSize="@dimen/TextSize"/>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/h1"
android:textSize="@dimen/TextSize"/>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/h2"
android:textSize="@dimen/TextSize"/>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/h3"
android:textSize="@dimen/TextSize"/>
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/h4"
android:textSize="@dimen/TextSize"/>
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/h5"
android:textSize="@dimen/TextSize"/>
</LinearLayout>
|
LinearLayout |
线性版面配置,在这个标签中,所有元件都是按由上到下的排队排成的。 |
|
android:orientation |
表示这个介质的版面配置方式是从上到下垂直地排列其内部的视图。 |
|
android:layout_width |
定义当前视图在屏幕上所占的宽度,fill_parent即填充整个屏幕。 |
|
android:layout_height |
定义当前视图在屏幕上所占的高度,fill_parent即填充整个屏幕。 |
|
wrap_content |
随着文字栏位的不同而改变这个视图的宽度或高度。 |
|
layout_weight |
用于给一个线性布局中的多个视图的重要度赋值。所有视图都有layout_weight值,默认为零,即需要显示多大的视图就占据多大的屏幕空间。如果值大于零,则将父视图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight值和该值在当前屏幕布局的整体 layout_weight值,以及在其他视图屏幕布局的layout_weight值中所占的比例。 |
在这里,布局中设置了一个TextView,用来配置文本标签Widget,其中设置的属性android:layout_width为整个屏幕的宽度,android:layout_height可以根据文字来改变高度,而android:text则设置了这个TextView要显示的文字内容,这里引用了@string中的hello字符串,即String.xml文件中的@string/h0所代表的字符串资源。h0字符串的内容这就是我们在项目运行时看到的字符串。
2.6. 主程序文件MainActivity.java的代码清单
package com.example.testad;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
publicclassMainActivityextends Activity {
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
publicbooleanonCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main,menu);
returntrue;
}
}
主程序MainActivity类继承自Activity类,重写了void onCreate(BundlesavedInstanceState)方法。在onCreate方法中通过setContentView(R.layout.main)设置了Activity要显示的布局文件(\layout\ activity_main.xml)。
3. 运行效果
4. 总结Android开发的特点
1.布局文件是通过XML实现。
2.文件分类清晰。
3.代码和UI分开,在国际化和程序维护方面有着巨大的作用。如果你的Android程序需要自适应国际化,比如说多国语言等问题,那么就可以定义不同语言的UI布局,在程序装载时调用不同的布局。而且,如果我们需要修改UI的一些问题,就不必查看代码了,直接更改这些布局文件即可很方便.当然,这需要开发者在开发时使用这种MVC框架,尽量减少使用"硬编码"。
Adroid学习系列-入门(1)的更多相关文章
- ABP 学习系列 - 目录
一.ABP 学习系列 - 入门介绍之单表 http://www.cnblogs.com/yabu007/p/8067694.html 二.ABP 学习系列 - 入门介绍之多表 http://www.c ...
- 分布式学习系列【dubbo入门实践】
分布式学习系列[dubbo入门实践] dubbo架构 组成部分:provider,consumer,registry,monitor: provider,consumer注册,订阅类似于消息队列的注册 ...
- Gradle学习系列之一——Gradle快速入门
这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...
- Gradle学习系列之一——Gradle快速入门(转)
这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...
- Asp.Net MVC5入门学习系列③
原文:Asp.Net MVC5入门学习系列③ 添加一个视图(View) 接着上篇的入门系列,上面解说添加一个简单Controller(控制器),这里我们简单的在来添加一个View(视图)来展示我们Co ...
- Asp.Net MVC5入门学习系列②
原文:Asp.Net MVC5入门学习系列② 添加一个Controller(控制器) 因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用 ...
- Asp.Net MVC5入门学习系列①
原文:Asp.Net MVC5入门学习系列① 现在直接开始MVC5的学习系列,学习资源来自Micrsoft. 开始使用Asp.Net MVC 5 打开Visual Studio 2013,然后新建一个 ...
- Asp.Net MVC5入门学习系列⑦
原文:Asp.Net MVC5入门学习系列⑦ 接着上篇结尾所说,如果开发中刚才遇到Model需要添加或者减少字段/属性的话,但是刚好你也利用EF的Code frist通过Model生存的数据库,这时改 ...
- Asp.Net MVC5入门学习系列⑤
原文:Asp.Net MVC5入门学习系列⑤ 检查VS生产的编辑方法和编辑窗体 前面我们一步使用强类型,然后创建Controller(控制器)的时候,VS默认已经给我们把CURD都简单的实现了.这篇的 ...
随机推荐
- MySql的基本操作以及以后开发经常使用的常用指令
第一章:数据类型和操作数据表MySQL语句的规范(1):关键字与函数名称全部大写(2):数据库名称,表名称,字段名称全部小写(3):SQL语句必须以分号结尾 1:命令行模式启动mysql服务net s ...
- web前端基础——jQuery编程基础
1 jQuery简介 jQuery是一个兼容多浏览器的JavaScript库,核心理念是write less,do more(写得更少,做得更多).它对JavaScript进行了封装,使开发更便捷,并 ...
- J2EE学习笔记-第二章(Web应用初步)
首先要理解一些概念的词语,到底这些是什么(当我读懂了后,会逐一填补完整,现在我真的有点混淆) web组件-相当于功能性的组件,就像是零件,汽车的轮胎,汽车的门,所有组件组合后,才能成为一辆车,有时候也 ...
- ArrayList源码分析
序言 第一次看源码,借鉴的是这位博主的文章:http://blog.csdn.net/csh624366188/article/details/6896656 个人觉得他写的一系列文章很好,稍微有点 ...
- 配置editplus,讓其支持代碼自動格式化功能.
使用editplus已經好多年了,累積了不少的東西,想換IDE比較麻煩,所以就研究了一下用editplus搭配gofmt.exe配置go語言代碼自動格式化的功能.還好功夫不負有心人,終於被我搞懂了,不 ...
- Gabor学习笔记
本文根据博客http://blog.csdn.net/watkinsong/article/details/7870996 ,博客http://www.cnblogs.com/yingying0907 ...
- 吐槽C++:C++ 类成员变量初始化 之 初始化带有参数的构造函数 的类成员变量。
本来我想写这样的代码: class MatchManager{ public: MatchManager() { } class OnTimerRunFuncHelper{ public: OnTim ...
- C# 设置和获取一个字节的某一位的值的方法
自己工作中遇到需要对单字节的高位.低位进行赋值,即一个字节byte,想要给每一位都赋值,这个值是动态来的,是0或是1. 好不容易收集到一些珍贵资料,整理一下: 一.设置 方法code: /// < ...
- WPA-PSK无线网络破解原理及过程(转)
本文将主要讲讲WPA-PSK类型的无线网络安全问题,首先我们看下802.11协议相关的基础知识. 802.11常见的几种认证方式: 1.不启用安全 2.WEP 3.WPA/WPA2-P ...
- js 排列 组合 的一个简单例子
最近工作项目需要用到js排列组合,于是就写了一个简单的demo. 前几天在网上找到一个写全排列A(n,n)的code感觉还可以,于是贴出来了, 排列的实现方式: 全排列主要用到的是递归和数组的插入 比 ...