android的发展历史和特点:
特点
0,MiniMum Required SDK:最低支持的android api版本,低于这个版本的android手机不能安装你的应用
Target SDK:你的应用最高支持android api版本
Compile With:哪个版本的android SDK(1.5~4.2)编译你的工程,也就是最适合的,
最原生支持你的应用的android版本。
Theme :这个随意,主题选择
1,apk产生的过程
.java->.class->.dex->.apk
AndroidManifest.xml 清单文件
classes.dex //代码的二进制,android虚拟机执行的不是*.class代码而是dex文件,由dx工具产生
resources.arsc//编译后的二进制资源文件
res
META-INF //数字签名信息
包括四个静态内部类,静态类的名字都与res中的一个名字对应,即R类定义该项目所有资源的索引
drawable:图片类,添加一张图片就产生一个类
layout:布局类,对应layout中的界面文件
string:字符串类
一种简单的数据存储文档描述语言,语法简单,采用树形数据结构,语法更加严格从而保证数据的安全和唯一
XML 的设计宗旨是存储或传输数据,而非显示数据,html主要用于显示
1)封闭 xxx自定义
2)开放
3)区分大小写
比如:
书
四大名著
三国
西游
红楼
水浒
xml的例子:
Three Kingdoms
罗
985
30.00
One master And Three monster
施
500
35.00
xml文件仅仅是纯文本而已,XML 被设计用来结构化、存储以及传输信息,XML 不会做任何事情
George
John
Reminder
Don't forget the meeting!
上面的这条便签具有自我描述性。它拥有标题以及留言,同时包含了发送者和接受者的信息。
但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息,这些信息必须由程序员按照
一定的方式进行解析
androidmanifest.xml 清单文件 告诉系统我有哪些东西,可以参考Android SDK文档中解释
package="com.test" //包名,也是一个应用进程的默认名称,一般会以应用的域名来作为包名
android:versionCode="1" //给设备程序识别版本用的,必须是一个整数值代表app更新过多少次
android:versionName="1.0" > //给用户查看版本用的,需要具备一定的可读性,比如“1.0.0”这样的
//指定Android应用中所需要使用的SDK的版本,最小能够运行的api版本
下层 容器:放android程序组件 四大组件
android:icon="@drawable/ic_launcher" //应用图标
android:label="@string/app_name" > //应用名,安装后在系统中的名字
android:name=".MyhelloActivity" //类名
android:label="@string/app_name" > //窗口的标题android:theme="@style/AppTheme" >
//主题 若改成:android:theme="@android:style/Theme.Dialog" 就会变成对话框形式的activity
//过滤器,该程序组件能干什么
//应用启动的入口,多个activity存在时先启动该activity
//表示该程序可以显示在桌面上
============================================================================
layout_hello.xml:
android:id="@+id/textView1" //给这个控件设置一个id号码,在代码中就可以找到
//自动的在R.java中产生一个id号码
// class R{ class id{ textView1 =0x70e0e0e0e } }
//在代码中就可以直接找到该控件
// R.id.textView1
android:layout_width="wrap_content" // 该控件的宽度, 控件的大小是随着内容变化的
android:layout_height="wrap_content" // 该控件的高度
android:text="@string/hello_world" /> //该控件的显示内容
values/strings.xml
好奇纸尿裤
在其他的地方去使用:
1,另外的xml文件中会使用:
布局xml:
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/test" /> //在这个地方引用
2,在代码中用到:在Activity子类中采用调用
String str = getResources().getString(R.string.test);values/dimens.xml: 表示大小尺寸的资源
32dp
在其他的地方:
1,另外的xml文件中会使用:
布局xml:
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/mySize"
android:text="@string/test" />
values/styles.xml
使用:
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/myStyle"
android:text="@string/test" />
menu/hello.xml
- android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
- android:id="@+id/item2"
android:title="@string/test"/>
在Android中打印调试信息:
1, java中System.out
2, Log函数
private final String TAG = "HelloActivity";
Log.i(TAG, "str = " + str);
========================================================================
MVC模式
1.UI 交给main.xml完成
2.业务逻辑 交给activity子类重写onCreate()
3.程序组件有哪些交清单
MVC架构起始于一個GUI(graphical user interface designpatter,图型用户界面设计原型)原型,其目的是
实现动态程序设计,使日后对于程序修改及扩展更加便利,并使某些程序代码可重复利用。另外通过对复杂度的
简化,使程序结构更加直观。
软件系统通过对自身基本部份分离的同时也给予各部分应有的功能,如同一所大公司一样,将工作区分做到专业化,
专业人员可以通过自身的专长分组:
View -视图层能够实现数据有目的的显示,视图需要访问它监视的数据模型(Model)
美工或UI设计人员可以独立进行图形接口设计及美化。
Model -数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法
模型不关心它会被如何显示或是如何被操作,比如数据库专家进行数据管理和数据库的实现算法
Controller -控制器起到不同层面间的组织作用,用于控制应用程序并与响应处理用户的交互
在Android中,程序设计师利用Java撰写程序逻辑及架构,
美工设计则使用xml来撰写用户界面,
数据库人员则针对SQL数据库进行设计及优化。
------------------------------------------------------------------------------------------------------------
资源文件的简单使用:
res:
strings.xml: 一:是为了国际化 二:为了减少应用的体积,降低数据的冗余
定义字符串
Hello world!
获取对应的值:
1, 在Activity中使用
String appName=(String) this.getResources().getString(R.string.hello_world);
2,在其他xml中,比如布局文件
android:text="@string/hello_world"
arrays.xml定义数组
定义:
- @drawable/ic_launcher
- @drawable/ic_launcher
- @drawable/ic_launcher
- @drawable/ic_launcher
- @drawable/ic_launcher
- 中国
- 美国
获取:
java代码:
---------------------------------------------------------------------------------------------------------------
adb和ddms的使用, E:\adt-bundle-windows-x86-20130522\sdk\platform-tools放进环境变量
adb:
adb device 显示当前有效的avd或是真实机器
adb push上传文件至SD卡
adb push 001.jpg /sdcard(复制文件到/sdcard目录下)
adb push pictures /sdcard(复制pictures目录到/sdcard目录下)
adb shell (进入命令行模式)
#cd /sdcard(进入/sdcard目录)
#ls (列出SD卡中的文件)
#logcat ( 查看所有调试信息,两条命令可以换成一个命令:adb shell(dos中使用)
adb pull /sdcard/001.jpg .(下载/sdcard的文件到PC)adb install filename.apk(安裝filename.apk)
adb install-r filename.apk(保留已设定数据,重新安裝filename.apk)
adb uninstall package (移除 APK)
adb uninstall -k package(移除程序时,保留数据)
注意package名称不是安装APK套件时的文件名,可以去/data/data或data/app目录查看
adb connect 127.0.0.1:62001
adb disconnect 127.0.0.1:62001
adb kill-server :杀死adbd服务
adb start-server:启动adbd服务
logcat的使用
DDMS调试环境:Dalvik Debug Monitor Service
设备面板:当前运行的模拟器,模拟器内的所有进程信息.
信息输出面板:类似java控制台
线程跟踪面板:
Heap内存跟踪面板
模拟器控制面板
文件管理面板
Android SDK包全览和查询方法
sdk/docs/reference
- 总结
1, 配置sdk
2,编写第一个Helloworld
3,创建avd
4,使用logcat查看调试信息和DDMS控制台
5,修改各种xml文件
package com.hq.hello;
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);
//setContentView(R.layout.activity_test);
}
@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);
}
}