从零开始学android<Menu菜单组件.三十.>

在Android系统之中,菜单一共有三类:选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu)。

今天我们就用几个例子来分别介绍下菜单的使用

activity类中长见的方法


1

public void closeContextMenu()

普通

关闭上下文菜单

2

public void closeOptionsMenu()

普通

关闭选项菜单

3

public boolean onContextItemSelected(MenuItem item)

普通

设置上下文菜单项

4

public void onContextMenuClosed(Menu menu)

普通

上下文菜单关闭时触发

5

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)

普通

创建上下文菜单

6

public boolean onCreateOptionsMenu(Menu menu)

普通

当用户选择“Menu”按钮时调用此操作,可以生成一个选项菜单

7

public boolean onMenuItemSelected(int featureId, MenuItem item)

普通

设置选项菜单项

8

public boolean onOptionsItemSelected(MenuItem item)

普通

当一个选项菜单中的某个菜单项被选中时触发此操作

9

public void onOptionsMenuClosed(Menu menu)

普通

当选项菜单关闭时触发此操作

10

public boolean onPrepareOptionsMenu(Menu menu)

普通

当选项菜单显示之前操作触发此操作

11

public void openOptionsMenu()

普通

打开选项菜单

12

public MenuInflater getMenuInflater()

普通

取得MenuInflater类的对象

13

public void registerForContextMenu(View view)

普通

注册上下文菜单

MENU的常用方法


1

public static final int FIRST

常量

用于定义菜单项的编号

2

public static final int NONE

常量

表示菜单不分组

3

public abstract MenuItem add(int groupId, int itemId, int order, CharSequence title)

普通

此方法用于向菜单之中添加菜单项,参数作用:

· groupId:菜单所在的组编号;

· itemId:菜单项的ID;

· order:菜单的出现顺序;

· title:菜单的显示文字。


4

public abstract MenuItem add(int groupId, int itemId, int order, int titleRes)

普通

增加菜单项

5

public abstract SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes) 

普通

增加子菜单

6

public abstract SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title)

普通

增加子菜单

7

public abstract void removeGroup(int groupId)

普通

删除一个菜单组

8

public abstract void removeItem(int id)

普通

删除一个菜单项

9

public abstract void clear()

普通

清空菜单

10

public abstract void close()

普通

关闭菜单

11

public abstract MenuItem getItem(int index)

普通

返回指定的菜单项

12

public abstract int size()

普通

返回菜单项的个数

MuenItem中常用的方法


1

public abstract int getGroupId()

普通

得到菜单组编号

2

public abstract Drawable getIcon()

普通

得到菜单项上的图标

3

public abstract int getItemId()

普通

得到菜单项上的ID

4

public abstract int getOrder()

普通

得到菜单项上的编号

5

public abstract SubMenu getSubMenu()

普通

取得子菜单

6

public abstract CharSequence getTitle()

普通

得到菜单项上的标题

7

public abstract boolean isCheckable()

普通

判断菜单项是否可用

8

public abstract boolean isChecked()

普通

判断此菜单项是否被选中

9

public abstract boolean isEnabled()

普通

判断此菜单项是否可用

10

public abstract boolean isVisible()

普通

判断此菜单项是否可见

11

public abstract MenuItem setCheckable(boolean checkable)

普通

设置此菜单项是否可用

12

public abstract MenuItem setChecked(boolean checked)

普通

设置此菜单项是否默认选中

13

public abstract MenuItem setEnabled(boolean enabled)

普通

设置此菜单项是否可用

14

public abstract MenuItem setIcon(Drawable icon)

普通

设置此菜单项的图标

15

public abstract MenuItem setIcon(int iconRes)

普通

设置此菜单项的图标

16

public abstract MenuItem setOnMenuItemClickListener(MenuItem.OnMenuItemClickListener menuItemClickListener)

普通

设置此菜单项的监听操作

17

public abstract MenuItem setTitle(CharSequence title)

普通

设置此菜单项的标题

18

public abstract MenuItem setVisible(boolean visible)

普通

设置此菜单项是否可见

19

public abstract ContextMenu.ContextMenuInfo getMenuInfo()

普通

得到菜单中的内容

以上方法是按英文Api翻译,难免有错误之处,欢迎大家指正


1.选项菜单的使用

<span style="font-size:18px;">package com.example.menu1;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		// 此方法可以调用menu文件进行配置
		// getMenuInflater().inflate(R.menu.main, menu);

		// add(int groupId, int itemId, int order,  Charsequence titleRes)
		// 		菜单组ID   		itemID    指令指向ID			   菜单标题
		menu.add(1000, 1, 1, "增加").setIcon(android.R.drawable.ic_menu_add);
		menu.add(1000, 2, 2, "上传").setIcon(
				android.R.drawable.ic_menu_upload_you_tube);
		menu.add(1000, 3, 3, "保存").setIcon(android.R.drawable.ic_menu_save);
		menu.add(1000, 4, 4, "删除").setIcon(android.R.drawable.ic_menu_delete);
		menu.add(1000, 5, 5, "详情").setIcon(
				android.R.drawable.ic_menu_info_details);
		menu.add(1000, 6, 6, "分享").setIcon(android.R.drawable.ic_menu_share);
		menu.add(1000, 7, 7, "日期").setIcon(
				android.R.drawable.ic_menu_my_calendar);
		return true;

	}

	@Override
//	菜单选项选中处理事件
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		switch (item.getItemId()) {
		case 1:
			Toast.makeText(MainActivity.this, "您点击了增加菜单", 2).show();
			break;
		case 2:
			Toast.makeText(MainActivity.this, "您点击了上传菜单", 2).show();
			break;
		case 3:
			Toast.makeText(MainActivity.this, "您点击了保存菜单", 2).show();
			break;
		case 4:
			Toast.makeText(MainActivity.this, "您点击了删除菜单", 2).show();
			break;
		case 5:
			Toast.makeText(MainActivity.this, "您点击了详情菜单", 2).show();
			break;
		case 6:
			Toast.makeText(MainActivity.this, "您点击了分享菜单", 2).show();
			break;
		case 7:
			Toast.makeText(MainActivity.this, "您点击了日期菜单", 2).show();
			break;
		default:
			break;
		}
		return true;
	}

	@Override
//	菜单打开时操作
	public void openOptionsMenu() {
		// TODO Auto-generated method stub
		Toast.makeText(MainActivity.this, "菜单打开", 2).show();
	}

	@Override
//	菜单关闭时操作
	public void onOptionsMenuClosed(Menu menu) {
		// TODO Auto-generated method stub
		Toast.makeText(MainActivity.this, "菜单关闭", 2).show();
	}

	@Override
//	菜单准备时操作
	public boolean onPrepareOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub
		Toast.makeText(MainActivity.this, "准备操作", 2).show();
		return true;
	}

}
</span>

也可以使用xml文件对菜单进行配置

<span style="font-size:18px;"><menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <group android:id="@+id/group1" >
        <item
            android:id="@+id/item1"

            android:title="文件">
        </item>
        <item
            android:id="@+id/item2"
            android:title="编辑">
        </item>
        <item
            android:id="@+id/item3"
            android:title="查询">
        </item>
        <item
            android:id="@+id/item4"
            android:title="工程">
        </item>
        <item
            android:id="@+id/item5"
            android:title="运行">
        </item>
        <item
            android:id="@+id/item6"
            android:title="窗口">
        </item>
        <item
            android:id="@+id/item7"
            android:title="帮助">
        </item>
        <item
            android:id="@+id/item8"
            android:title="文档">
        </item>
    </group>

</menu></span>

JAVA文件

