效果展示
源碼
/*
* @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
牙叔教程
微信公衆号 牙叔教程
QQ群
747748653