【黑马程序员】软件项目管理(一)(5篇)

时间:2019-05-13 18:54:17下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《【黑马程序员】软件项目管理(一)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《【黑马程序员】软件项目管理(一)》。

第一篇:【黑马程序员】软件项目管理(一)

【黑马程序员】软件项目管理

(一)咱们现在是在学习阶段,慢慢的接触项目这个概念。那么项目是什么?

一个项目的组成,还有期生命周期,项目经理如何管理项目,项目如何分解,每个阶段的产出,都是什么,我们在进入工作前,可以提前了解一下,就能大概体会项目经理的工作内容,也能体谅一个项目所带来的压力。

首先软件项目管理,什么是项目?什么是软件项目? 项目是唯一的,临时的,即在一定的时间内完成。

具体定义:项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。项目的特征: 项目有明确的目标

项目之间的活动具有相关性 限定的周期 有独特性

资源成本的约束性(预算)

项目的不确定性(需求变更、人员变动。。)

说了那么多项目的特征,那么软件项目又有什么特别的吗?

软件项目是一个逻辑实体,相互之间的作用更强,变更会随时发生,以及更深的渐进联系。正是由于软件项目的变更性很强,所以为了确保软件项目的成功,提出了要对软件项目进行管理。

项目管理的定义:项目管理是一系列的伴随着项目的进行而进行的、目的是为了确保项目能达到期望结果的一系列管理行为。

软件项目管理与传统的项目管理之间的比较区别:软件项目的管理除了要对软件项目深入了解,掌握项目管理的知识,还要有相应的经验和技巧

了解了项目管理,现在就来看看必不可少的项目管理知识体系(pmbok)

十大管理:范围管理、时间管理、费用管理、质量管理、人员管理、沟通管理、风险管理、采购管理、集成管理、利益相关者管理 采鉴自传统项目管理,过程的管理如流水线生产生产的产品都是一样的,不同的过程造就不同的产品,那么对于软件项目管理来说,不同的过程一样产生不同的产品,不同的过程造就的产品质量也就不同,那么管理好了过程产品质量也就会相应提升。这里给出过程管理的定义:过程管理就是对过程进行管理,目的是让过程能够被共享、复用,并得到持续的改进。

软件过程管理的过程组:初始、计划、控制、执行、结束

于是我们得到软件项目管理的过程:初始、计划、执行控制、结束

从项目初始开始:包括项目确立和生存期

项目确立分成 项目立项、项目招投标、项目授权

项目立项:确定项目的目标、时间、资源、资金,关键在于得到项目发起人的认可 一个软件项目的立项开始于软件项目的启动,只有立项了的需求才会得到满足

项目招投标:在确认决策为购买时,便要启动项目招投标,过程为甲方招标书定义、乙方项目分析、招标与竞争、合同签署

黑马程序员成都中心 编著

项目授权:项目章程(project charter)表示项目存在

项目授权后项目管理便要开始履行职责 包括:开发计划、组织实施、项目控制

案例总结:某公司发出甲方招标书,然后一些科技公司开始对该招标书进行项目分析,然后向甲方公司发送投标书,由甲方进行选择,拟定合同并签订,中标后乙方收到项目授权书,项目便正式成立

项目成立后便要选择相应的完成项目的策略,即选择项目生存期模型 软件项目生存周期

定义:描述了开发的主要阶段、定义每个阶段完成的过程和活动、确认每个阶段完成的输入和输出

传统生存期模型:预期设计开发的过程

瀑布模型:单向,严格要求项目的步骤,即需求分析、设计、编码实施、测试、维护,管理方便但是不能满足需求变更

V模型:瀑布模型的变种,仍旧为单向执行,对项目需求、方案要求非常明确,以及对安全有特殊要求的项目。

原型:对变化的需求可以进行相应的应对,在需求分析后构造原型,然后对原型进行评估,再构造原型再评估,直到确定项目需求,然后设计最终系统,最后实现。增量模型:需求基本明确,可能发生变化,对于市场和用户需要逐步了解,需要一步步实施。以增量的方式一步步完善系统功能。