<span style="font-size:18px;">package com.example.menu1;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		// 此方法可以调用menu文件进行配置
		 getMenuInflater().inflate(R.menu.main, menu);

		return true;

	}

	@Override
//	菜单选项选中处理事件
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		switch (item.getItemId()) {
		case 1:
			Toast.makeText(MainActivity.this, "您点击了增加菜单", 2).show();
			break;
		case 2:
			Toast.makeText(MainActivity.this, "您点击了上传菜单", 2).show();
			break;
		case 3:
			Toast.makeText(MainActivity.this, "您点击了保存菜单", 2).show();
			break;
		case 4:
			Toast.makeText(MainActivity.this, "您点击了删除菜单", 2).show();
			break;
		case 5:
			Toast.makeText(MainActivity.this, "您点击了详情菜单", 2).show();
			break;
		case 6:
			Toast.makeText(MainActivity.this, "您点击了分享菜单", 2).show();
			break;
		case 7:
			Toast.makeText(MainActivity.this, "您点击了日期菜单", 2).show();
			break;
		default:
			break;
		}
		return true;
	}

	@Override
//	菜单打开时操作
	public void openOptionsMenu() {
		// TODO Auto-generated method stub
		Toast.makeText(MainActivity.this, "菜单打开", 2).show();
	}

	@Override
//	菜单关闭时操作
	public void onOptionsMenuClosed(Menu menu) {
		// TODO Auto-generated method stub
		Toast.makeText(MainActivity.this, "菜单关闭", 2).show();
	}

	@Override
//	菜单准备时操作
	public boolean onPrepareOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub
		Toast.makeText(MainActivity.this, "准备操作", 2).show();
		return true;
	}

}
</span>


2.上下文菜单的使用

接下来我们就使用listview来来进行演示上下文菜单,即长按 选项弹出菜单

就是讲contexMenu与listview相绑定,来相应用户的点击操作

XML文件

<span style="font-size:18px;">package com.example.menu2;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
	private String data[] = { "房泽龙", "22", "河南大学", "教育科学学院", "河南平顶山", "河南开封" };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		ListView listView = new ListView(this);//创建ListView
		listView.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_expandable_list_item_1, data));//绑定Adapter
		super.registerForContextMenu(listView);//为listview注册菜单
		super.setContentView(listView); //设置显示的内容

	}

	@Override//事件处理
	public boolean onContextItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
switch (item.getItemId()) {
case 1:
	Toast.makeText(MainActivity.this, "复制操作", 2).show();
	break;
case 2:
	Toast.makeText(MainActivity.this, "详情操作", 2).show();
	break;
case 3:
	Toast.makeText(MainActivity.this, "删除操作", 2).show();
	break;
case 4:
	Toast.makeText(MainActivity.this, "关闭操作", 2).show();
	break;
case 5:
	Toast.makeText(MainActivity.this, "分享操作", 2).show();
	break;
case 6:
	Toast.makeText(MainActivity.this, "编辑操作", 2).show();
	break;

default:
	break;
}

		return true;
	}

	@Override
	public void onContextMenuClosed(Menu menu) {
		// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "菜单关闭", 2).show();
	}

	@Override//增加菜单操作
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		// TODO Auto-generated method stub
		menu.setHeaderTitle("信息操作");
		menu.add(1000, 1, 1, "复制").setIcon(android.R.drawable.ic_menu_agenda);
		menu.add(1000, 2, 2, "详情").setIcon(android.R.drawable.ic_menu_info_details);
		menu.add(1000, 3, 3, "删除").setIcon(android.R.drawable.ic_menu_delete);
		menu.add(1000, 4, 4, "关闭").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
		menu.add(1000, 5, 5, "分享").setIcon(android.R.drawable.ic_menu_share);
		menu.add(1000, 6, 6, "编辑").setIcon(android.R.drawable.ic_menu_edit);
	}

}
</span>

同样选项菜单的配置也可以使用xml文件配置

