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


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

上面的代碼是建立在別人的代碼之上的。他沒有寫背景,我給加上的。

希望牛人給些建議,也有利於我的進步


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM