天天看點

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按鈕

繼續閱讀