Some words about me

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas a urna sit amet leo sagittis cursus a at lectus. Donec bibendum facilisis ultricies. Maecenas nec arcu dui, ut lobortis erat. In nec condimentum quam. Vivamus euismod scelerisque ligula vitae fermentum. Nulla dignissim rutrum eleifend.

Donec mi eros, congue ut consectetur eget, pretium vitae orci. Aliquam pharetra ultricies lobortis. Morbi eget nisi lectus. Maecenas felis augue, molestie in vestibulum et, lacinia et leo. Suspendisse potenti. Maecenas eget est augue. Donec tincidunt mollis fermentum.

Contact me?

 
 
 

Donec mi eros, congue ut consectetur eget, pretium vitae orci. Aliquam pharetra ultricies lobortis. Morbi eget nisi lectus. Maecenas felis augue, molestie in vestibulum et, lacinia et leo. Suspendisse potenti. Maecenas eget est augue. Donec tincidunt mollis fermentum.

Send the message
 

Android用户界面

4.1 菜单

菜单的设计在人机交互中可以说是非常人性化的,它提供了不同功能分组战士的能力,Android中菜单分为以下三种形式:选项菜单(Option Menu)、上下文菜单(Context Menu)和子菜单(Sub Menu)。

 

4.2选项菜单

当用户单击设备上的Menu按钮后,弹出的菜单就是选项菜单。选项菜单的菜单最多只有六个,超过六个后将以更多来展示。

如何创建一个选项菜单,步骤如下:

(1).重写Activity类的onCreateOptionsMenu方法,当我们第一次打开菜单时该方法自动调用。

(2)调用Menuadd方法添加菜单选项(MenuItem),这个菜单选项还可以通过setIcon方法来设置菜单的图标。

(3)当菜单项(MenuItem)被选择时,重写ActivityonOptionsItemSelected()方法来响应事件。

示例如下:创建并响应菜单选项

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  菜单选项界面

当菜单选项设置到这里时,我们就应该考虑应该怎样给每个菜单添加监听事件。上面我们提到通过重写ActivityonOptionsItemSelected()方法来响应,那么到底应该怎样使用?所以,我们继续往前走着:

/**

 * 重写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).重写ActivityonCreateContextMenu方法,调用Menuadd方法来增加菜单项(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)调用Menuadd方法添加菜单选项(MenuItem),这个菜单选项还可以通过setIcon方法来设置菜单的图标。

(3)当菜单项(MenuItem)被选择时,重写ActivityonOptionsItemSelected()方法来响应事件。

示例如下:创建并响应菜单选项

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  菜单选项界面

当菜单选项设置到这里时,我们就应该考虑应该怎样给每个菜单添加监听事件。上面我们提到通过重写ActivityonOptionsItemSelected()方法来响应,那么到底应该怎样使用?所以,我们继续往前走着:

/**

 * 重写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).重写ActivityonCreateContextMenu方法,调用Menuadd方法来增加菜单项(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>

 

posted @ 2013-08-21 22:54  Catherine_Brain  阅读(1177)  评论(1编辑  收藏  举报