效果展示
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL5V1RipWNXR2csdVW150MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3ITOyUDMxgTM1IDNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
源码
/*
* @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