- 博客(99)
- 收藏
- 关注
翻译 Java输入输出之File类
File类表示文件或目录的抽象路径名称。Java中的抽象路径名称和路径名称两个概念是针对跨平台需求而设计的,前者是路径的抽象、操作系统无关的表示,而后者是路径的与操作系统相关的表示。抽象路径名称包含以下两个部分:一个可选的依赖于系统的前缀字符串,例如盘符(D:),UNIX根目录“\”和微软Windows的UNC命名惯例下的“\\”。一个0或多个字符串型的名称组成的序列。第一个名称可能是一个路径
2015-11-04 13:53:38
844
翻译 Android应用程序之数据存储(一)
可以将应用程序的数据以数据库、文件或者选项文件(preference)的形式存放到内部或可移除的存储介质中。你也可以添加数据备份服务,让用户可以存储或恢复应用程序或系统数据。Android为你永久保存应用程序数据提供了几种选择。你选择哪种解决方案取决于你的特定的需求,例如是否这些数据应该是你的应用程序私有的,或者其他应用程序或用户可以访问的,你的数据需要多大的空间。你可以选择的数据存储选项包括以下几
2015-10-16 12:59:29
877
原创 C++不同编译单元内定义的非局部静态对象的初始化顺序
静态对象是指具有静态存储期限的对象,即从定义式开始,分配的内存空间一直保留到程序结束的对象,包括全局变量、定义于命名空间的对象以及使用static修饰符声明的对象。静态对象分为两类,具有程序块作用域的static对象称为局部静态对象,其余的成为非局部静态对象。对于在同一个编译单元(产生单一目标文件的源码,由单一源文件和其包含的头文件构成)定义的非静态局部对象,它们的初始化顺序是由其定义顺序决定的,而
2015-10-12 12:12:52
1569
原创 C++的动态内存分配
与C语言的malloc, calloc, realloc和free函数对应,C++语言使用new和delete运算符实现动态内存分配和释放。使用new运算符动态分配内存new运算符分配内存分为以下两类情境:一是为变量动态分配内存,而是为数组动态分配内存。其中为变量动态分配内存的一般形式为:T* p = new T(...);T是任意类型名,赋值运算符右边的T后可以跟括号,括号内是初始化该变量的值或
2015-09-30 07:15:22
855
原创 C++类的复制构造函数
复制构造函数的形式为:class ClassName{...ClassName(ClassName&){...}或ClassName(const ClassName&){...}...};如果没有定义复制构造函数,则编译器会为该类自动生成复制构造函数。如果用户自定义了任何一个类型的复制构造函数,则不再生成默认的复制构造函数。生成的默认构造函数只是简单地进行值的复制。对于包含指
2015-09-29 08:23:00
922
翻译 Android应用程序用户界面(十二)菜单
菜单是很多类型的应用程序中的通用用户界面组件。为了提供一个相似和一致的用户体验,你应该使用菜单的API来提示用户可执行的动作或你的活动中的其他选项。从Android 3.0开始,使用Android系统的设备不再要求提供专门的菜单按钮。伴随着这种改变,Android应用程序应该不再依赖传统的六元素菜单面板,而是提供一个动作条来提示普遍的用户动作。尽管某些菜单项的设计和用户体验已经改变,但是定义动作和选
2015-09-25 06:48:33
3006
原创 C++编译器为类自动生成的函数
我们可以构建一个空类,class Empty{};尽管没有定义任何函数,但我们可以通过以下方式使用这个类:Empty e1;Empty e2(e1);e2 = e1;因为当编译器发现你用上述方式使用这个类而却在类声明中没有定义一般构造函数(非复制构造函数)、复制构造函数、赋值操作符重载函数和析构函数时,会自动为其生成这些函数,上面的Empty类经编译后就对应着下面的类:class Emp
2015-09-23 22:52:51
2578
原创 C++类的构造函数和析构函数
构造函数构造函数是一类特殊的成员函数,它的目的是完成对象的初始化。构造函数的名字和类名相同,可以有参数,但不能有返回类型。class ClassName{ public: /*构造函数,可以在类声明中定义*/ ClassName(参数列表) { } ClassName(参数列表2);};/*构造函数也可以在
2015-09-22 06:22:59
2766
1
原创 C++类的const, static 和inline成员函数(变量)
在C++类的声明中包含多个函数或变量的声明或定义。这些函数和变量可以分为以下几类,这几类并不是完全没有交集的,常量成员函数可以是内联成员函数,内联成员函数也可以是常量成员函数:普通成员函数和变量 在类中定义的不带有任何修饰符的成员函数或变量。 /**************************************** * original_member.cpp
2015-09-21 06:31:30
2583
翻译 Android应用程序用户界面(十一)时间日期选择对话框
Android以现成的对话框的形式提供了支持用户选择时间或日期的控件。每个选择对话框提供了设置时间的各部分(小时,分钟和秒,上午/下午)或者日期的各个部分(月,日和年)。使用这些对话框可以确保你的用户能够选择一个有效的、形式正确,符合用户地域的时间或日期。我们建议你使用DialogFragment来包裹每一个时间或日期选择器。DialogFragment为你管理对话框的生命周期,允许你在不同的布局配
2015-09-20 13:14:44
3363
原创 C++类成员的访问控制
C++使用private,public和protected关键字约束类成员的可访问范围。private 指定私有成员,说明定义的函数或变量只能在该类的成员函数内使用,其他对成员变量的访问必须通过成员函数进行;public 定义了类的公用接口,可以在任何地方被访问;protected 指定了被保护的成员变量和函数,这类函数只能在类的成员函数内、子类或友元中被访问。class 类名{
2015-09-20 06:35:03
1192
原创 C++的类的声明及成员变量和成员函数
C++通过类及相关的封装、继承、多态和虚函数机制支持面向对象的程序设计和开发。类是一类事物的抽象,它封装了描述这类事物的共同属性和行为的数据结构和方法。C++中类的声明(也又称)式如下:class 类名{ 访问范围说明符: 成员变量1; 成员变量2; ... 成员函数1声明; 成员函数1定义;
2015-09-19 07:23:53
9631
转载 动态设置TextView四周的图片
Android中有时需动态设置TextView四周的drawble图片,这个时候就需要调用 setCompoundDrawables(left, top, right, bottom)方法,四个参数类型都是Drawable类型。示例代码如下:Drawable img_on, img_off;Resources res = getResources();img_off = res.getDrawa
2015-09-18 17:13:59
2511
原创 C++程序与非C++程序的链接
C++程序中可能包含由其他语言(例如C语言)写出的内容。不同的语言可能在使用寄存器保存参数的方式、参数放入堆栈的顺序及编译器传递给链接器的方面存在差异,造成程序之间的协作比较困难。例如C++为支持重载,程序编译后的名称与C语言不同,例如一个foo函数:int foo(int x, int y);在C++语言编译后生成的名字就是类似_foo_int_int的名称,而C语言编译后就是_foo。因此当在
2015-09-18 06:39:43
399
原创 C++的异常处理
当程序由多个相互分离的模块构成,错误处理的工作需要分成两个部分:某个模块报告出那些无法在局部解决的问题,而另一些模块处理那些在其他模块检查出的问题。异常机制是C++中将错误报告和错误错里分离开的手段。如果函数发现了自己无法处理的问题,就会抛出(throw)一个异常,由它的调用者来处理这个问题。异常抛出的程序结构为:throw 异常对象;如果一个函数想处理这个问题,它就要说明自己要捕获(catch)
2015-09-17 15:28:49
355
翻译 Android应用程序用户界面(十)对话框
对话框是一个小型窗口,它提示用户进行决策或者输入额外的信息。对话框并不填满整个屏幕并且正常情况下用以模态事件,需要用户在继续操作之前采取相应的行动。Dialog类是所有对话框的基类,但你应该避免直接实例化这个类。相反,使用下面的子类之一:AlertDialog: 这类对话框可以显示一个标题,最多三个按钮,一列可选项的列表或者定制布局。DatePickerDialog或TimePickerDia
2015-09-16 18:34:06
642
原创 C++中的名字空间
C++中引入了名字空间(namespace)的概念。名字空间有两方面的用途,一是将逻辑上相关的元素组织在一起,更重要的一点是解决函数和变量重名问题。命名空间的定义方式如下:namespace 名字空间名称{ //声明和定义}当在一个名字空间内访问另一个名字空间的函数、变量等时,需要额外添加限定词形如“名字空间名称::变量或函数名”。访问同一个名字空间的函数不需要限定符。/*******
2015-09-16 09:56:41
459
原创 列表项中包含按钮的ListView的点击事件的响应
ListView列表项中可以存在按钮,例如如下图所示。 清单文件:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="lemon.learnandroid" android:versionCod
2015-09-15 15:36:03
1864
原创 C++程序中尽可能使用const
const用在变量声明和定义式中,用以为变量提供语义约束,说明该变量是不可以改变的,可用以修饰全局变量、局部变量、静态变量、类成员变量以及定义常量指针和指针常量。const修饰STL迭代器STL(标准模板库)的迭代器的作用类似于指针,声明迭代器为const,类似与定义一个常量指针,可以改变迭代器指向的变量的值,但不能将迭代器指向不同的变量。如果希望迭代器是一个指针常量,可以使用const_itera
2015-09-15 13:02:54
490
原创 GMF使用自定义图像搭建图形化建模工具
在利用GMF开发的图形化建模环境中使用直观的图像标识建模元素能够更有效地支持用户进行建模。下面介绍导入外部图片作为元素标识的方法。首先,在GMF所在工作空间中创建一个Plugin-in项目。然后在该项目的src下的与Plugin-in项目同名的包下创建两个java文件,分别为:/*AbstractElementFigure.java*/package cn.edu.nudt.executabled
2015-09-13 23:57:37
2230
原创 利用GMF构建双击节点展开子视图的图形化建模环境
GMF能够根据基于Ecore的元模型构建图形化建模环境。在图形化建模中,这样一种需求是非常必要的:双击一个模型,展开一个新视图,在这个视图中可以构建由模型的内部元素描述的内部模型。下面就介绍下使用GMF中实现一功能的图形化建模环境的方法。第一步,构建基于Ecore的领域模型下图是我们定义的领域模型,其中根节点包含CapabilityViewport,ServiceViewport,Organiz
2015-09-13 19:14:16
1163
原创 GMF项目开发环境及基本步骤
GMF(Graphical Modeling Framework)是Eclipse的一个开源项目,支持基于元模型构建图形化的模型开发环境。配置GMF开发环境首先配置GMF的开发环境。点击下载地址进入Eclipse建模工具的下载页,根据操作系统选择合适的版本下载。下载完毕后,解压,双击eclipse(.exe)即可启动程序。启动过程中需要设定工作空间(Workspace)。该版本包括EMF,OCL等
2015-09-13 12:50:12
2419
原创 C++程序中尽量避免#define
使用const,enum替换#define定义常量C语言中常用#define来定义具有某种特殊意义的常量。但是,使用#define宏定义定义的符号会在编译前被替换掉,当因为该宏定义出现问题时,在错误信息中无法获得有关该宏的任何提示,这对错误的发现带来困难,,尽管可以通过查看预编译输出的方式尝试定位问题。同时预处理也会在程序中产生多份副本,造成代码量较大。为了解决这些问题,可以使用const常量替代宏
2015-09-12 13:56:53
1452
1
翻译 Android应用程序用户界面(九)- 按钮
按钮由文本或(和)图标组成,这些文本或图标传递着当用户点击该按钮时会发生什么。根据你是想创建带文本、图标或者两者都有的按钮,你可以以以下三种方式在你的布局文件中创建按钮。创建只带有文本的按钮,使用Button类:<Button android:layout_width="wrap_content" android:layout_height="wrap_content"
2015-09-09 14:16:53
623
转载 RelativeLayout的一些重要的属性
第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边缘
2015-09-09 12:58:41
397
原创 C++与C的主要差异
简单性和与C的高度兼容性是C++语言的重要设计原则,它继续维持C作为其一个子集,在C++语言中定义新的类型是其最基本的程序设计活动,并且极力避免了那些即使不用也会带来时间或空间额外开销的特征,支持利用传统的编译和运行时环境,具有类型检查和数据隐藏特征。C++特别强调程序的结构,强调模块化、强类型接口和灵活性,支持大型程序的开发。任何一种程序设计语言都要服务于两个目的,一是提供一种需要描述所执行动作的
2015-09-09 12:55:13
625
原创 C++相对于C的两种新的内置类型
在C语言提供的字符、整型、浮点型、指针、数组、结构和枚举等几类类型的基础上,C++又新增了两类基本类型,分别为布尔型和引用类型。布尔型(bool)C语言中没有明确地提供布尔类型,布尔类型的实现往往是通过宏定义或类型定义实现。C++为逻辑运算提供了单独的布尔类型(bool),可以具有值true或false之一,其中true的值被定义为1,false的值定义为0。在算术运算中布尔型都被转换为int。整数
2015-09-07 06:26:08
838
原创 C++支持的程序设计范式
C++支持包括面向过程、面向对象、函数式、泛型和元编程形式的多重泛型编程语言。面向过程关注的是处理过程,“确定你需要的过程并采用你能找到的最好的算法”。面向对象关注的是问题中的事物,根据问题“确定你需要哪些类,为每个类提供完整的一组操作,利用继承明确表示共性。”。函数式编程将计算机运算看作是数学中函数的运算,避免了状态以及变量的概念。泛型编程是利用模板,将原本特定于某个类型的算法或类当中的信息抽取出
2015-09-06 07:01:03
2070
转载 TextView的API 中文文档
结构java.lang.Object android.view.View android.widget.TextView直接子类Button, CheckedTextView, Chronometer, DigitalClock, EditText间接子类AutoCompleteTextView, CheckBox, CompoundButton, Ext
2015-09-05 17:52:47
2311
原创 C++语言的历史和标准化
1979年4月,贝尔实验室的Bjarne Stroustrup(本贾尼·斯特劳斯特卢普)博士等人负责分析UNIX内核,但当时没有合适的工具能够有效地分析由于内核分布而造成的网络流量,将内核模块化,因此他们的工作进展缓慢。
2015-09-05 08:49:08
2853
原创 C语言的总结
C程序的顶层结构一个C程序由源文件、依赖的库、数据和文档构成,其中源文件又分为两类,一类是头文件(.h),一类是定义文件(.c)。库由源文件编译而来,包含数据和文档,分为静态库和动态库两类。库通过头文件公布其提供的数据和功能。静态库的编译命令为:ar cr lib库名.a 目标文件1 目标文件2 ... 目标文件n动态库的编译命令为:gcc -shared -fPIC -o lib库名.so 目标
2015-09-04 14:57:32
395
转载 Android ArrayAdapter 详解
本文主要讲解ArrayAdapter的创建方法,我把ArrayAdapter分为三种:简单的、样式丰富的但内容简单的、内容丰富的。默认情况下,ArrayAdapter期望接受的样式文件里只含有一个textview,然后它把接受到的数据toString后(即调用数据对象的toString方法)展示在textview里。简单的这样的列表的每一行都只有一行文字。
2015-09-03 15:33:46
532
原创 C语言的日期和时间库
C语言提供了日期和时间库,可以确定时间、对时间值进行算术操作以及显示格式化时间等。这些函数都在头文件<time.h>中声明,因此使用时需要包含该头文件。
2015-09-03 06:44:16
4220
原创 C语言的实用工具库
C语言在<stdlib.h>中声明了7类不同的实用工具函数,包括字符串转换函数、伪随机序列生成函数、内存管理函数、与外部环境通信的函数、搜索和排序函数、整数算术运算函数以及多字节字符和字符串函数。
2015-09-02 06:52:35
3060
翻译 Android应用程序用户界面(八)
数据适配器(ArrayAdapter)ArrayAdapter是由一个任意对象的数组支撑的BaseAdapter的具体类。默认情况下,这个类期望提供的包含单独一个TextView资源的id。如果你想要一个更加复杂的布局,使用另外带一个参数id的构造函数。该资源id应该指向一个在更大布局资源中的TextView。无论如何引用一个TextView,它会用数组中每个对象的toString()方法返回字符串
2015-09-01 19:52:35
501
原创 C语言的国际化
编写的C语言程序可能在不同的国家或地区运行。不同的国家或地区有不同的语言、文化传统(例如字符、数值显示方式等),为了让C语言的程序能够来自不同国家和地区的人使用,需要考虑C语言的国际化。
2015-09-01 06:31:27
1676
翻译 Android应用程序用户界面(七)
列表视图是显示一列可滚动项的视图组。列表视图会绑定一个适配器,使用适配器从数组或数据库源中获取内容,将每一项转换为放置在列表中的视图,并被自动插入列表中。
2015-08-31 15:01:10
433
原创 C语言的错误处理
为了开发强壮的程序,需要预见程序在执行时可能的错误,并对错误进行检测和处理以在错误发生时能够采取适当的行为。C语言提供了几个处理错误的函数库。断言<assert.h>C语言使用断言监控程序的行为,断言函数声明在<assert.h>中,原型为:void assert(int expression);assert函数是以宏的形式实现的。参数expression是一个在正常情况下应该为真的表达式。在执行
2015-08-31 06:37:24
3708
翻译 Android应用程序用户界面(六)
当你的布局内容是动态的或者不是事先确定的,你可以使用一个继承自适配器视图(AdpaterView)的布局在运行时利用视图元素构建布局。适配器视图类的子类使用一个适配器将数据和它的布局绑定。适配器(Adapter)作为一个数据源和适配器视图布局之间的中间件,适配器获取数据(从数组或者数据库中)并且将每一项转换为视图元素并添加到适配器视图布局中。由适配器支持的布局包括列表视图和网格视图。
2015-08-30 14:57:01
437
原创 C语言字符串处理函数库
C语言的字符串处理函数库包括复制函数、拼接函数、比较函数、搜索函数等,这些函数的声明都位于头文件<string.h>。使用这些函数时,需要使用#include<string.h>指令将头文件包含到文件中。
2015-08-30 06:56:53
3686
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人