<span style="font-size:18px;">    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <group android:id="@+id/group1">
            <item android:id="@+id/a1" android:title="复制"></item>
            <item android:id="@+id/a2" android:title="详情"></item>
            <item android:id="@+id/a3" android:title="删除"></item>
            <item android:id="@+id/a4" android:title="分享"></item>
            <item android:id="@+id/a5" android:title="发送"></item>
        </group>
    </menu>
</span>

JAVA文件

<span style="font-size:18px;">package com.example.menu3;

import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
	private String data[] = { "房泽龙", "22", "河南大学", "教育科学学院", "河南平顶山", "河南开封" };//数据

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		ListView listView = new ListView(this);//创建listview
		listView.setAdapter(new ArrayAdapter<String>(this,//设置adapter
				android.R.layout.simple_expandable_list_item_1, data));
		super.registerForContextMenu(listView);//注册选项菜单
		super.setContentView(listView); //设置显示的内容
	}

	@Override
	public boolean onContextItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		switch (item.getItemId()) {
		case R.id.a1:
			Toast.makeText(MainActivity.this, "复制操作", 2).show();
			break;
		case R.id.a2:
			Toast.makeText(MainActivity.this, "详情操作", 2).show();
			break;
		case R.id.a3:
			Toast.makeText(MainActivity.this, "删除操作", 2).show();
			break;
		case R.id.a4:
			Toast.makeText(MainActivity.this, "关闭操作", 2).show();
			break;
		case R.id.a5:
			Toast.makeText(MainActivity.this, "分享操作", 2).show();
			break;
		case 6:
			Toast.makeText(MainActivity.this, "编辑操作", 2).show();
			break;

		default:
			break;
		}

				return true;
	}

	@Override
	public void onContextMenuClosed(Menu menu) {
		// TODO Auto-generated method stub
		Toast.makeText(MainActivity.this, "菜单关闭", 2).show();
	}

	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		// TODO Auto-generated method stub
		super.getMenuInflater().inflate(R.menu.main, menu);//将菜单与xml文件中的菜单选项相绑定
		super.onCreateContextMenu(menu, v, menuInfo);//创建菜单
		menu.setHeaderTitle("信息操作");//设置上下文菜单标题
	}

}
</span>

上下文菜单多用电话本,信息等地方,来实现对所选项的进一步操作

3.子菜单操作

所谓子菜单就是点击一个菜单后不会立马进行相关事件操作,而是由跳出第二个菜单让用户进行选择,点击二级菜单后再进行事件操作,这就是子菜单


1

public abstract MenuItem getItem()

普通

得到一个子菜单所属的父菜单对象

2

public abstract SubMenu setHeaderIcon(int iconRes)

普通

设置菜单的显示图标

3

public abstract SubMenu setHeaderTitle(int titleRes)

普通

设置子菜单的显示标题

4

public abstract SubMenu setHeaderTitle(CharSequence title)

普通

设置子菜单的显示标题

5

public abstract SubMenu setIcon(int iconRes)

普通

设置每个子菜单项的图标
<span style="font-size:18px;">package com.example.menu4;

import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast;

public class MainActivity extends Activity {
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {		// 显示菜单
		SubMenu fileMenu = menu.addSubMenu("文件");	// 子菜单
		SubMenu editMenu = menu.addSubMenu("编辑");	// 子菜单
		fileMenu.add(1000, 1, 1, "新建") ;	// 子菜单项
		fileMenu.add(1000, 2, 2, "打开") ;	// 子菜单项
		fileMenu.add(1000, 3, 3, "保存") ;	// 子菜单项
		editMenu.add(1000, 4, 4, "撤消");	// 子菜单项
		editMenu.add(1000, 5, 5, "恢复");	// 子菜单项
		return true ;
	}
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {	// 选中某个菜单项
		switch (item.getItemId()) {		// 判断菜单项ID
		case 1:
			Toast.makeText(this, "您选择的是“添加联系人”项。", Toast.LENGTH_LONG).show();
			break;
		case  2:
			Toast.makeText(this, "您选择的是“查看详情”项。", Toast.LENGTH_LONG).show();
			break;
		case 3:
			Toast.makeText(this, "您选择的是“删除信息”项。", Toast.LENGTH_LONG).show();
			break;
		case 4:
			Toast.makeText(this, "您选择的是“另存为”项。", Toast.LENGTH_LONG).show();
			break;
		case 5:
			Toast.makeText(this, "您选择的是“编辑”项。", Toast.LENGTH_LONG).show();
			break;
		}
		return false;
	}
}
</span>

