android在學習——Menu背景圖片,背景色的設定
阿新 • • 發佈:2019-01-27
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(); } }