浙江大学软硬件协同设计实验室课程讲义智能手机开发浙江大学软硬件协同设计实验室、用户界面智能手机开发浙江大学软硬件协同设计实验室浙江大学计算机学院3UserInterface用户界面说明布局Layout创建菜单Menus创建对话Dialogs处理用户UI事件用户提示确定风格定制组件数据与界面绑定浙江大学软硬件协同设计实验室浙江大学计算机学院4模拟器屏幕HVGA-L:480x320横屏HVGA-P:320x480竖屏(默认)QVGA-L:320x240横屏QVGA-P:240x320竖屏WVGA-L:800x480横屏浙江大学软硬件协同设计实验室浙江大学计算机学院5UI用户界面设计:Icon设计应用程序需要各种各样的图标尺寸和定位Launchericons要有多样化的形状和样式,但又要形成统一的视觉风格,其尺寸和定位也用统一:红色边框为图标尺寸蓝色边框是图形尺寸,比图标尺寸稍小,图形之外的空间用于显示阴影和特殊效果。橙色边框是另外一种图形尺寸。两种类型的图形尺寸可以达到统一的视觉权重。浙江大学软硬件协同设计实验室浙江大学计算机学院6Icon的风格符合当下的流行趋势,避免过度使用隐喻。高度简化和夸张,小尺寸图标也能易于识别,不宜太复杂。尝试抓住程序的主要特征,比如音像作为音乐的icon。使用自然的轮廓和形状,看起来几何化和有机化,不失真实感。采用前视角,几乎没有透视,光源在顶部。不光滑但富有质感。浙江大学软硬件协同设计实验室浙江大学计算机学院7UI用户界面设计:Widget设计Widget是Android1.5的一个新特性,允许程序显示一些常用而又重要的信息在用户的桌面主屏上标准的Android系统映像包含了一些示例widgets包括指针时钟、音乐播放器和其他工具如Google搜索栏。Widget即是可由用户自己编写的功能控件。典型的AndroidWidget有三个主要组件:边框框架图形控件以及其他元素注意widgets的开状尺寸以便在主屏上显示浙江大学软硬件协同设计实验室浙江大学计算机学院8UserInterfaceGuidelinesActivityandTaskDesignActivitiesarethebasic,independentbuildingblocksofapplications.Asyoudesignyourapplication'sUIandfeatureset,youarefreetore-useactivitiesfromotherapplicationsasiftheywereyours,toenrichandextendyourapplication.Theseguidelinesdescribehowactivitieswork,illustratesthemwithexamples,anddescribesimportantunderlyingprinciplesandmechanisms,suchasmultitasking,activityreuse,intents,theactivitystack,andtasks.Itcoversthisallfromahigh-leveldesignperspective.浙江大学软硬件协同设计实验室浙江大学计算机学院9UI用户界面设计:Menu设计选项菜单OptionsMenu:活动的主菜单。通过按下设备菜单键来显示它。选项菜单包含两组菜单项:图标菜单IconMenu这个是当用户按下菜单键时最初出现屏幕下方的item集合。它支持最多6个菜单项。只有这些菜单支持图标而且这些菜单并不支持checkboxes或者radiobuttons。扩展菜单ExpandedMenu这是通过按“更多”菜单显现出来的一个竖向的项目列表。它仅当图标菜单过多时存在而且是由6个以及其它选项菜单组成。上下文菜单ContextMenu:浮动菜单列表,通常在你长时间按在一个视图上时出现(比如一个列表项)子菜单Submenu:浮动菜单列表,通过在选项菜单或上下文菜单选择菜单项显露出来。不支持嵌套子菜单。浙江大学软硬件协同设计实验室浙江大学计算机学院10AndroidUI布局ViewGroup通过各种Layout,控制所属View的显示位置。ViewGroup(Layout)ViewViewViewViewViewViewGroup(Layout)浙江大学软硬件协同设计实验室浙江大学计算机学院11LayoutAbsoluteLayoutFrameLayoutGridViewLinearLayoutListLayoutRadioGroupTableLayout………浙江大学软硬件协同设计实验室浙江大学计算机学院12显示图像增加ImageView与原先的TextView,按垂直线性布局。线性布局LinearLayout浙江大学软硬件协同设计实验室浙江大学计算机学院13布局线性布局LinearLayout垂直:android:orientation=vertical“水平:android:orientation=horizontalLinearLayoutxmlns:android=:orientation=verticalandroid:layout_width=fill_parentandroid:layout_height=fill_parent浙江大学软硬件协同设计实验室浙江大学计算机学院14FrameLayout在屏幕上故意保留的空白空间,可以填充一个单独的对象。所有子元素都钉到屏幕的左上角不能为子元素指定位置浙江大学软硬件协同设计实验室浙江大学计算机学院15TableLayout子元素放入到行与列中不显示行、列或是单元格边界线单元格不能横跨行,如HTML中一样浙江大学软硬件协同设计实验室浙江大学计算机学院16AbsoluteLayout指明子元素确切的屏幕(X,Y)坐标(0,0)是左上角,下移或右移时,坐标值增加允许元素重叠(但是不推荐)注意:一般建议不使用AbsoluteLayout除非你有很好的理由来使用它因为它相当严格并且在不同的设备显示中不能很好地工作浙江大学软硬件协同设计实验室浙江大学计算机学院18RelativeLayout让子元素指定它们相对于其他元素的位置(通过ID来指定)或相对于父布局对象,跟AbsoluteLayout这个绝对坐标布局是个相反。在RelativeLayout布局里的控件包含丰富的排列属性:Layoutabove:控件在指定控件的上方Layoutbelow:控件在指定控件的下方Layouttoleftof。。。。使用RelativeLayout布局的时候,尽少程序运行时做控件布局的更改,因为RelativeLayout布局里面的属性之间,很容易冲突。浙江大学软硬件协同设计实验室浙江大学计算机学院19Color颜色android.graphics.Color包含颜色值Color.BLACKColor.BLUEColor.CYANColor.DKGRAYColor.GRAYColor.GREENColor.LTGRAYColor.MAGENTAColor.REDColor.TRANSPARENTColor.WHITEColor.YELLOW浙江大学软硬件协同设计实验室浙江大学计算机学院20字体风格Typefaceandroid.graphics.Typeface实践Typeface.create(Typefacefamily,intstyle)创建一个混合型新的字体:有4*5中搭配Typeface.setTypeface(Typefacetf,intstyle)设置一个混合型字体:有4*5中搭配Typeface.setTypeface(Typefacetf)设置一个只有Typeface风格的字体:有五种形式字体(4种)BOLD、BOLD_ITALIC、ITALIC、NORMAL粗体、粗斜体、斜体、普通字体风格(5种)DEFAULT、DEFAULT_BOLD、MONOSPACE、SANS_SERIF、SERIF默认字体、默认粗体、单间隔字体、无衬线字体、衬线字体浙江大学软硬件协同设计实验室浙江大学计算机学院21使用Button在Main.xml定义一个Button在Java代码中1.导入Button包importandroid.widget.Button2.声明一个ButtonprivateButtonpress3.利用findViewById()方法获取main.xml中的Buttonpress=(Button)findViewById(R.id.Button01);Buttonandroid:id=@+id/Button01android:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=@string/btn_name/浙江大学软硬件协同设计实验室浙江大学计算机学院22使用Button4.设置Button的属性(可以不作)5.给Button添加事件监听器Button.setOnClickListener6.定义处理事件处理程序press.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){show.setText(Hi,GoogleAndroid!);show=(TextView)findViewById(R.id.TextView01);}});浙江大学软硬件协同设计实验室浙江大学计算机学院23处理用户输入:为View设监听器View.OnClickListenerOnClick()View.OnLongClickListenerOnLongClick()