同样,子菜单的选项也可以使用xml文件进行配置

<span style="font-size:18px;">    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <group android:id="@+id/group1">
            <item android:id="@+id/item1" android:title="新建"></item>
            <item android:id="@+id/item2" android:title="打开"></item>
            <item android:id="@+id/item3" android:title="保存"></item>
        </group>
    </menu>
</span>
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <group android:id="@+id/group1">
        <item android:id="@+id/item4" android:title="撤销"></item>
        <item android:id="@+id/item5" android:title="恢复"></item>
    </group>

</menu>
</span>

JAVA文件

<span style="font-size:18px;">package com.example.menu5;

import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		switch (item.getItemId()) {
		case R.id.item1:
			Toast.makeText(MainActivity.this, "新建", 2).show();
			break;
		case R.id.item2:
			Toast.makeText(MainActivity.this, "打开", 2).show();
			break;
		case R.id.item3:
			Toast.makeText(MainActivity.this, "保存", 2).show();
			break;
		case R.id.item4:
			Toast.makeText(MainActivity.this, "撤销", 2).show();
			break;
		case R.id.item5:
			Toast.makeText(MainActivity.this, "恢复", 2).show();
			break;

		default:
			break;
		}

		return true;
	}

	@Override
	public void onOptionsMenuClosed(Menu menu) {
		// TODO Auto-generated method stub
		Toast.makeText(MainActivity.this, "菜单关闭", 2).show();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		SubMenu fileMenu = menu.addSubMenu("文件");
		SubMenu editMenu = menu.addSubMenu("编辑");
		getMenuInflater().inflate(R.menu.file_menu, fileMenu);//将文件子菜单与xml绑定
		getMenuInflater().inflate(R.menu.edit_menu, editMenu);//将编辑子菜单与xml绑定
		return true;
	}

}
</span>

在android中菜单是不可获取的一部分,掌握好菜单的使用是android开发者的必备技能.

下节预报

AnalogClock与DigitalClock时钟组件

时间: 2024-11-07 19:10:51

从零开始学android<Menu菜单组件.三十.>的相关文章

从零开始学android&lt;android事件的处理方式.二十四.&gt;

在android中一共有 多种事件,每种事件都有自己相对应的处理机制 如以下几种 1 单击事件 View.OnClickListener public abstract void onClick (View v) 单击组件时触发 2 单击事件 View.OnLongClickListener public abstract boolean onLongClick (View v) 长按组件时触发 3 键盘事件 View.OnKeyListener public abstract boolean

二十四、Android文件的读写

Android的文件读写与JavaSE的文件读写相同,都是使用IO流.而且Android使用的正是JavaSE的IO流,下面我们通过一个练习来学习Android的文件读写. 1.创建一个Android工程 [html] view plaincopy Project name:File BuildTarget:Android2.2 Application name:文件读写 Package name:test.file Create Activity:DateActivity Min SDK Ve

Android学习笔记二十四之ListView列表视图二

Android学习笔记二十四之ListView列表视图二 前面一篇我们介绍了常用的几种适配器的简单实现和ListView的简单使用,这一篇中,我们介绍一下ListView的优化和一些其它的问题. ListView优化方法一 在ListView中,我们最常用的就是自定义Adapter,在我们自定义Adapter中,需要实现两个比较重要的方法getCount()和getView(),前者是负责计算ListView的总Item数,后者是生成Item,有多少个Item就会调用getView()方法多少次

