天天看点

autojs-Toolbar添加Menu按钮

效果展示

autojs-Toolbar添加Menu按钮

源码

/*
 * @Author: 大柒
 * @QQ: [email protected]
 * @Date: 2021-04-25 14:42:35
 * @Version: Auto.Js Pro
 * @Description:
 * @LastEditors: 牙叔
 * @LastEditTime: 2021-04-25 18:04:13
 */
"ui";

importClass(android.view.MenuItem);
importClass(android.graphics.Bitmap);
importClass(android.graphics.BitmapFactory);
importClass(android.graphics.drawable.ColorDrawable);
importClass(android.graphics.drawable.BitmapDrawable);

const resources = context.getResources();
const scale = resources.getDisplayMetrics().density;
const MENU_CONFIRM = 17;

ui.layout(
  <vertical>
    <appbar>
      <toolbar id="toolbar" title="ToolBar" subtitle="大柒Se7en" />
    </appbar>
  </vertical>
);

let mToolbar = ui.toolbar;
let bmp = images.read("海贼王全体照片.png").getBitmap();
mToolbar.setBackgroundDrawable(new BitmapDrawable(bmp));

activity.setSupportActionBar(mToolbar);

// menu.add方法的参数:
// 第一个int类型的groupID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。
// 第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个itemID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。
// 第三个int类型的orderID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。
// 第四个String类型的title参数,表示选项中显示的文字。

ui.emitter.on("create_options_menu", (menu) => {
  //添加按钮
  let item = menu.add(0, MENU_CONFIRM, 0, "启动");
  //指定按钮显示的位置
  item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
  //获取指定大小的内置资源Drawable
  let mDrawable = getResDrawable("ic_play_arrow_black_48dp", 24);
  //图片着色
  mDrawable.setTint(colors.parseColor("#FFFFFF"));
  //设置item图标
  item.setIcon(mDrawable);

  item = menu.add(0, 2, 0, "艾斯");
  item.setIcon(getDrawable("海贼王/艾斯.jfif", 120));
  item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
  item = menu.add(0, 3, 0, "白胡子");
  item.setIcon(getDrawable("海贼王/白胡子.jfif", 120));
  item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

  return true;
});

function getDrawable(filePath, size) {
  size = size || 36;
  let oldBmp = images.read(filePath).getBitmap();
  let newBmp = Bitmap.createScaledBitmap(oldBmp, dp2px(size), dp2px(size), true);
  return new BitmapDrawable(newBmp);
}

ui.emitter.on("options_item_selected", (e, item) => {
  switch (item.getTitle()) {
    case "启动":
      toastLog("点击了启动");
      break;
    case "艾斯":
      toastLog("有个爱闯祸的弟弟,哥哥总是要特别担心");
      break;
    case "路飞":
      toastLog("我是要成为海贼王的男人");
      break;
    case "白胡子":
      toastLog("做我儿子吧");
      break;
  }
  e.consumed = true;
});

/**
 * 获取内置资源的Drawable
 * @param {*} resName
 * @param {*} size
 */
function getResDrawable(resName, size) {
  let oldBmp = BitmapFactory.decodeResource(resources, getResDrawableID(resName));
  let newBmp = Bitmap.createScaledBitmap(oldBmp, dp2px(size), dp2px(size), true);
  let drawable = new BitmapDrawable(resources, newBmp);
  oldBmp.recycle();
  return drawable;
}

/**
 * 获取内质资源 DrawableID
 * @param {*} name
 */
function getResDrawableID(name) {
  return resources.getIdentifier(name, "drawable", context.getPackageName());
}

/**
 * Dp转Px
 * @param {*} dp
 * @returns
 */
function dp2px(dp) {
  return parseInt(Math.floor(dp * scale + 0.5));
}

/**
 * Px转Dp
 * @param {*} px
 * @returns
 */
function px2dp(px) {
  return parseInt(Math.floor(px / scale + 0.5));
}

           

声明

部分内容来自网络

bilibili

牙叔教程

微信公众号 牙叔教程

autojs-Toolbar添加Menu按钮

QQ群

747748653

autojs-Toolbar添加Menu按钮

继续阅读