1. 程式人生 > >android在學習——Menu背景圖片,背景色的設定

android在學習——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();
    }
}