渐进式模型:渐进式前进、阶段性提交,优点是阶段性提交一个可运行的产品,关键的功能更早出现,早起预警问题,避免缺陷蔓延,阶段性完成可以降低完成估计错误。敏捷生存期模型(agile development):自适应的过程 敏捷宣言:

个体和交互胜过过程和工具

可以工作的软件胜过面面俱到的文档 客户合作胜过合同谈判 响应变化胜过遵循计划

软件需求管理

软件需求定义:用户对软件功能和性能的要求

软件需求管理过程:需求获取、需求分析、需求规格编写、需求验证、需求变更

变更管理:确定需求变更控制过程、确立变更控制委员会(SCCB)、进行需求变更影响分析、跟踪所有受需求变更影响的工作产品、建立需求基准版本和需求控制版本文档、维护需求变更的历史记录、跟踪每项需求的状态、衡量需求稳定性 软件建模的基本方法:

原型方法:需求分析、原型开发、原型评价

结构化分析法 :面向数据流的方法、自顶向下的分析方法、根据软件内部数据传递、交换的关系进行分析的,包括的技术有数据流图、数据字典、系统流程图

面向对象的用例分析:基于面向对象的情景分析方法、从用户角度出发考虑的功能需求、用例是系统向用户提供一个有价值的结果的某项功能 uml需求视图:用例视图、顺序图、状态图、活动图

功能列表法:将需求各功能以列表的形式列出,可以配合用例分析方法,对用例进行展开描述。

黑马程序员成都中心 编著

敏捷方法:对需求采用渐进明晰的方法进行描述

在敏捷方法中,用户需求被描述成一个个story card,有以下基本格式:as a ,i want ,so that 判断一个user story 是否是一个好的story的标准

软件项目任务分解

任务分解是项目管理的基础

任务分解过程定义:将一个项目分解为更多的工作细目或子项目,使项目变得更小、更易管理、更易操作

WBS任务分解结构:wbs是对项目由粗到细的分解过程,面向交付成果的,wbs组织并定义了整个项目范围

工作包是wbs最低层次的可交付成果 工作包应当由唯一主体负责 任务分解方法:

类比:有相同或相似的周期的项目,可采用类比的方法 模板参照:进行项目分解的时候,有些项目可以参照模板 自上而下:对项目整体有比较详细的了解

自下而上:任务没有非常详细的逻辑关系,想到什么写什么,然后按一定逻辑生成 任务分解步骤:

确认并分解项目的组成要素(WBS编号)确定分解标准 确定分解是否详细

确定项目交付成果(可以编制WBS字典)验证分解的正确性

检验分解结果的标准:

最底层的要素是否是实现目标的充分必要条件 最底层要素是否有重复的 每个要素是否清晰完整定义

最底层要素是否有定义清晰的责任人 是否可以进行成本估算和进度安排

--暂时就说到这里,这里的一切标准都是由各种办法来进行的。跟我们所接触的其他工作都不一样。希望对大家以后的工作有一定的帮助。

黑马程序员成都中心 编著

第二篇:黑马程序员android开发笔记(一)

01、什么是3G 02、android系统简介 03、android背景介绍 04、android的framewor简介 05、两种虚拟机的比较 06、sdk的下载以及简介 07、创建android模拟器 08、ddms简介

09、platform-tools的简介及常见adb指令

10、android项目的目录结构

11、android下apk安装的过程

12、常见的adb指令介绍

13、创建模拟器遇到的常见错误

14、电话拨号器

15、点击事件的四种写法

16、短信发送器

17、相对布局&单位介绍

18、现形布局&布局的组合

19、表格布局&绝对布局 20、帧布局

21、测试相关概念

22、android下junit测试框架配置

23、logcat简介

24、保存文件到手机内存

25、android下文件访问的权限

26、保存文件到SD卡中

27、分析setting源代码获取SD卡大小

28、_sharePreference入门

29、xml文件的序列化 30、采用pull解析xml文件

31、采用断电调试的方法观察pull解析的的流程

32、android下创建一个sqllite数据库

33、sql语句实现数据库的增删改查

34、系统api实现数据库的增删改查&Sqlite3工具的使用

35、数据库的事物

36、listView入门

37、采用layoutInflater打气筒创建一个view对象

38、采用数据适配器ArryAdapter

39、常用数据适配器simpleAdapter 40、数据适配器总结

41、内容提供者简介

42、内容提供者的实现

43、短信的备份

44、插入一条记录到系统短信应用

45、内容观察者

46、获取系统的联系人信息

47、保存联系人到系统通讯录

48、读取联系人的一个小细节

49、网络图片查看器

50、anr产生的原理&如何避免

51、android消息机制入门

52、网络html查看器

53、字符乱码问题的处理

54、采用get方式提交数据到服务器

55、采用post方式提交数据到服务器

56、提交数据到服务器中文乱码问题的处理

57、采用httpclient提交数据到服务器

58、异步http框架简介&实现原理

59、异步http框架提交数据到服务器 60、上传文件到服务器

61、smartimageview&常见开源代码 62、多线程下载的原理 63、多线程断点下载的原理

64、多线程java代码移植到android 65、多线程下载文本页面的更新 66、显示意图激活另一个activity 67、隐式意图激活另一个activity 68、隐式意图的配置

69、隐式意图和显示意图的使用场景 70、在不同activity之间数据传递 71、activity的声明周期 72、activity的启动模式

73、activity横竖屏切换的声明周期 74、开启新的activity获取他的返回值 75、请求码和结果码的作用 76、利用广播实现ip拨号 77、短信窃听器

