实验2 android的界面设计.docx
实验2 android的界面设计(控件与布局)学时:4学时一、实验目的:1、了解Android编程原理2、掌握界面控件设计3、了解和熟悉常用控件的使用、界面布局等内容。二、实验内容:1.基本控件的制作:(1)TextView 的制作:a)体会 Autolink,依次更换属性:web/phone/all/email/android: id =android ; aut-c?Link= "crt t,rand raid ; laycut_width = "fi tL_parErrt"andraid : 1日& 冲伽瞰点奴就切藏需蹒睥漓二android : teKt5ize= J'2&Ep*randroid ;址Kt匚时。-"半小。户F筮"!>b)制作跑马灯效果android:ellipsize设置当文字过长时,该控件该如何显示。有如下值设置:” start” 一-省略号显示在开头;” end”省略号显示在结尾;” middle”-省略号显示在中间;” marquee” 一一以跑马灯的方式显示(动画横向移 动)android:marqueeRepeatLimit 在 ellipsize 指定 marquee 的情况下,设置重复 滚动的次数,当设置为marquee_forever时表示无限次。 android:focusableInTouchMode:是否在触摸模式下获得焦点。android:focusable控件是否能够获取焦点tlEKfViiewandroid : id-e,J?-l-Ld/tvjr android amtoLink-aLI" android; layout _ddt h-"/. l.L_ gre nt* android: layout _h ei ghttent,ran d r-old; slngl c Li ne - ,rtr uear an d r-o Id z "Focus 昌 bl e= ,rtTrerr dii d rold elllps i.2 e= trtir g定营 * android"qu eePepe atL imit -fw 曰咬i.曲尸 *an droid : "f cusablsInTaiJchFtide=B'±rue"' Iandroid:Mw山 nwpu .瓶烦.口3廊成 L:欧;煽iwgm;.目ftr ch.*场一 aindr«±d : -tex*tS±zc-= ""S&sp “由n d r-o ld: text<lcr=',命F尸目目- r>(2)EditView 制作(a) maxLength:最大输入长度属性android : 1 ayo u t_width = ''fz L L-_pcrren t" android : 1 ay<?ut_height=Brwrap_conterrt"r android :;max_eigth= "J"(b) singleLine:多行文本框ivrciG wntent" -r ridroid ; 1 ayout_width="fi LL_parentn 目riTroid ; layut_height=" android : sirigl&_irie=r'/:er(c) inputType:限制输入文本类型< Edit Text.5android : Layout_width=-,/,ill_pnre,nf, android : 1 ayout_hei.ght=Jrwrtrpi_corrterrJ' android : inputType = />(d) hint:设置提示信息Main Activity我是 EditText2.布局设计(1) LinearLayout 布局:(2)Relative Layout :(3) Table Layout3.建立一个如图所示的图形界面:4. 用ListView制作如图界面(图片自定)(将该题以你的学号命名,发给你班的学习委员,以 班为单位统一发给我,我的邮箱为:):5 .用expandablelistview制作如下界面:墨 3:526. 对话框制作:(2)©提示确认退出回?确认取消部分程序代码:protected void dialog() AlertDialog.Builder builder = new Builder(Main.this);builder.setMessage("确认退出吗?");builder.setTitle("提示");builder.setPositiveButton("确认",new OnClickListener() ©Overridepublic void onClick(DialogInterface dialog, int which) dialog.dismiss();Main.this.finish(););builder.setNegativeButton("取消",new OnClickListener() ©Overridepublic void onClick(DialogInterface dialog, int which) dialog.dismiss(););builder.create().show();/在 onKeyDown(int keyCode, KeyEvent event)方法中调用此方法public boolean onKeyDown(int keyCode, KeyEvent event) if (keyCode = KeyEvent.KEYCODE_BACK && event.getRepeatCount() = 0) (点后退键的时候,为了防止点得过快,触发两次后退事件dialog();return false;(2)界面如下:喜好调查你喜欢李连杰的电彰吗?很喜欢 一般 不言炊IV5i部分代码:Dialog dialog = new AlertDialog.Builder(this).setIcon(android.R.drawable.btn_star).setTitle("喜好调查”).setMessage("你喜欢李连杰的电影吗?").setPositiveButton("很喜欢”,new OnClickListener() ©Overridepublic void onClick(DialogInterface dialog, int which) / TODO Auto-generated method stubToast.makeText(Main.this,”我很喜欢他的电影。”,Toast.LENGTH_LONG).show();).setNegativeButton(” 不喜欢”,new OnClickListener() ©Overridepublic void onClick(DialogInterface dialog, int which) / TODO Auto-generated method stubToast.makeText(Main.this, ”我不喜欢他的电影。",Toast.LENGTH_LONG).show();).setNeutralButton("一 般”,new OnClickListener() ©Overridepublic void onClick(DialogInterface dialog, int which) / TODO Auto-generated method stubToast.makeText(Main.this,"谈不上喜欢不喜欢。",Toast.LENGTH_LONG).show();).create();dialog.show();(3)界面如下:确定取消new AlertDialog.Builder(this).setTitle(请输入).setIcon(android.R.drawable.ic_dialog_info).setView(new EditText(this).setPositiveButton("确定”,null) .setNegativeButton("取消",null).show();(4)界面如下:new AlertDialog.Builder(this).setTitle(复选框 ).setMultiChoiceItems(new String "Item1", "Item2" ,null, null).setPositiveButton("确定”,null).setNegativeButton("取消",null).show();(5)界面如下:)new AlertDialog.Builder(this).setTitl e(单选框 ).setIcon( android.R.drawable.ic_dialog_info).setSingleChoiceItems( new String "Item1", "Item2" , 0, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) dialog.dismiss();(6)列表对话框:new AlertDialog.Builder(this).setTitle("列表框”).setItems(new String "Item1”, "Item2" , null).setNegativeButton( ”确定”,null).show();(7)自定义对话框:).setNegativeButton("取消",null).show();Q自定义布局dialog布局文件代码如下:<?xml version="1.0" encoding="utf-8”?><LinearLayout xmlns:android="android:layout_height="wrap_content" android:layout_width="wrap_content”android:background="#ffffffff" android:orientation="horizontal”android:id="+id/dialog"><TextView android:layout_height="wrap_content”android:layout_width="wrap_content”android:id="+id/tvname" android:text="姓名:"/><EditText android:layout_height="wrap_content”android:layout_width="wrap_content" android:id="+id/etname" android:minWidth="100dip”/></LinearLayout>程序代码:LayoutInflater inflater = getLayoutInflater();View layout = inflater.inflate(R.layout.dialog,(ViewGroup) findViewById(R.id.dialog);new AlertDialog.Builder(this).setTitle("自定义布局”).setView(layout).setPositiveButton("确定”,null).setNegativeButton("取消",null).show();7. 制作如图所示的菜单及子菜单:(1)菜单:public boolean onCreateOptionsMenu(Menu menu) (menu.add(MenuNONK, 1,8,”删除”).setIcon(android.R.drawable.ic_menu_delete);menu.add(MenuNONK, 2, 2,"保存”).setIcon(android.R.drawable.ic_menu_edit);menu.add(MenuNONK, 3, 6,”帮助”).setIcon(android.R.drawable.ic_menu_help);menu.add(MenuNONK, 4, 1,”添加").setIcon( android.R.drawable.ic_menu_add);menu.add(MenuNONK, 5, 4,"详细").setIcon( android.R.drawable.ic_menu_info_details);menu.add(MenuNOE, 3, 3,"发送").setIcon(android.R.drawable.ic_menu_send);menu.add(MenuNONK, 7, 7,"分享").setIcon(android.R.drawable.ic_menu_share);menu.add(MenuNONK, 8, 5,"查找").setIcon(android.R.drawable.ic_menu_search);menu.add(MenuNONK, 9, 9,"拨号").setIcon(android.R.drawable.ic_menu_call);/返回true将显示在函数中设置的菜单,否则不能够显示菜单return true;(2)子菜单:d ms勘设置mi安全孀public boolean onCreateOptionsMenu(Menu menu) ( int base = Menu.FIRST;/ 一个menu可以包括多个子菜单SubMenu subMenu = menu.addSubMenu(base, base+1, Menu.NONE,”系统设置”);/子菜单可以包括多个菜单项Menuitem menuiteml = subMenu.add(base, base+1, base+1,”显示设置");subMenu.add(base, base+2, base+2,"网络设置”);subMenu.add(base, base+3, base+3,”高级设置”);subMenu.add(base, base+4, base+4,"安全设置”);/子菜单项不支持显示图标,这样做是没意义的,尽管不会报错!menuiteml.seticon(R.drawable.displaysettings);/但是子菜单本身是支持图标的subMenu.seticon(R.drawable.settings);/显示菜单请返回truereturn true;附加题(有兴趣的同学可以作一下)【源代码】1、主界面布局文件main.xml<?xml version="1.0" encoding="utf8" ?> <LinearLayoutxmlns:android= "android:layout_width= "fill_parent"android:layout_height= "fill_parent"android:orientation="vertical"android:background="#ffffff" > <LinearLayoutandroid:layout_width="fill_parent" android:layout_height= "wrap_content" android:orientation="horizontal"" <TextViewandroid:layout_width="wrap_ content" android:layout_height= "wrap_content" android:paddingTop="10dp" android:paddingLeft= "10dp" android:text="姓名: " android:textColor="#000000" android:textSize="15sp"/><EditTextandroid:textSize="15sp" android:background="drawable/edit_text" android:id="+id/editxt_name" android:layout_width= "200dp" android:layout_height= "wrap_content" android:layout_marginLeft= "3dp"/></LinearLayout><LinearLayoutandroid:layout_width= "fill_parent" android:layout_height= "wrap_content" android:orientation="horizontal"><TextViewandroid:layout_width= "wrap_content" android:layout_height= "wrap_content" android:paddingTop="10dp" android:paddingLeft="10dp" android:text="学号: " android:textColor="#000000" android:textSize="15sp"/><EditTextandroid:background="drawable/edit_text"android:textSize="15sp"android:id="+id/editxtid"android:layout_width="200dp" android:layout_height="wrap_content" android:layout_marginLeft= "3dp"/> </LinearLayout><LinearLayoutandroid:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="10dp" android:paddingLeft= "10dp" android:text="班级: " android:textColor="#000000" android:textSize="15sp"/><EditTextandroid:background="drawable/edit_text" android:textSize="15sp"android:id="+id/editxt_class"android:layout_width="200dp" android:layout_height= "wrap_content" android:layout_marginLeft= "3dp"/> </LinearLayout><LinearLayoutandroid:layout_width="fill_parent" android:layout_height= "wrap_content" android:orientation="horizontal"><TextViewandroid:layout_width="wrap_ content" android:layout_height= "wrap_content" android:paddingTop="10dp" android:paddingLeft= "10dp" android:text="年级: " android:textColor="#000000" android:textSize="15sp"/><EditTextandroid:background="drawable/edit_text" android:textSize="15sp"android:id="+id/editxt_grade"android:layout_width="200dp"android:layout_height="wrap_content"android:layout_marginLeft="3dp"/></LinearLayout><LinearLayoutandroid:layout_width= "fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"”<TextViewandroid:id= "+id/spinner_view"android:layout_width= "wrap_content"android:layout_height= "wrap_content" android:text="课程: "android:textSize= "15sp"android:paddingTop="10dp"android:paddingLeft="10dp"android:textColor="#000000"/><Spinnerandroid:id= "+id/course_spinner"android:layout_width= "wrap_content"android:layout_height= "wrap_content"android:background= "drawable/spinner_default_holo_light"/></LinearLayout><Buttonandroid:layout_marginTop= "15dp"android:id="+id/but_sure"android:layout_width="300dp"android:layout_height="30dp"android:text="添加"android:layout_gravity="center"android:textSize="15sp"android:textColor="#ffffff"android:onClick="OnAddClick"android:background="#7b7979"/>"<ListViewandroid:paddingTop="20dp"android:id= "+id/course_listview"android:layout_width= "fill_parent"android:layout_height="fill_parentandroid:background="#ffffff"/></LinearLayout>2、Listview中的item布局文件:<?xml version="1.0" encoding="utf8" ?><LinearLayoutxmlns:android= "android:layout_width= "fill_parent"android:layout_height= "match_parent"android:orientation="vertical"android:background="#ffffff"><LinearLayoutandroid:orientation="horizontal"android:layout_width= "fill_parent"android:layout_height="wrap_content"><TextViewandroid:id="+id/item_name"android:layout_width= "0dp"android:layout_height= "wrap_content"android:layout_weight="1"android:textColor="#000000"android:textSize="10sp" /><TextViewandroid:id= "+id/item_num"android:layout_width="0dp"android:layout_height= "wrap_content"android:layout_weight= "1"android:textColor="#000000"android:textSize="10sp" /><TextViewandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:id= "+id/item_class"android:textSize = "10sp"android:textColor="#000000"/><TextViewandroid:layout_width="0dp"android:layout_height= "wrap_content"android:layout_weight="1"android:id="+id/item_course"android:textSize="10sp"android:textColor= "#000000"/><Buttonandroid:layout_width="0dp"android:layout_height= "wrap_content"android:layout_weight="1"android:id="+id/item_del"android:textSize="20sp"android:textColor= "#000000"/>"</LinearLayout>"</LinearLayout>3、Spinner 中的 ourse_list.xml<?xml version="1.0" encoding="utf8" ?>resources<string-array name= "course_list"><item >语文</item><item >数学</item><item >英语</item><item >物理</item><item >化学</item><item >生物</item></string-array></resources>4、edit_text样式的定义:<?xml version="1.0" encoding="utf8" ?><selector xmlns:android= " > <item android:statefocused="true"android:drawable="drawable/textfield_ multiline_activated_ holo_dark"/ ><itemandroid:drawable="drawable/textfield_ multiline_default_ holo_light"/></selector>5、spinner 样式的定义:<?xml version="1.0" encoding="utf8" ?><selector xmlns:android= " ><item android:state_focused="true"android:drawable="drawable/spinner_default_holo_light"/><item android:drawable="drawable/spinner_disabled_holo_light"/> </selector>6、添加按钮的事件定义:public void OnAddClick(View v) /添加按钮事件(/将所输入的信息转换为字符串String name=mTextName.getText().toString();String id=mTextId.getText().toString();String classes=mSpinnerCourse.getSelectedItem().toString();String grade=mTextGrade.getText().toString();/将所输入的信息添加到mDataList中mDataList.add(new Item(id,name,grade,classes);/ 刷新 listviewmListAdapter.notifyDataSetChanged();/创建toast提示添加成功toast=Toast.makeText(getApplicationContext(),”添加成功! ",Toast. LENGTH_LONG);toast.setGravity(Gravity.CENTER, 0, 0);toast.show();7、删除按钮的事件定义:mViewHolder. mDelButton/删除按钮事件 .setOnClickListener(new View.OnClickListener() (Overridepublic void onClick(View v) (mArrayitem.remove(id - 1);ItemAdapter.this.notifyDataSetChanged();/创建toast提示删除成功 toast=Toast.makeText(mContext,”册。除成功! ",Toast. LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(););8、Item类的定义:package com.example.classview;public class Item (public String course;public String id;public String grade;public String name;public Item(String id, String name, String grade,String course) ( super ();this.id = id;this.name = name;this.grade = grade;this.course = course;