• 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();
    }
    }

    上面的代码是建立在别人的代码之上的。他没有写背景,我给加上的。

    希望牛人给些建议,也有利于我的进步

  • 相关阅读:
    poj-1001 求高精度幂
    ECS训练营Day1—基于阿里云ECS、VuePress搭建静态网站
    阿里云免费领马克杯答案
    白盒测试之逻辑覆盖 简单易懂~
    如何合并多个PPT?
    failed to connect to gitee.com/github/gitlab port 443: timed out之类的错误
    解决 These dependencies were not found: * core-js/modules/es6.array.fill in xxx 之类的问题
    vue内嵌iframe跨域通信
    Luffy之课程详情页
    Flask之SQLAlchemy,flask_session以及蓝图
  • 原文地址:https://www.cnblogs.com/winxiang/p/2370257.html
Copyright © 2020-2023  润新知