78、自定义广播时间&发送自定义广播&广播接受者优先级 79、采用服务执行长期后台操作 80、采用服务窃听电话&服务的声明周期 81、android进程优先级&为什么使用服务 82、绑定方式开启服务&调用服务的方法 83、服务的声明周期(混合开启 84、采用aidl绑定远程服务

85、代码注册广播接受者&利用广播调用服务的办法 86、加载大图片到内存 87、获取图片exif信息 88、从gallery获取图片 89、图片画画板 90、扒开美女衣服 91、图片的缩放 92、图片的旋转

93、图片的平移&镜面&倒影效果 94、图片的合成 95、图片的颜色处理 96、多媒体播放api简介 97、人脸识别

98、mediaplayer的生命周期 99、soundpoo简介

100、sufaceview的生命周期 101、播放在线视频

102、视频播放器进度的处理 103、调用系统照相机拍照和录像 104、采用camera拍照 105、常见对话框 106、notification入门 107、菜单

108、android下的样式 109、android下的主题

110、代码编写ui 111、html创建ui 112、帧动画

113、代码创建创建的tween动画 114、xml文件定义动画 115、传感器简介 116、117、杀死进程 118、apk的安装 119、应用程序的反编译 120、动态创建fragment 121、用fragment创建一个选项卡 122、fragment的向下兼容性 123、fragment的生命周期 124、fragment之间的通讯 125、应用程序国际化

04、android的framewor简介

Wap:wait and play Wireless Makeup Language(WML)精简的html语言 Applications:android自带的基本上层应用 Aplication framework:应用程序框架 Librarics: Linux lernel:

05、两种虚拟机的比较

编译后文件格式:

jvm:.java->.class->.jar dalvik vm:.java->.dex->.odex 基于的架构:

jvm:基于栈的架构

dalvik vm:基于寄存器的架构

Cpu直接访问寄存器因此dalvik虚拟机的效率比jvm高

06、sdk的下载以及简介

->获取sdk工具包(sdk:standard develope kits)->ADT(android develop tools,实际上是eclipse的插件)SDK具体内容

Android 4.2.2(API16)

->SDK Plateform:开发时使用到的jar包->Samples for sdk:

->ARM EABI V7a System Image:模拟器运行时的镜像->Intel n86 Aton System:模拟器运行时的镜像->MIPS System Image:模拟器运行时的镜像->google APIs:google提供的jar包,可以直接使用google提供的一些API->source for android SDK:SDK全部的源代码 Extrals:

->tools:开发的工具

->support library:实现高版本的android向下的兼容->google Admed Ads SDK:gongle提供的广告插件->Analyties App Irackiong SDK:应用的用户分析->cloud message:云消息

->gongle play service:收费服务

->google USB Driver:真实的设备驱动

开发时:基于4.0,兼容2.2、2.3.3

07、创建android模拟器

avd:android virture developer VGA:480*640(电视的标准分辨率)QVGA:240*320(四分之一)HVGA:320*480(一半)WVGA:480*800(width)FWVGA:480*854(更宽)

08、ddms简介

ddms:模拟器不支持中文,因此发送中文会显示不出来

09、platform-tools的简介及常见adb指令

Android调试桥:内部实现就是socket让两个系统之间实现数据交互

->reset adb:模拟器找不到时候可以重启->adb device:列出所有的连接的设备->adb kill-server:杀死adb调试桥->adb start-server 启动adb调试桥 dx.bat:将.class文件打包

10、android项目的目录结构

一:SDK的目录结构

->Samples->Api demo:根据API demo(模拟器上面可以看见)的效果可以在sample中看见

相应的代码

->Source:jar包所有的sdk源代码都在这个文件夹里->SystemImage:系统镜像

->temp:下载更新临时存储的文件夹,一般是空的->tools:emulater.ext 不同版本的模拟器

二:New Android Application->theme:留给以后作为扩展,现在并没有太大的作用->target SDK:一般选择高版本,因为高版本对下兼容

->mark project as a library:一般不选择,意思是将这个项目提供一个

jar包供别人使用 三:文件夹目录

.setting:设置目录

assets:资产目录,存放一些文件,这些文件会被原封不动打包到应用程序的 apk中

bin:

gen:自动生成的目录

->builderConfig.java:生成的配置信息->R.java: Android 4.1.2->android.jar开发环境,jar包

可以在properties中修改,jar包就是SDK

011、Android下apk的安装过程

一、Android安装过程分析:

->setContentView:甚至view的对象,把里面的xml文件加载到

->在project中选择build automaticly会自动把文件生成字节码文件,.class $代表的class文件生成的是内部类->dex.bat文件会把.class文件生成.dex文件

->apk压缩文件解压内部内容

->META-INF: 应用程序的签名

eclipse的调试签名文件

->res:资源文件

->classes.dex:class文件

->resources.arsc:资源ID映射

->android软件安装的过程:

->拷贝xxx.apk带/data/app/xxx-1.apk->在/data/data目录下创建一个文件夹,文件夹名称当前应用程序的报名

012、常见adb指令

前提:

->设备连接上电脑而且驱动安装正常,如果安装不正常的话,会有黄色的问号显示;

->设备上打开USB调试;

指令:

->adb device(如果启动发现这个程序没有安装会自动安装)->adb kill-server->adb start-server->adb uninstall <包名>->adb-s emulator-5554 install c:usersadministratorhello.apk 如果有多个设备的话,如果不指定安装的是哪个设备程序会报错->adb push haha.prop /sdcard/haha.txt 将文件移到

(360管家,豌豆荚之类的软件他们也是用的adb指令,倘若电脑上装这些软件的话,会因为两个adb指令抢端口号而挂掉)(adb版本之间兼容不是很好,经常报错可以考虑下版本的问题)->adb shell:远程连接到了android的linux终端

ls:显示文件夹

ps:显示正在运行的程序 ping:网络连通性

013、创建模拟器遇到的常见错误

->路径最好不要有中文:

->应用安装不上,或者安装模拟器的时候开启一个新的模拟器:

可能是模拟器的资源被占用,模拟器在运行的时候其实占用着硬盘上面的一个文件,这个文件位于工作空间.android/avd/iphone.avd 里面会有镜像文件,当一个模拟器开启起来了,就给你创建一个文件夹.knock的文件夹,代表着这个模拟器被锁定了,如果把模拟器关掉,就没有程序占据这几个镜像资源了,那么这几个程序就会被自动删除。通常情况下不会出问题,开启时候创建文件,关闭时关闭文件,但是当电脑出现不正常状态时:比如蓝屏,停电关机时候这些资源还没来得及删除,模拟器就关闭了,因此开启时这些资源仍在,程序默认模拟器被占用,因此会重新开启一个模拟器。

->模拟器没有信号:

模拟器用socket桥接在电脑上

终结解决方案是给电脑连上网,分配一个IP->常见命令操作:

14、电话拨号器

->新建文件

->界面设置:文本框、点击按钮

->:一旦获得焦点,会立刻弹出,输入文本的软键盘->ctrl+x删除->ctrl+1提示

->设置点击事件:找到空间,然后设置点击事件,再点击事件里面获得了另外一

个空间的数据,激活一个intent->获得权限:清单文件中添加uses permision

15、点击事件的四种写法

->电话拨号器的优化:

每次拨打电话都会执行的操作是:查找控件,然后找到控件的文本,拨打电

话。其实每次拨打电话文本控件已经创建好了没有必要每次查找按钮之后再 查询控件。

package cn.wqrt.mobile;

import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;

public class MainActivity extends Activity {

private EditText et_number;@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button =(Button)findViewById(R.id.bt_dial);et_number =(EditText)findViewById(R.id.et_number);button.setOnClickListener(new MyListener());}

private class MyListener implementsandroid.view.View.OnClickListener{

@Override

public void onClick(View arg0){

String number = et_number.getText().toString().trim();//去除回车和空格

if(TextUtils.isEmpty(number)){

Toast.makeText(MainActivity.this, “号码不能为空”, Toast.LENGTH_SHORT).show();

return;

}

Intent intent = new Intent();

intent.setAction(intent.ACTION_CALL);

intent.setData(Uri.parse(“tel:”+number));

startActivity(intent);

}

}

@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;} }

