Android开发讲义(第六章 Android高级界面编程)_第1页
Android开发讲义(第六章 Android高级界面编程)_第2页
Android开发讲义(第六章 Android高级界面编程)_第3页
Android开发讲义(第六章 Android高级界面编程)_第4页
Android开发讲义(第六章 Android高级界面编程)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android开发讲义,主讲人:,Android开发环境的搭建 Android初级界面编程 事件处理 深入Activity Intent与IntentFilter Android高级界面编程 Android应用的资源,Android开发讲义,图形与图象处理 Android数据存储技术与数据共享 Service与Broadcast Receiver Android网络应用 多媒体应用开发 OpenGL与3D应用开发 传感器应用开发,Android开发讲义,GPS应用开发 Google Map服务 项目实战,Android开发讲义,高级界面组件 对话框 消息提示 菜单,Android开发讲义,一.

2、 高级界面组件 1. 自动完成文本框的功能和用法 自动完成文本框(AutoCompleteTextView)从EditText派生而出,实际上它是一个文本编辑框,但它比普通编辑框多了一个功能:当用户输入一定字符之后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单项之后,AutoCompleteTextView按用户选择自动填充该文本框 使用AutoCompleteTextView很简单,只要为它设置一个Adapter,该Adapter封装了AutoCompleteTextView预设的提示文本。,Android开发讲义,自动完成文本框(页面设计) 示例一 ,Android

3、开发讲义,自动完成文本框(逻辑设计) 示例一 public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); AutoCompleteTextView autoEdit = (AutoCompleteTextView)findViewById(R.id.account); ArrayAdapteradapter = new ArrayAdapter(this, android.R.layout.simple_dropdown_it

4、em_1line,users); autoEdit.setAdapter(adapter); ,Android开发讲义,创建适配器,一. 高级界面组件 2. Spinner的功能和用法(暂略) 该组件实际是一个列表选择框,不过Android的列表选择框并不是需要显示下拉列表的,而是相当于弹出一个菜单供用户选择。 该组件时ViewGroup的间接子类,因此它也可作为容器使用。,Android开发讲义,一. 高级界面组件 3. 日期、时间选择器(DatePicker和TimePicker)的功能和用法 DatePicker供用户选择日期,TimePicker供用户选择时间,这两个控件在FrameL

5、ayout的基础上提供了一些方法来获取当前用户所选择的日期、时间; DatePicker OnDateChangedListener:获取用户选择的日期。 TimePicker OnTimeChangedListener:获取用户选择的时间。,Android开发讲义,日期、时间选择器(页面设计) 示例二 ,Android开发讲义,日期、时间选择器(逻辑设计) 示例二 public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main);

6、DatePicker datePicker = (DatePicker)findViewById(R.id.date); TimePicker timePicker = (TimePicker)findViewById(R.id.time); Calendar calendar = Calendar.getInstance(); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH); date = calendar.get(Calendar.DATE); hour = calendar.get(Cale

7、ndar.HOUR); minute = calendar.get(Calendar.MINUTE); datePicker.init(year, month, date, new OnDateChangedListener() public void onDateChanged(DatePicker view, int year, int month, int date) DemoActivity.this.year = year; DemoActivity.this.month = month; DemoActivity.this.date = date; setDate(year,mon

8、th,date,hour,minute); ); timePicker.setOnTimeChangedListener(new OnTimeChangedListener() public void onTimeChanged(TimePicker view, int hour, int minute) DemoActivity.this.hour = hour; DemoActivity.this.minute = minute; setDate(year, month, date, hour, minute); ); private void setDate(int year,int m

9、onth,int date,int hour,int minute) EditText txt = (EditText)findViewById(R.id.show); String result = 您选择的日期为:+year+年+month+1+月+date+日 +hour+时+minute+分; txt.setText(result); ,Android开发讲义,一. 高级界面组件 4. 进度条的功能和用法 进度条通常用于向用户显示某个耗时操作的百分比。进度条可以动态地显示进度,因此避免长时间地执行某个耗时操作时,让用户感觉程序失去了响应从而更好地提高用户界面的友好性。 android:

10、style/Widget.ProgressBar.Horizontal:水平进度条 android:style/Widget.ProgressBar.Inverse:不断跳跃旋转画面的进度条android:style/Widget.ProgressBar.Large:大进度条 android:style/Widget.ProgressBar.Large.Inverse:不断跳跃旋转画面的大进度条 android:style/Widget.ProgressBar.Small:小进度条 android:style/Widget.ProgressBar.Small.Inverse:不断跳跃旋转画面的

