android在學習——Menu背景圖片,背景色的設定

來源:互聯網
上載者:User

今天研究了一下午,終於整出了,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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.