->

1、点击事件的四种写法:

->给按钮注册点击事件:创建一个内部类定义点击事件。具体代码见上

button.setOnClickListener(new MyListener());

->

2、采用匿名内部类创建点击事件:

button.setOnClickListener(new OnClickListener()){

package cn.wqrt.mobile;

import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;

public class MainActivity extends Activity {

private EditText et_number;@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button =(Button)findViewById(R.id.bt_dial);et_number =(EditText)findViewById(R.id.et_number);button.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View arg0){

// TODO 自动生成的方法存根

callPhone();

}

});}

@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;}

private void callPhone(){

String number = et_number.getText().toString().trim();//去除回车和空格

if(TextUtils.isEmpty(number)){

Toast.makeText(MainActivity.this, “号码不能为空”, Toast.LENGTH_SHORT).show();

return;

}

Intent intent = new Intent();

intent.setAction(intent.ACTION_CALL);

intent.setData(Uri.parse(“tel:”+number));

startActivity(intent);} } }

->

3、如果有很多的按钮点击事件,建议用这种方式:让Activity实现点击 事件的接口,每个按钮点击事件都设置成this,让该类实现 OnClickListener然后进行判断。package cn.wqrt.mobile;

import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

private EditText et_number;@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button =(Button)findViewById(R.id.bt_dial);et_number =(EditText)findViewById(R.id.et_number);button.setOnClickListener(this);}

@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;}

private void callPhone(){

String number = et_number.getText().toString().trim();//去除回车和空格

if(TextUtils.isEmpty(number)){

Toast.makeText(MainActivity.this, “号码不能为空”, Toast.LENGTH_SHORT).show();

return;

}

Intent intent = new Intent();

intent.setAction(intent.ACTION_CALL);

intent.setData(Uri.parse(“tel:”+number));

startActivity(intent);}

@Override public void onClick(View v){

// TODO 自动生成的方法存根

switch(v.getId()){

case R.id.bt_dial:

callPhone();

break;

} } }->

4、在布局文件中绑定一个点击的方法,如果点击按钮就会调用这个方法,通

过反射技术试图调用这个方法

布局文件中设置: package cn.wqrt.mobile;

import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;

public class MainActivity extends Activity {

private EditText et_number;@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button =(Button)findViewById(R.id.bt_dial);et_number =(EditText)findViewById(R.id.et_number);

}

@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;}

public void dialButtonClick(View v){ callPhone();}

private void callPhone(){

String number = et_number.getText().toString().trim();//去除回车和空格

if(TextUtils.isEmpty(number)){

Toast.makeText(MainActivity.this, “号码不能为空”, Toast.LENGTH_SHORT).show();

return;

}

Intent intent = new Intent();

intent.setAction(Intent.ACTION_CALL);

intent.setData(Uri.parse(“tel:”+number));

startActivity(intent);} }

16、短信发送器

->界面的设计:两个large Text,一个Button

android:textColor 设置字体颜色

android:singleLine=“true” 设置是否是单行

android:lines=“5” 设置行数

windows下面的颜色是GBR,而android下需要输入的格式确实

RGB,所以需要转换

adb默认设置time out为5秒->内容设计:按钮-文本->判断->发送

导包的时候千万别导到gsm包,否则会显示过时;

发送没有历史记录 package com.example.sms;

import java.util.ArrayList;

import android.app.Activity;import android.os.Bundle;import android.telephony.SmsManager;import android.text.TextUtils;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

private EditText et_number;private EditText et_content;

@Override protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button button =(Button)findViewById(R.id.bt_send);

et_number =(EditText)findViewById(R.id.et_number);

et_content =(EditText)findViewById(R.id.et_content);

button.setOnClickListener(this);}

@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 void onClick(View v){

// TODO 自动生成的方法存根

switch(v.getId()){

case R.id.bt_send:

String number = et_number.getText().toString().trim();

String content = et_content.getText().toString().trim();

if(TextUtils.isEmpty(number)||TextUtils.isEmpty(content)){

Toast.makeText(this, “号码或者内容不能为空”,Toast.LENGTH_SHORT).show();

return;

}else{

SmsManager smsManager = SmsManager.getDefault();

ArrayList contents = smsManager.divideMessage(content);

for(String str:contents){

smsManager.sendTextMessage(number, null, str, null, null);

}

}

} } }

17、相对布局&单位介绍

->布局说明:

->同级控件:

android:layout_toRightOf=“" android:layout_toLeftOf=”“ android:layout_below=”' android:layout_above=“" android:layout_maginBottom=”“

->相对父控件:

android:ayout_centerInParent=”“ android: layout_centerHorizontal=”“ android:layout_centerVertical=”“ android:layout_alignParentBottom=”“ android:layout_alignParentRight=”“->对齐方式:

->文本颜色:#00000000~#ff000000(argb)文字的透明度->单位介绍:

dp也就是dip:device independent pixels(设备独立像素),是一种与密度无关的像素单位,在每英寸160点的屏幕上,1dp = 1px。不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素

1.

下载【黑马程序员】软件项目管理(一)(5篇)word格式文档
下载【黑马程序员】软件项目管理(一)(5篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    黑马程序员视频总结

    面向对象:面向对象是相对于面向过程而言的。面向过程强调的是功能,面向对象将功能封装进对象,强调的是具有功能的对象。 类是对现实生活的描述。对象是一类事物实实在在存在的......

    黑马程序员——IO(Input Output)流总结(一)

    IO(Input Output)流总结(一) IO流是处理数据之间数据传输的。 Java对数据的操作是通过流的方式。 Java中用于操作IO流的对象都放在java.io包中。 流的分类:按照操作数据分为:字符......

    软件项目管理

    软件项目经理所需的素质 许多人都以为项目经理总是与“理想与光荣”相伴的,其实作为一个有志于改进中国软件开发流程的项目经理来说,他们承担的更多的是“艰辛与痛苦”。 一个......

    浅谈软件项目管理范文

    浅谈软件项目管理1. 软件项目管理的概念软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,通过计划、组织、控制等一系列活动,合理地配置和使用各种资源,......

    黑马程序员:AJAX入门系列(★)

    黑马程序员:AJAX入门系列 什么是AJAX? AJAX是”Asynchronous JavaScript and XML”的缩写(异步的JavaScript和XML),即一种实现无页面刷新获取服务器数据的混合技术。 XML是什么......

    【黑马程序员】Java基础总结

    【黑马程序员】Java基础总结 黑马程序员的javaEE课程主要分为2个部分:java基础+java就业。今天就简单的给大家总结一下咱们java基础的知识。 注:Java采用Unicode符号集,每个......

    黑马程序员:Java集合简单总结

    黑马程序员:Java集合简单总结 在Java语言中,学好集合是非常重要的,下面简单的对集合进行总结,以便大家学习,有问题再相互交流。 集合框架图 在集合框架图中可以看出,Collection接......

    软件项目管理工作总结

    软件项目管理工作总结软件项目管理这门课程是我们软件工程专业学生的一门重要的课程,这门课程的开设必有其重要性。软件项目管理的提出是在20世纪70年代中期的美国。由于开发......