Skip to content
On this page

悬浮窗相关

javascript
const core = require('cheese-js');

请求悬浮窗权限:requestPermission(timeout: number): boolean

参数:

  • number (timeout): 超时时间/s

返回值:

  • 🟢boolean: true
  • 🔴boolean: false

用法示例:

javascript
const floatingwindow = core.floatingwindow;
if (floatingwindow.requestPermission(3)) {
    console.log("请求成功")
}

检查悬浮窗权限:checkPermission(): boolean

返回值:

  • 🟢boolean:true
  • 🔴boolean:fasle

用法示例:

javascript
const floaty = core.floaty;
if (floaty.checkPermission()) {
    console.log("悬浮窗权限正常")
}

悬浮窗根:with(): EasyWindow<any>

扩展方法:

  • 宽:setWidth(width:number)
  • 高:setHeight(height:number)
  • 显示类型:setWindowType()
  • 标记:addWindowFlags()
  • 显示时长:setDuration()
  • 可拖动:setDraggable()

返回值:

  • 🟢EasyWindow<any>:悬浮窗根对象
  • 🔴null

用法示例:

javascript
const core = require('cheese-js'); //导入核心模块
//我们利用rhino的反射功能直接反射android的view相关api创建一个按钮+输入框的简单页面 并用悬浮窗展示出来
const env = core.env;
var LinearLayout = android.widget.LinearLayout;
var EditText = android.widget.EditText;
var Button = android.widget.Button;
var Toast = android.widget.Toast;
var Gravity = android.view.Gravity;
var Color = android.graphics.Color;
var ShapeDrawable = android.graphics.drawable.ShapeDrawable;
var RoundRectShape = android.graphics.drawable.shapes.RoundRectShape;

// 创建主布局
var mainLayout = new LinearLayout(env.activity);
mainLayout.setOrientation(LinearLayout.VERTICAL);
mainLayout.setGravity(Gravity.CENTER);
mainLayout.setPadding(32, 32, 32, 32);
mainLayout.setBackgroundColor(Color.parseColor("#F5F5F5"));

// 创建圆角背景
var outerRadii = [20, 20, 20, 20, 20, 20, 20, 20];
var roundRectShape = new RoundRectShape(outerRadii, null, null);
var shapeDrawable = new ShapeDrawable(roundRectShape);
if (android.os.Build.VERSION.SDK_INT >= 29) {
    shapeDrawable.getPaint().setColor(Color.pack(Color.WHITE));
} else {
    shapeDrawable.getPaint().setColor(Color.WHITE);
}





// 创建输入框
var editText = new EditText(env.activity);
editText.setHint("请输入内容");
editText.setBackground(shapeDrawable);
editText.setPadding(24, 24, 24, 24);
editText.setTextSize(16);
editText.setTextColor(Color.parseColor("#333333"));
editText.setHintTextColor(Color.parseColor("#999999"));

// 创建按钮
var button = new Button(env.activity);
button.setText("提交");
button.setTextSize(16);
button.setTextColor(Color.WHITE);
button.setPadding(32, 16, 32, 16);

// 创建按钮背景
var buttonOuterRadii = [40, 40, 40, 40, 40, 40, 40, 40];
var buttonRoundRectShape = new RoundRectShape(buttonOuterRadii, null, null);
var buttonShapeDrawable = new ShapeDrawable(buttonRoundRectShape);
if (android.os.Build.VERSION.SDK_INT >= 29) {
    buttonShapeDrawable.getPaint().setColor(android.graphics.Color.pack(android.graphics.Color.parseColor("#6200EE")));
} else {
    buttonShapeDrawable.getPaint().setColor(android.graphics.Color.parseColor("#6200EE"));
}

button.setBackground(buttonShapeDrawable);

// 设置按钮点击事件
button.setOnClickListener(function() {
    var text = editText.getText().toString();
    if (text.length() > 0) {
        Toast.makeText(env.activity, "您输入了: " + text, Toast.LENGTH_SHORT).show();
    } else {
        Toast.makeText(env.activity, "请输入内容", Toast.LENGTH_SHORT).show();
    }
});

// 设置布局参数
var layoutParams = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT
);
layoutParams.setMargins(0, 0, 0, 24);

// 添加视图到主布局
mainLayout.addView(editText, layoutParams);
mainLayout.addView(button, layoutParams);

// 创建并显示悬浮窗
const floatingwindow = new core.floatingwindow;
floatingwindow.with()
    .setContentView(mainLayout)
    .addWindowFlags(
        floatingwindow.FLAG_NOT_TOUCH_MODAL
    )
    .setWindowType(floatingwindow.TYPE_APPLICATION_OVERLAY)
    .setWidth(500)
    .setHeight(600)
    .setSoftInputMode(floatingwindow.SOFT_INPUT_STATE_ALWAYS_VISIBLE)

floatingwindow.show();