Android学习路线(二十四)ActionBar Fragment运用最佳实践

通过前面的几篇博客,大家看到了Google是如何解释action bar和fragment以及推荐的用法.俗话说没有demo的博客不是好博客,下面我会介绍一下action bar和fragment在实战中的应用,以及相关demo源码,希望和大家相互交流. 了解过fragment的同学们应该都知道,fragment是android 3.0版本才出现的的,因此如果要在支持android 3.0一下版本的工程中使用fragment的话是需要添加Support Library的.具体如何添加我就不再赘述

Android 沉浸式状态栏 实现方式二 ( 更简单 )

以前写过一个沉浸式状态栏 的实现方式 Android 沉浸式状态栏 实现方式一 现在有个更为简单的实现方式 . 相关链接 http://www.apkbus.com/forum.php?mod=viewthread&tid=255929&extra=page%3D3%26filter%3Dsortid%26orderby%3Ddateline%26sortid%3D12 1.效果图 demo 的 github 地址  https://github.com/zyj1609wz/Android

Android笔记二十四.Android基于回调的事件处理机制

如果说事件监听机制是一种委托式的事件处理,那么回调机制则与之相反,对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,或者说事件监听器完全消失了,当用户在GUI控件上激发某个事件时,控件自己特定的方法将会负责处理该事件. 转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.View类的常见回调方法 为了使用回调机制来处理GUI控件上所发生的事件,需要为该组件提供对应的事件处理方法,而Java又是一种静态语言,我们无法为每个对象动态地添

Android开发系列(二十四):Notification的功能与用法

关于消息的提示有两种:一种是Toast,一种就是Notification.前者维持的时间比较短暂,后者维持的时间比较长. 而且我们平常手机的应用比如网易.贴吧等等都有很多的推送消息,就是用Notification实现的. Notification是显示在手机状态栏的通知-手机状态栏位于手机屏幕的上方.程序一般通过NotificationManager服务来发送Notification通知 Notification的一些方法,接下来我们都能够用到: setDefaults():设置通知LED等.音

Android学习笔记二十四.Service入门(二)绑定本地Service并与之通信

绑定本地Service并与之通信    通过上一篇博文的前3步,我们就算完成了一个Service及使用该Service的应用程序(Service为该应用程序的组成部分).但当程序通过startService()和stopService()启动.关闭Service时,Service与访问者之间基本上不存在太多的关联,因此Service和访问者之间也无法进行通信.数据交换.如果我们希望开发的Service能与访问者之间实现方法调用或数据交换,我们可以让访问者使用bindService()和unbin

Android开发系列(二十四):Notification的功能与使用方法

关于消息的提示有两种:一种是Toast,一种就是Notification.前者维持的时间比較短暂,后者维持的时间比較长. 并且我们寻常手机的应用比方网易.贴吧等等都有非常多的推送消息.就是用Notification实现的. Notification是显示在手机状态栏的通知-手机状态栏位于手机屏幕的上方.程序一般通过NotificationManager服务来发送Notification通知 Notification的一些方法.接下来我们都可以用到: setDefaults():设置通知LED等.

《Android源码设计模式解析与实战》读书笔记(二十四)

第二十四章.桥接模式 桥接模式也称为桥梁模式,是结构型设计模式之一.桥接模式中体现了"单一职责原则"."开闭原则"."里氏替换原则"."依赖倒置原则"等.同时它也是很实用的一种模式. 1.定义 将抽象部分与现实部分分离,使它们都可以独立地进行变化. 2.使用场景 (1)如果一个系统需要在构建的抽象化角色和具体角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系. (2)对于那些不希望使用继承或因为多层次继承导致系统类