11、小进度条,Android开发讲义,进度条(页面设计) 示例三 ,Android开发讲义,进度条(逻辑设计) 示例三 Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); final ProgressBar bar = (ProgressBar)findViewById(R.id.bar); final Handler handle = new Handler() public void handleMe

12、ssage(Message msg) if(msg.what=0 x111) bar.setProgress(status); ; ,Android开发讲义,进度条(逻辑设计) 示例三 new Thread() Override public void run() while(stutas100) stutas = doWork(); Message msg = new Message(); msg.what = 0 x111; handle.sendMessage(msg); .start(); private int doWork() datahasData+ = (int)Math.ra

13、ndom()*100; try Thread.sleep(100); catch(Exception ex) ex.printStackTrace(); return hasData; ,Android开发讲义,二. 对话框 Android提供了四种常用的对话框 AlertDialog:功能最丰富、实际应用最广的对话框。 ProgressDialog:进度对话框,这个对话框只是对简单进度条的封装。 DatePickerDialog:日期选择对话框,这个对话框只是对DatePicker的包装 TimePickerDialog:事件选择对话框,这个对话框只是对TimePicker的包装,Andro

14、id开发讲义,二. 对话框 Android提供了四种常用的对话框 AlertDialog:功能最丰富、实际应用最广的对话框。 ProgressDialog:进度对话框,这个对话框只是对简单进度条的封装。 DatePickerDialog:日期选择对话框,这个对话框只是对DatePicker的包装 TimePickerDialog:事件选择对话框,这个对话框只是对TimePicker的包装,Android开发讲义,二. 对话框 1. 使用AlertDialog创建简单对话框 四种预定义对话框: 带消息、带N个按钮的提示对话框。 带列表、带N个按钮的提示对话框。 带多个单选列表项、带N个按钮的对话

15、框。 带多个多选列表项、带N个按钮的对话框。 创建步骤: (1) 创建AlertDialog.Builder对象,该对象时AlertDialog的创建器。 (2) 调用AlertDialog.Builder的方法为对话框设置图标、标题、内容等。 (3) 调用AlertDialog.Builder的create()方法创建AlertDialog对话框。 (4) 调用AlertDialog的show( )方法显示对话框。,Android开发讲义,显示提示消息的对话框(界面设计) 示例四 ,Android开发讲义,显示提示消息的对话框(逻辑设计) 示例四 public void onCreate(B

16、undle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText txt = (EditText)findViewById(R.id.txt); Button bn = (Button)findViewById(R.id.show); final Builder builder = new AlertDialog.Builder(this); bn.setOnClickListener(new View.OnClickListener() pub

17、lic void onClick(View v) builder.setIcon(R.drawable.icon); builder.setTitle(自定义普通对话框); builder.setMessage(提示对话框); builder.setPositiveButton(R.string.bn1, new OnClickListener() public void onClick(DialogInterface dialog, int which) txt.setText(您单击了确定按钮); ); builder.setNegativeButton(R.string.bn2, new

18、 OnClickListener() public void onClick(DialogInterface dialog, int which) txt.setText(您单击了取消按钮); ); builder.create().show(); ); ,Android开发讲义,二. 对话框 2. 使用AlertDialog创建列表对话框,Android开发讲义,简单列表对话框(逻辑设计) 示例五 public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView

19、(R.layout.main); final EditText txt = (EditText)findViewById(R.id.txt); Button bn = (Button)findViewById(R.id.show); final Builder builder = new AlertDialog.Builder(this); bn.setOnClickListener(new View.OnClickListener() public void onClick(View v) builder.setIcon(R.drawable.icon); builder.setTitle(

20、简单列表对话框); builder.setItems(new String红色,绿色, new OnClickListener() public void onClick(DialogInterface dialog, int which) switch(which) case 0: txt.setBackgroundColor(Color.RED); break; case 1: txt.setBackgroundColor(Color.GREEN); break; ); builder.create().show(); ); ,Android开发讲义,单选列表对话框(逻辑设计1) 示例五

21、public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText txt = (EditText)findViewById(R.id.txt); Button bn = (Button)findViewById(R.id.show); bn.setOnClickListener(new View.OnClickListener() public void onClick(View v) showDial

22、og(SINGLE_DIALOG); ); ,Android开发讲义,单选列表对话框(逻辑设计2) 示例五 protected Dialog onCreateDialog(int id) switch(id) case SINGLE_DIALOG: Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.drawable.icon); builder.setTitle(单选列表对话框); builder.setSingleChoiceItems(new String 红色,绿色, 0, new OnClickList

23、ener() public void onClick(DialogInterface dialog, int which) EditText txt = (EditText)findViewById(R.id.txt); switch(which) case 0: txt.setBackgroundColor(Color.RED); break; case 1: txt.setBackgroundColor(Color.GREEN); break; ); builder.setPositiveButton(确定, null); return builder.create(); return n

