今天研究了一下午,終於整出了,menu的背景圖片和背景色的設定。效果如,呵呵不太好看啊
這我就不管了,只作為參考,你們自己看看吧。代碼如下:
package com.hooypay.Activity;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Color;import android.os.Handler;import android.util.AttributeSet;import android.util.Log;import android.view.InflateException;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.LayoutInflater.Factory;public class MenuActivity extends BaseGroupActivity { private Intent intent; private static final String TAG = "DEBUG"; //建立menu,Activity調用onCreateOptionsMenu(Menu menu)方法,傳一個實現Menu介面的menu對象,供使用。 @Override public boolean onCreateOptionsMenu(Menu menu){ //menu.add()裡面有四個參數依次是: //第一個,組別。 //第二個,ID。是menu識別編號,供識別menu用的。很重要。 //第三個,順序。這個參數的大小決定菜單出現的先後順序。順序是參數由小到大,菜單從左至右,從上到下排列。一行最多三個。 //第四個,顯示文本。 menu.add(0,Menu.FIRST,0,"首頁").setIcon(R.drawable.conf_home); menu.add(0,Menu.FIRST+1,1,"我的訂單").setIcon(android.R.drawable.ic_menu_save); menu.add(0,Menu.FIRST+2,2,"個人資訊").setIcon(android.R.drawable.ic_menu_send); menu.add(1,Menu.FIRST+3,3,"更多").setIcon(R.drawable.conf_more); menu.add(1,Menu.FIRST+4,4,"退出").setIcon(android.R.drawable.ic_menu_delete); menu.add(1,Menu.FIRST+5,5,"協助").setIcon(android.R.drawable.ic_menu_help); setMenuBackground(); intent= new Intent(); return true; } //設定menu菜單的背景 protected void setMenuBackground(){ Log.d(TAG, "Enterting setMenuBackGround"); getLayoutInflater().setFactory( new Factory() { @Override public View onCreateView ( String name, Context context, AttributeSet attrs ) { if ( name.equalsIgnoreCase( "com.android.internal.view.menu.IconMenuItemView" ) ) { try { // Ask our inflater to create the view LayoutInflater f = getLayoutInflater(); final View view = f.createView( name, null, attrs ); new Handler().post( new Runnable() { public void run () {// view.setBackgroundResource( R.drawable.menu_backg);//設定背景圖片 view.setBackgroundColor(new Color().GREEN);//設定背景色 } } ); return view; } catch ( InflateException e ) {} catch ( ClassNotFoundException e ) {} } return null; } }); } //功能表項目選擇事件 @Override public boolean onOptionsItemSelected(MenuItem item){ switch(item.getItemId()){ case Menu.FIRST: intent.setClass(MenuActivity.this, MainActivity.class); throudIntent(intent); break; case Menu.FIRST+1: intent.setClass(MenuActivity.this, OrderActivity.class); throudIntent(intent); break; case Menu.FIRST+2: intent.setClass(MenuActivity.this, UserInfoActivity.class); throudIntent(intent); break; case Menu.FIRST+3: intent.setClass(MenuActivity.this, HomeTabGroup.class); throudIntent(intent); break; case Menu.FIRST+4: isExit(); break; case Menu.FIRST+5:// Toast.makeText(this,"協助菜單被點擊了",Toast.LENGTH_SHORT).show(); break; } return false; } //菜單被顯示之前的事件 @Override public boolean onPrepareOptionsMenu(Menu menu){// Toast.makeText(this,"菜單被顯示之前的事件,可以在這裡調整菜單",Toast.LENGTH_LONG).show(); return true; //必須返回True才能調用onCreateOptionsMenu(Menu menu)方法。 } //選擇菜單的關閉事件。 //有三種關閉方式,menu按鈕再被點擊,back按鈕被點擊,使用者選擇另一個功能表項目。 @Override public void onOptionsMenuClosed(Menu menu){// Toast.makeText(this,"菜單被關閉了",Toast.LENGTH_SHORT).show(); } //跳轉到其他頁面 private void throudIntent(Intent intent){ startActivity(intent); } //提示是否退出 public void isExit(){ AlertDialog.Builder alertbBuilder = new AlertDialog.Builder(this); alertbBuilder.setIcon(R.drawable.infoicon).setTitle("提示...").setMessage("你確定要離開用戶端嗎?"); alertbBuilder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(); intent.putExtra("exit", "exit");//添加參數,這是退出的依據 intent.setClass(MenuActivity.this, loginActivity.class);//跳轉到login介面,根據參數退出 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG設定,clear所有Activity記錄 startActivity(intent);//注意啊,在跳轉的頁面中進行檢測和退出 } }); alertbBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }).create(); alertbBuilder.show(); }}
上面的代碼是建立在別人的代碼之上的。他沒有寫背景,我給加上的。
希望牛人給些建議,也有利於我的進步
轉自:http://www.cnblogs.com/winxiang/archive/2012/02/27/2370257.html