`
407827531
  • 浏览: 1076454 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

自定义系统菜单的背景

 
阅读更多

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

不多说,上图,见代码。

 


 

 

 

 

  1. package lab.sodino.menutest;  
  2. import android.content.Context;  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.os.Handler;  
  6. import android.util.AttributeSet;  
  7. import android.view.InflateException;  
  8. import android.view.LayoutInflater;  
  9. import android.view.Menu;  
  10. import android.view.MenuInflater;  
  11. import android.view.MenuItem;  
  12. import android.view.View;  
  13. import android.widget.Toast;  
  14. /** 
  15.  * @author Sodino E-mail:sodinoopen@hotmail.com 
  16.  * @version Time:2011-1-26 下午04:42:04 
  17.  */  
  18. public class MenuAct extends Activity {  
  19.     @Override  
  20.     public void onCreate(Bundle savedInstanceState) {  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.main);  
  23.     }  
  24.     public boolean onCreateOptionsMenu(Menu menu) {  
  25.         super.onCreateOptionsMenu(menu);  
  26.         MenuInflater inflater = new MenuInflater(getApplicationContext());  
  27.         inflater.inflate(R.menu.menu, menu);  
  28.         setMenuBackground();  
  29.         return true;  
  30.     }  
  31.     public boolean onOptionsItemSelected(MenuItem item) {  
  32.         String info = "";  
  33.         switch (item.getItemId()) {  
  34.         case R.id.menu_add:  
  35.             info = "Add";  
  36.             break;  
  37.         case R.id.menu_delete:  
  38.             info = "Delete";  
  39.             break;  
  40.         case R.id.menu_home:  
  41.             info = "Home";  
  42.             break;  
  43.         case R.id.menu_help:  
  44.             info = "Help";  
  45.             break;  
  46.         default:  
  47.             info = "NULL";  
  48.             break;  
  49.         }  
  50.         Toast toast = Toast.makeText(this, info, Toast.LENGTH_SHORT);  
  51.         toast.show();  
  52.         return super.onOptionsItemSelected(item);  
  53.     }  
  54.     // 关键代码为重写Layout.Factory.onCreateView()方法自定义布局  
  55.     protected void setMenuBackground() {  
  56.         MenuAct.this.getLayoutInflater().setFactory(new android.view.LayoutInflater.Factory() {  
  57.             /** 
  58.              * name - Tag name to be inflated.<br/> 
  59.              * context - The context the view is being created in.<br/> 
  60.              * attrs - Inflation attributes as specified in XML file.<br/> 
  61.              */  
  62.             public View onCreateView(String name, Context context, AttributeSet attrs) {  
  63.                 // 指定自定义inflate的对象  
  64.                 if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {  
  65.                     try {  
  66.                         LayoutInflater f = getLayoutInflater();  
  67.                         final View view = f.createView(name, null, attrs);  
  68.                         new Handler().post(new Runnable() {  
  69.                             public void run() {  
  70.                                 // 设置背景图片  
  71.                                 view.setBackgroundResource(R.drawable.menu_background);  
  72.                             }  
  73.                         });  
  74.                         return view;  
  75.                     } catch (InflateException e) {  
  76.                         e.printStackTrace();  
  77.                     } catch (ClassNotFoundException e) {  
  78.                         e.printStackTrace();  
  79.                     }  
  80.                 }  
  81.                 return null;  
  82.             }  
  83.         });  
  84.     }  
  85. }  

 

 

 

/res/menu/menu.xml

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:id="@+id/menu_add" android:title="Add" android:icon="@drawable/menu_add"></item>  
  4.     <item android:id="@+id/menu_delete" android:title="Delete" android:icon="@drawable/menu_delete"></item>  
  5.     <item android:id="@+id/menu_home" android:title="Home" android:icon="@drawable/menu_home"></item>  
  6.     <item android:id="@+id/menu_help" android:title="Help" android:icon="@drawable/menu_help"></item>  
  7. </menu>  

 

 

  • 大小: 13.4 KB
分享到:
评论

相关推荐

    Android编程实现自定义系统菜单背景的方法

    在Android开发中,自定义系统菜单背景涉及到对Android菜单(Menu)的操作以及对视图(View)背景的设置。下面将详细阐述如何实现这一功能。 首先,Android菜单主要用于在应用程序中展示可选的操作,通常在顶部选项...

    自定义鼠标右键菜单背景图片工具

    "自定义鼠标右键菜单背景图片工具"正是满足这种需求的软件,它允许用户根据个人喜好更改鼠标右键弹出菜单的背景图片,提升使用体验和视觉效果。 首先,我们来了解一下鼠标右键菜单的基本概念。右键菜单,也称为上...

    MFC 自定义菜单栏背景颜色,位置,宽度,高度,选中高亮

    本文将深入探讨如何实现MFC菜单栏的背景颜色、位置、宽度、高度以及选中高亮的自定义设置。 首先,我们要理解MFC中的菜单系统。在MFC中,菜单通常通过`CMenu`类来操作,而菜单栏则由`CFrameWnd`或其派生类(如`...

    用PopupWindow自定义系统菜单

    总结起来,`PopupWindow`和`PopupMenu`是Android开发中实现自定义系统菜单的利器,它们为开发者提供了展示额外功能的灵活方式,同时也保证了良好的用户体验。通过学习和掌握这些知识,开发者可以更加自如地构建满足...

    怎么美化和自定义Win7鼠标右键菜单背景?.docx

    在Windows 7系统中,右键菜单背景的美化和自定义是非常重要的,因为它可以提高用户的视觉体验和操作体验。魔方电脑大师的魔方美化大师功能提供了一个非常方便的方式来实现右键菜单背景的美化和自定义。 最后,需要...

    基于wxwidgets实现的自定义菜单

    在本文中,我们将深入探讨如何使用wxWidgets库来实现自定义菜单功能。wxWidgets是一个流行的跨平台C++库,它提供了丰富的GUI(图形用户界面)组件,使得开发者能够轻松地创建具有吸引力的桌面应用程序。 首先,我们...

    uni-app-小程序自定义底部菜单样式示例

    通过创建自定义组件,结合Vue的响应式系统和事件系统,我们可以轻松地实现底部菜单的样式定制及功能交互。同时,利用uni-app的跨平台能力,这些自定义组件可以无缝地在各个小程序和H5环境中运行,大大提高了开发效率...

    WPF自定义左侧折叠菜单

    - `DataTrigger`:根据菜单项的展开状态改变控件的视觉效果,例如改变背景色或图标。 5. **数据绑定** - 使用`ObservableCollection`存储菜单项数据,这样在运行时可以动态添加、删除或修改菜单项。 - 数据上...

    MFC菜单重写可实现自定义菜单

    1. 原因:标准的MFC菜单系统虽然提供了丰富的功能,但可能无法满足所有用户的定制需求。例如,你可能希望改变菜单的样式,如颜色、字体或图标;或者添加动态行为,如根据用户状态改变菜单项的可见性。 2. 方法:在...

    自定义Android菜单oc

    在Android开发中,自定义菜单背景能够为应用增添独特的风格,提升用户体验。默认情况下,Android系统的菜单背景通常是白色,但通过编程方式,我们可以轻松实现个性化菜单背景。以下是如何自定义Android菜单背景的...

    自定义实现菜单渐变类

    本教程将探讨如何通过自定义实现菜单渐变类来为应用程序增添动态色彩效果。渐变色菜单能够提供更丰富的视觉体验,使得用户界面更具现代感和专业性。 首先,让我们理解“菜单”在编程中的概念。在软件或应用中,菜单...

    自定义圆形菜单

    首先,创建自定义圆形菜单的关键在于理解Android的视图系统。在Android中,View是所有用户界面元素的基础类,它负责绘制UI并在用户与屏幕交互时处理事件。为了创建一个圆形菜单,我们需要创建一个新的类,这个类将...

    android 自定义Android菜单背景的代码

    这些文章提供了更多关于自定义Android菜单的实践案例和技术细节,帮助你深入理解并掌握自定义菜单背景以及Android UI自定义的各种技巧。通过不断学习和实践,你可以创建出更加符合应用风格和用户体验的自定义菜单。

    js模拟windows系统自定义多级右键菜单

    3. **CSS样式**:为了使菜单看起来更像Windows系统的右键菜单,我们需要为菜单项设置合适的CSS样式,包括背景色、边框、字体等。此外,还需要处理菜单的定位,使其在鼠标点击的位置出现。例如: ```css .context-...

    自定义弧形菜单

    在onDraw()方法中,我们可以使用Canvas进行绘制,比如画出弧形背景、菜单项的边界等。还可以使用Paint对象来设置颜色、线条样式等属性,进一步提升界面的美观度。 总之,"自定义弧形菜单"项目展示了如何在Android中...

    flex 自定义右键菜单

    本文将深入探讨两种实现Flex自定义右键菜单的方法:系统右键菜单的扩展以及完全自定义的右键菜单。 1. **系统右键菜单** 系统右键菜单是在Flex应用中利用ActionScript 3.0直接添加到UI组件上的菜单项。这种实现...

    QT样式(包含:系统托盘,独立标题栏,自定义菜单,窗口自由移动,样式效果)

    在QT样式中,我们可以看到多种功能的实现,如系统托盘、独立标题栏、自定义菜单、窗口自由移动以及各种样式效果。以下将详细讲解这些知识点。 1. **系统托盘**:系统托盘是应用程序在任务栏或通知区域中显示图标的...

    自定义菜单样式

    在Android应用开发中,自定义菜单样式是一项常用的技术,它能帮助开发者打造出独特且符合品牌风格的用户界面,提升用户体验。本教程将深入探讨如何在Android中实现自定义菜单样式的详细步骤,以及相关的源码解析。 ...

Global site tag (gtag.js) - Google Analytics