24、ull; ,Android开发讲义,此方法采用Activity回调的方式,三. 消息提示框 Toast是一种非常方便的提示消息框,它会在程序界面上显示一个简单的提示信息,这个提示信息框用于向用户生成简单的提示信息。,Android开发讲义,消息提示框会显示一段时间后,自动消失。,消息提示框(逻辑设计) 示例六 public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); Button show = (Button)findVie

25、wById(R.id.show); Button pic = (Button)findViewById(R.id.pic); show.setOnClickListener(new OnClickListener() public void onClick(View v) Toast.makeText(DemoActivity.this, 信息提示框, Toast.LENGTH_LONG).show(); ); ,Android开发讲义,四. 菜单 菜单在桌面应用中使用十分广泛,几乎所有的桌面应用都有菜单;由于受到手机屏幕大小的制约,所以菜单在手机应用中的使用减少了不少,但依然有不少手机应用会

26、添加菜单。 与桌面应用的菜单不同,Android应用中的菜单条默认是看不见的,只有当用户单击手机上的“MENU”键时,系统才会显示该应用关联的菜单。 Android应用同样支持上下文菜单,当用户一直按住某个应用的界面时,该应用所关联上下文菜单就会显示出来。,Android开发讲义,四. 菜单 1. 选项菜单与子菜单 添加子菜单或菜单的步骤: (1) 重写Activity的onCreateOptionsMenu(Menu menu)的方法,在该方法里调用Menu对象的方法来添加菜单项或子菜单。 (2) 如果希望程序能响应菜单项的单击事件,重写Activity的onOptionsItemSelec

