android基础入门AcitonBar使用(7)

一.ActionBar:

   ActionBar替代了传统的位于设备屏幕顶部的标题栏,它显示应用程序的图标和活动名称。我们还可以向ActionBar中添加动作项,动作项是应用程序中经常执行的一些操作快捷方式。

 代码实现添加:

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.
		super.onCreateOptionsMenu(menu);
		CreateMenu(menu);
		return true;
	}
    private boolean MenuChoice(MenuItem item){
    	switch(item.getItemId()){
    	case 0:
    		toastPrint("点击了一动作项");
    		return true;
    	case 1:
    		toastPrint("点击了二动作项");
    		return true;
    	case 2:
    		toastPrint("点击了三动作项");
    		return true;
    	case 3:
    		toastPrint("点击了四动作项");
    		return true;
    	case 4:
    		toastPrint("点击了五动作项");
    		return true;
    	}
    	return false;
    	
    }
    public void toastPrint(String str){
		
		Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
		
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		return MenuChoice(item);
	}
	
	private void CreateMenu(Menu menu){
		MenuItem mn1 = menu.add(0,0,0," 一 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		}
		MenuItem mn2 = menu.add(0,1,1," 二 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		}
		MenuItem mn3 = menu.add(0,2,2," 三 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		}
		MenuItem mn4 = menu.add(0,3,3," 四 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		}
		MenuItem mn5 = menu.add(0,4,4," 五 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
		}
		
     }
 	
}


onCreateOptionsMenu()方法,为ActionBar添加动作项。调用了CreateMenu()方法来显示一个菜单项列表,为了使菜单项显示为动作项,使用MenuItem.SHOW_AS_ACTION_IF_ROOM常量调用其setShowAsAction()方法,这是告知android设备上如果ActionBar上有空间,将该菜单项显示为一个动作项,当用户点击一个菜单项时,onOptionsItemSelected()方法被调用,然后通过MenuChoice()方法来检测那个菜单项被点击输出提示信息。

menu.add(参数1,参数2,参数3,参数4);

参数1:int类型group ID参数代表组概念几菜单项归组便更好组方式管理菜单按钮。

参数2:int类型item ID参数代表项目编号参数非常重要item ID对应menu选项面使用菜单时候靠item ID来判断使用哪选项。

参数3:int类型order ID参数代表菜单项显示顺序默认0表示菜单显示顺序按照add显示顺序来显示。

参数4:String类型title参数表示选项显示文字。

界面显示:

点击menu按钮:

android基础入门AcitonBar使用(7)

android基础入门AcitonBar使用(7)



前面的例子中在菜单项中没有显示菜单的文本内容,如果想要为动作项同时显示图标和文本,可以使用‘ | ‘操作符加上MenuItem.SHOW_AS_ACTION_WITH_TEXT常量:

示例:

MenuItem mn1 = menu.add(0,0,0," 一 ");
		{
			mn1.setIcon(R.drawable.ic_launcher);
			mn1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM|MenuItem.SHOW_AS_ACTION_WITH_TEXT);
		}


常用显示类型:

MenuItem.SHOW_AS_ACTION_IF_ROOM 有位置才显示
MenuItem.SHOW_AS_ACTION_ALWAYS 始终显示
MenuItem.SHOW_AS_ACTION_NEVER 永不显示
MenuItem.SHOW_AS_ACTION_WITH_TEXT 显示字符串

 

当我们有时候应用程序图标设置点击事件:

这时就需要修改MenuChoice()方法:

 private boolean MenuChoice(MenuItem item){
    	switch(item.getItemId()){
    	case android.R.id.home:
    		toastPrint("应用图标");
    		return true;
    	case 0:
    		toastPrint("点击了一动作项");
    		return true;
    	case 1:
    		toastPrint("点击了二动作项");
    		return true;
    	case 2:
    		toastPrint("点击了三动作项");
    		return true;
    	case 3:
    		toastPrint("点击了四动作项");
    		return true;
    	case 4:
    		toastPrint("点击了五动作项");
    		return true;
    	}
    	return false;
    	
    }

还需要在onCreate()中添加:

protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		ActionBar bar = getActionBar();
		bar.setDisplayHomeAsUpEnabled(true);
	}


setDisplayHomeAsUpEnabled(true)此方法设置程序图标可以点击。不设置则点击不了。


android基础入门AcitonBar使用(7)



我们也可以通过点击图标来跳转到其它Activity:
在本个例子中在创建一个Activity,名称为HelloWorld.java,不添加任何内容,只有一个TextView控件显示。
public class HelloWorld extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_hello_word);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.hello_word, menu);
		return true;
	}

}
修改MenuChoice()方法:
private boolean MenuChoice(MenuItem item){
    	switch(item.getItemId()){
    	case android.R.id.home:
    		toastPrint("应用图标");
    		Intent i = new Intent(this,HelloWorld.class);
    		startActivity(i);
    		return true;
    	case 0:
    		toastPrint("点击了一动作项");
    		return true;
    	case 1:
    		toastPrint("点击了二动作项");
    		return true;
    	case 2:
    		toastPrint("点击了三动作项");
    		return true;
    	case 3:
    		toastPrint("点击了四动作项");
    		return true;
    	case 4:
    		toastPrint("点击了五动作项");
    		return true;
    	}
    	return false;
    	
    }

当点击应用程序图标后会自动跳转到HelloWorld。
界面显示:
android基础入门AcitonBar使用(7)




android基础入门AcitonBar使用(7),布布扣,bubuko.com

android基础入门AcitonBar使用(7)

上一篇:android模块化app开发笔记-2插件间布局文件共享


下一篇:Android内存之VSS/RSS/PSS/USS