Android用户界面
4.1 菜单
菜单的设计在人机交互中可以说是非常人性化的,它提供了不同功能分组战士的能力,Android中菜单分为以下三种形式:选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Sub Menu)。
4.2选项菜单
当用户单击设备上的Menu按钮后,弹出的菜单就是选项菜单。选项菜单的菜单最多只有六个,超过六个后将以更多来展示。
如何创建一个选项菜单,步骤如下:
(1).重写Activity类的onCreateOptionsMenu方法,当我们第一次打开菜单时该方法自动调用。
(2)调用Menu的add方法添加菜单选项(MenuItem),这个菜单选项还可以通过setIcon方法来设置菜单的图标。
(3)当菜单项(MenuItem)被选择时,重写Activity的onOptionsItemSelected()方法来响应事件。
示例如下:创建并响应菜单选项
package xbb.bzq.android.app; import android.app.Activity; import android.os.Bundle; import android.view.Menu; public class MenuAndroidActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } // 定义菜单选项的常量值 private static final int GROUP_ID = 0X110; private static final int SETTING = 0X111; private static final int HElP = 0x112; private static final int EXIT = 0x113; //定义菜单选项的编号 private static final int SETTING_FIRST=0x001; private static final int HELP_SECOND = 0x002; private static final int EXIT_THIRD=0x003; /* * 重写onCreateOption上Menu方法,添加菜单选项*/ @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(GROUP_ID, SETTING, SETTING_FIRST, "设置"); menu.add(GROUP_ID,HElP, HELP_SECOND, "帮助"); menu.add(GROUP_ID, EXIT, EXIT_THIRD, "退出"); return true; } } |
到目前为止,只是将菜单选项添加进去了,这里我们演示添加了三个选项,点击menu按钮时会看到如图4.1所示的界面:
图 4.1 菜单选项界面
上图可能给会给用户造成不好的印象,也就是说界面设计不是很好。所以,在这里,我们应该怎样去添加一些修饰的图片(也就是Icon)呢?继续往下研究:
/* * 重写onCreateOption上Menu方法,添加菜单选项*/ @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(GROUP_ID, SETTING, SETTING_FIRST, "设置").setIcon(R.drawable.ic_launcher_settings); menu.add(GROUP_ID,HElP, HELP_SECOND, "帮助").setIcon(android.R.drawable.ic_menu_help); menu.add(GROUP_ID, EXIT, EXIT_THIRD, "退出").setIcon(android.R.drawable.ic_menu_set_as); return true; } |
这里主要是修改了添加菜单选项的内容,增添了一个setIcon方法,里面设置的图片主要演示了添加Icon的两种方式,
1.从系统中获取(android.R.drawable.ic_menu_help),
2.根据自己添加的图片(R.drawable.ic_launcher_settings)来确定。
具体演示效果如图4.2所示
图 4.2 菜单选项界面
当菜单选项设置到这里时,我们就应该考虑应该怎样给每个菜单添加监听事件。上面我们提到通过重写Activity的onOptionsItemSelected()方法来响应,那么到底应该怎样使用?所以,我们继续往前走着:
/** * 重写Activity的onOptionsItemSelected()方法来响应菜单事件 */ @Override public boolean onOptionsItemSelected(MenuItem item) { //通过重新设置界面TextView的显示内容来判断这个事件响应 //定义TextView控件 TextView mTextView =(TextView) findViewById(R.id.display_textview); //根据传入的menu的id来得到对应的item switch (item.getItemId()) { case SETTING: mTextView.setText("点击了设置按钮。。。。。。。。"); break; case HElP: mTextView.setText("帮助按钮被点击了。。。。。。。。"); break; case EXIT: mTextView.setText("点击了退出按钮但是没有退出呀。。。。。。。。"); break; } return super.onOptionsItemSelected(item); } |
到这里为止,一个完整的menu选项基本完成,但是真正的功能这里没有实现,主要在这里是一个演示作用,在后面的学习中,我们会一一介绍的。
4.3 上下文菜单
当用户长时间按键不放时,弹出的菜单就叫上下文菜单。这个功能类似于Windows中右键弹出的菜单。在Android中,我们应该怎样实现这个功能呢?分为以下几步:
(1).重写Activity的onCreateContextMenu方法,调用Menu的add方法来增加菜单项(MenuItem)。
(2)重写onContextItemSelected方法,响应菜单单击事件。
(3)调用registerForContextMenu方法为当前的View注册上下文菜单。
示例:上下文菜单的使用(创建并响应菜单选项):
package xbb.bzq.android.app; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.View; public class ContextMenuTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } //定义菜单选项的id private static final int GROUP_ID = 0X110; // 定义菜单选项的常量值 private static final int SETTING = 0X111; private static final int HElP = 0x112; private static final int EXIT = 0x113; //定义菜单选项的编号 private static final int SETTING_FIRST=0x001; private static final int HELP_SECOND = 0x002; private static final int EXIT_THIRD=0x003; /** * 重写onCreateContextMenu方法,实现增加menu菜单项 */ @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.add(GROUP_ID, SETTING, SETTING_FIRST, "设置"); menu.add(GROUP_ID,HElP, HELP_SECOND, "帮助"); menu.add(GROUP_ID, EXIT, EXIT_THIRD, "退出"); } } |
到这里,我们只是添加了一个上下文菜单,而没有真正实现其响应事件。实现其响应事件需要注册布局,也就是采用上面提到的registerForContextMenu方法,如下:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //得到当前页面的布局 LinearLayout layout =(LinearLayout) findViewById(R.id.linearLayoutId); //注册上下文监听事件 registerForContextMenu(layout); } |
这里唯一不同的就是要获取当前布局管理器。所以在这之前需要给布局取一个ID,通过findViewById 来获取。再注册就可以了,界面效果如图4.3所示。
图 4.3 上下文菜单显示界面
说到这里,我们也没有给这个菜单加监听事件,那么,我们应该怎样添加呢?来吧,操作如下:
/** * 重写onContextItemSelected方法,用于监听 */ @Override public boolean onContextItemSelected(MenuItem item) { // 通过重新设置界面Title的显示内容来判断这个事件响应 // 根据传入的menu的id来得到对应的item switch (item.getItemId()) { case SETTING: this.setTitle("选择了设置选项"); break; case HElP: this.setTitle("选择了帮助选项"); break; case EXIT: this.setTitle("选择了退出选项"); break; } return true; } |
这里我们通过修改界面的Title来演示我们添加的事件得到了响应,其效果如下图4.4
图 4.4 点击退出选项后的界面
4.4 提示信息(Toast)
在Android增加了Toast这样小巧的交互部件,用户在程序中执行某一动作后,给予这样的一个Toast信息,并且过一会儿他就会自动消失,增强了体验和交互性。
那怎样创建一个Toast呢?步骤如下:
通过Toast这个类提供的静态方法makeText设置提示的文本和展示的时间值。
调用Toast的静态方法show进行显示,这一步类似于Dialog的显示操作。
实例:提示信息
//这里第一个参数表示引用上下文,第二个参数是设置显示的文本,第三个参数是设置的显示时间 Toast.makeText(this,"号码或密码不能为空", Toast.LENGTH_LONG).show(); |
附加:修改主配置文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xbb.bzq.android.app" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="4" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" //这里的name中的文件名才是要运行的文件,所以多个文件时,要修改这个name android:name=".ContextMenu" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MenuTestActivity"></activity> </application> </manifest> |
Android用户界面
--------第四次课
4.1 菜单
菜单的设计在人机交互中可以说是非常人性化的,它提供了不同功能分组战士的能力,Android中菜单分为以下三种形式:选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Sub Menu)。
4.2选项菜单
当用户单击设备上的Menu按钮后,弹出的菜单就是选项菜单。选项菜单的菜单最多只有六个,超过六个后将以更多来展示。
如何创建一个选项菜单,步骤如下:
(1).重写Activity类的onCreateOptionsMenu方法,当我们第一次打开菜单时该方法自动调用。
(2)调用Menu的add方法添加菜单选项(MenuItem),这个菜单选项还可以通过setIcon方法来设置菜单的图标。
(3)当菜单项(MenuItem)被选择时,重写Activity的onOptionsItemSelected()方法来响应事件。
示例如下:创建并响应菜单选项
package xbb.bzq.android.app; import android.app.Activity; import android.os.Bundle; import android.view.Menu; public class MenuAndroidActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } // 定义菜单选项的常量值 private static final int GROUP_ID = 0X110; private static final int SETTING = 0X111; private static final int HElP = 0x112; private static final int EXIT = 0x113; //定义菜单选项的编号 private static final int SETTING_FIRST=0x001; private static final int HELP_SECOND = 0x002; private static final int EXIT_THIRD=0x003; /* * 重写onCreateOption上Menu方法,添加菜单选项*/ @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(GROUP_ID, SETTING, SETTING_FIRST, "设置"); menu.add(GROUP_ID,HElP, HELP_SECOND, "帮助"); menu.add(GROUP_ID, EXIT, EXIT_THIRD, "退出"); return true; } } |
到目前为止,只是将菜单选项添加进去了,这里我们演示添加了三个选项,点击menu按钮时会看到如图4.1所示的界面:
图 4.1 菜单选项界面
上图可能给会给用户造成不好的印象,也就是说界面设计不是很好。所以,在这里,我们应该怎样去添加一些修饰的图片(也就是Icon)呢?继续往下研究:
/* * 重写onCreateOption上Menu方法,添加菜单选项*/ @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(GROUP_ID, SETTING, SETTING_FIRST, "设置").setIcon(R.drawable.ic_launcher_settings); menu.add(GROUP_ID,HElP, HELP_SECOND, "帮助").setIcon(android.R.drawable.ic_menu_help); menu.add(GROUP_ID, EXIT, EXIT_THIRD, "退出").setIcon(android.R.drawable.ic_menu_set_as); return true; } |
这里主要是修改了添加菜单选项的内容,增添了一个setIcon方法,里面设置的图片主要演示了添加Icon的两种方式,
1.从系统中获取(android.R.drawable.ic_menu_help),
2.根据自己添加的图片(R.drawable.ic_launcher_settings)来确定。
具体演示效果如图4.2所示
图 4.2 菜单选项界面
当菜单选项设置到这里时,我们就应该考虑应该怎样给每个菜单添加监听事件。上面我们提到通过重写Activity的onOptionsItemSelected()方法来响应,那么到底应该怎样使用?所以,我们继续往前走着:
/** * 重写Activity的onOptionsItemSelected()方法来响应菜单事件 */ @Override public boolean onOptionsItemSelected(MenuItem item) { //通过重新设置界面TextView的显示内容来判断这个事件响应 //定义TextView控件 TextView mTextView =(TextView) findViewById(R.id.display_textview); //根据传入的menu的id来得到对应的item switch (item.getItemId()) { case SETTING: mTextView.setText("点击了设置按钮。。。。。。。。"); break; case HElP: mTextView.setText("帮助按钮被点击了。。。。。。。。"); break; case EXIT: mTextView.setText("点击了退出按钮但是没有退出呀。。。。。。。。"); break; } return super.onOptionsItemSelected(item); } |
到这里为止,一个完整的menu选项基本完成,但是真正的功能这里没有实现,主要在这里是一个演示作用,在后面的学习中,我们会一一介绍的。
4.3 上下文菜单
当用户长时间按键不放时,弹出的菜单就叫上下文菜单。这个功能类似于Windows中右键弹出的菜单。在Android中,我们应该怎样实现这个功能呢?分为以下几步:
(1).重写Activity的onCreateContextMenu方法,调用Menu的add方法来增加菜单项(MenuItem)。
(2)重写onContextItemSelected方法,响应菜单单击事件。
(3)调用registerForContextMenu方法为当前的View注册上下文菜单。
示例:上下文菜单的使用(创建并响应菜单选项):
package xbb.bzq.android.app; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.View; public class ContextMenuTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } //定义菜单选项的id private static final int GROUP_ID = 0X110; // 定义菜单选项的常量值 private static final int SETTING = 0X111; private static final int HElP = 0x112; private static final int EXIT = 0x113; //定义菜单选项的编号 private static final int SETTING_FIRST=0x001; private static final int HELP_SECOND = 0x002; private static final int EXIT_THIRD=0x003; /** * 重写onCreateContextMenu方法,实现增加menu菜单项 */ @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.add(GROUP_ID, SETTING, SETTING_FIRST, "设置"); menu.add(GROUP_ID,HElP, HELP_SECOND, "帮助"); menu.add(GROUP_ID, EXIT, EXIT_THIRD, "退出"); } } |
到这里,我们只是添加了一个上下文菜单,而没有真正实现其响应事件。实现其响应事件需要注册布局,也就是采用上面提到的registerForContextMenu方法,如下:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //得到当前页面的布局 LinearLayout layout =(LinearLayout) findViewById(R.id.linearLayoutId); //注册上下文监听事件 registerForContextMenu(layout); } |
这里唯一不同的就是要获取当前布局管理器。所以在这之前需要给布局取一个ID,通过findViewById 来获取。再注册就可以了,界面效果如图4.3所示。
图 4.3 上下文菜单显示界面
说到这里,我们也没有给这个菜单加监听事件,那么,我们应该怎样添加呢?来吧,操作如下:
/** * 重写onContextItemSelected方法,用于监听 */ @Override public boolean onContextItemSelected(MenuItem item) { // 通过重新设置界面Title的显示内容来判断这个事件响应 // 根据传入的menu的id来得到对应的item switch (item.getItemId()) { case SETTING: this.setTitle("选择了设置选项"); break; case HElP: this.setTitle("选择了帮助选项"); break; case EXIT: this.setTitle("选择了退出选项"); break; } return true; } |
这里我们通过修改界面的Title来演示我们添加的事件得到了响应,其效果如下图4.4
图 4.4 点击退出选项后的界面
4.4 提示信息(Toast)
在Android增加了Toast这样小巧的交互部件,用户在程序中执行某一动作后,给予这样的一个Toast信息,并且过一会儿他就会自动消失,增强了体验和交互性。
那怎样创建一个Toast呢?步骤如下:
通过Toast这个类提供的静态方法makeText设置提示的文本和展示的时间值。
调用Toast的静态方法show进行显示,这一步类似于Dialog的显示操作。
实例:提示信息
//这里第一个参数表示引用上下文,第二个参数是设置显示的文本,第三个参数是设置的显示时间 Toast.makeText(this,"号码或密码不能为空", Toast.LENGTH_LONG).show(); |
附加:修改主配置文件
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xbb.bzq.android.app" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="4" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" //这里的name中的文件名才是要运行的文件,所以多个文件时,要修改这个name android:name=".ContextMenu" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MenuTestActivity"></activity> </application> </manifest> |
转载于:https://www.cnblogs.com/Catherine-Brain/p/3273602.html
Android用户界面相关推荐
- Android用户界面布局(layouts)
Android用户界面布局(layouts) 备注:view理解为视图 一个布局定义了用户界面的可视结构,比如activity的UI或是APP widget的UI,我们可以用下面两种方式来声明布局: ...
- Android用户界面设计学习之旅-第二站
通过上一篇文章,大概了解了Android用户界面的设计方式,以及如何通过XML来设计界面.并且完成了一个非常简单的示例. 在上一篇文章中,涉及到了一些资源文件,直观点说,就是res目录下的那些目录和文 ...
- android用户界面-菜单
创建菜单 Creating Menus Android提供了三种基础菜单类型: 选项菜单Options Menu 这是一个活动的主菜单.通过按下设备菜单键来显示它.选项菜单包含两组菜单项: 图标菜单I ...
- android 用户界面教程实例汇总
1.android用户界面之WebView教程实例汇总 http://www.apkbus.com/android-51718-1-1.html 2.android用户界面之Notification教 ...
- Android 用户界面---拖放(Drag and Drop)(二)
拖拽事件监听器和回调方法 View对象既可以用实现View.OnDragListener接口的拖放事件监听器,也可以用View对象的onDragEvent(DragEvent)回调方法来接收拖拽事件. ...
- Android用户界面的设计方法心得,(8 Android) 用户界面UI设计
(8 Android) 用户界面UI设计 3.1.1 Android界面视图类 Android 图形化的用户界面(Graphical User Interface , GUI) 采用了结构清晰的MVC ...
- android java与界面的关联_Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)...
当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...
- Android用户界面设计
Android用户界面设计 用户界面设计是Android应用开发的一项重要内容.在进行开发的过程中,我们需要了解UI元素如何呈现给用户,也就是如何控制UI界面.andorid提供了4种控制UI的方法. ...
- Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)...
当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...
最新文章
- 独家 | 一个好的事件跟踪字典是什么样的?
- Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
- 每个用户做独立的线程同步
- 金蝶BOS开发中Edit编辑界面和List叙事薄界面需要写的代码
- static、volatile、synchronize
- 乔布斯,影响了一个时代的人
- BP算法是从天上掉下来的吗?
- 7个免费强大的Ajax文件管理器
- Android6.0 dump h264/h265编码裸流(二)
- 常见的几种网络抓包及协议分析工具
- 被 onnx.checker.check_model 检查出的常见错误
- 「luogu4093」[HEOI2016/TJOI2016]序列
- MySQL常用语句(二)
- PHP Yar - 学习/实践
- Win系统 - 两个固态硬盘能不能分配到同一个分区?
- 简师网:新录用公务员试用期限满一年可转正!
- Android电视机(机顶盒)初次开发的一些经验分享
- windows 查看端口号
- Windows时钟同步问题
- [Swift]LeetCode976. 三角形的最大周长 | Largest Perimeter Triangle
热门文章
- 2012年3月51CTO壁纸点评活动获奖名单【已结束】
- 如何解决无法显示隐藏文件文件夹
- 狂神css3笔记,【CSS】CSS3学习笔记(一)——选择器
- Java虚拟机(十)——直接内存概述
- php 环状,CSS3能写出这种环状吗,不是环形进度条?
- java js合并_JS合并单元格
- c语言将一个实型变量f=55.5678,《C语言程序设计》第2章2 常量和变量
- 函数局部有界性定理_高数第五章多元函数微分学
- 树状数组入门(有被精简的树状数组所震撼到)
- tomcat的php文件上传大小限制,PHP上传文件大小限制的调整 Nginx 413 Request Entity Too Large...