27、ted(MenuItem mi)方法即可。,Android开发讲义,为程序添加菜单 示例七 public boolean onCreateOptionsMenu(Menu menu) SubMenu fontMenu = menu.addSubMenu(字体大小); fontMenu.setIcon(R.drawable.font); fontMenu.setHeaderIcon(R.drawable.font); fontMenu.setHeaderTitle(选择字体大小); fontMenu.add(0, FONT_10, 0, 10号字体); fontMenu.add(0, FONT_

28、12, 0, 12号字体); fontMenu.add(0, FONT_14, 0, 14号字体); fontMenu.add(0, FONT_16, 0, 16号字体); fontMenu.add(0, FONT_18, 0, 18号字体); SubMenu colorMenu = menu.addSubMenu(字体颜色); colorMenu.setIcon(R.drawable.color); colorMenu.setHeaderIcon(R.drawable.color); colorMenu.setHeaderTitle(选择字体颜色); colorMenu.add(0, FON

29、T_RED, 0, 红色); colorMenu.add(0, FONT_GREEN, 0, 绿色); colorMenu.add(0, FONT_BLUE, 0, 蓝色); return super.onCreateOptionsMenu(menu); ,Android开发讲义,系统菜单对象,添加子菜单,为子菜单添加菜单项,菜单,为程序添加菜单项事件 示例八 public boolean onOptionsItemSelected(MenuItem item) switch(item.getItemId() case FONT_10: edit.setText(FONT_10); break

30、; case FONT_12: edit.setText(FONT_12); break; case FONT_14: edit.setText(FONT_14); break; case FONT_RED: edit.setText(FONT_RED); break; case FONT_GREEN: edit.setText(FONT_GREEN); break; return super.onOptionsItemSelected(item); ,Android开发讲义,如果程序要监听菜单项的单击事件,可以通过重写该方法来实现。如果需要针对不同菜单提供响应,就需要在onOptionsIt

31、emSelected方法中进行判断,因此在添加菜单项时通常应为每个菜单项指定ID。,四. 菜单 2. 使用监听器来监听菜单事件 除了重写onOptionsItemSelected方法来为菜单单击事件编写响应之外同时还可以为不同菜单分别绑定监听器。此种方式无须为每个菜单项目指定ID。,Android开发讲义,使用监听来监听菜单事件 示例九 public boolean onCreateOptionsMenu(Menu menu) SubMenu fontMenu = menu.addSubMenu(字体大小); fontMenu.setIcon(R.drawable.font); fontMen

32、u.setHeaderIcon(R.drawable.font); fontMenu.setHeaderTitle(选择字体大小); MenuItem font10 = fontMenu.add(10号字体); font10.setOnMenuItemClickListener(new OnMenuItemClickListener() public boolean onMenuItemClick(MenuItem item) edit.setText(FONT_10); return false; ); SubMenu colorMenu = menu.addSubMenu(字体颜色); c

33、olorMenu.setIcon(R.drawable.color); colorMenu.setHeaderIcon(R.drawable.color); colorMenu.setHeaderTitle(选择字体颜色); MenuItem blue = colorMenu.add(FONT_BLUE); blue.setOnMenuItemClickListener(new OnMenuItemClickListener() public boolean onMenuItemClick(MenuItem item) edit.setText(FONT_BLUE); return false

34、; ); return super.onCreateOptionsMenu(menu); ,Android开发讲义,四. 菜单 3. 创建复选菜单项和单选菜单项 setCheckable(boolean checkable):设置该菜单项是否可以被勾选。调用该方法后的菜单项默认是多选菜单项。 setGroupCheckable(int group,boolean checkable,boolean exclusive)设置group组里的所有菜单项是否可勾选;如果将exclusive设为true,那么它们是一组单选菜单项。 setAlphabeticShortcut(char alphaCha

35、r):设置字母快捷键。 setNumericShortcut(char numericChar):设置数字快捷键。 setShortcut(char numericChar, char alphaChar):同时设置两种快捷键。,Android开发讲义,复选菜单和单选菜单(定义部分) 示例十 public boolean onCreateOptionsMenu(Menu menu) SubMenu sexMenu = menu.addSubMenu(性别); sexMenu.setIcon(R.drawable.sex); sexMenu.setHeaderIcon(R.drawable.se

36、x); sexMenu.setHeaderTitle(性别); sexMenu.add(0, MALE, 0, 男性); sexMenu.add(0, FEMALE, 0, 女性); sexMenu.setGroupCheckable(0, true, true); SubMenu colorMenu = menu.addSubMenu(颜色); colorMenu.setIcon(R.drawable.color); colorMenu.setHeaderIcon(R.drawable.color); colorMenu.setHeaderTitle(颜色); MenuItem items

37、= new MenuItem3; items0 = colorMenu.add(0, RED, 0, 红色).setCheckable(true); items1 = colorMenu.add(0, GREEN, 0, 绿色).setCheckable(true); items2 = colorMenu.add(0, BLUE, 0, 蓝 色).setCheckable(true); items2.setAlphabeticShortcut(b); return super.onCreateOptionsMenu(menu); ,Android开发讲义,复选菜单和单选菜单(事件部分) 示例十

38、 public boolean onOptionsItemSelected(MenuItem item) switch(item.getItemId() case MALE: edit.setText(男性); item.setChecked(true); break; case FEMALE: edit.setText(女性); item.setChecked(true); break; case RED: edit.setText(红色); if(item.isChecked() item.setChecked(false); else item.setChecked(true); bre

39、ak; return super.onOptionsItemSelected(item); ,Android开发讲义,四. 菜单 4. 设置与菜单项关联的Activity 应用程序需要单击某个菜单项时启动其他Activity(Service),针对这种需求,只要调用MenuItem的setIntent(Intent intent)方法即可,该方法吧菜单项与指定的Intent关联到一起,当用户单击该菜单项时,该Intent所代表的组件将会被启动。,Android开发讲义,设置与菜单项关联的Activity(事件部分) 示例十一 public boolean onCreateOptionsMenu(Menu menu) SubMenu prog = menu.addSubMenu(启动程序); prog.setIcon(R.drawable.color); prog.setHeaderIcon(R.drawable.color); prog.setHeaderTitle(选择您要启动的程序); MenuItem item = prog.add(查看子程序); item.setIntent(new Intent(this, OtherActivity.class

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论