检藏
检藏
  • 发布:2022-11-10 12:53
  • 更新:2022-11-12 00:33
  • 阅读:471

uts 中调用安卓 Bitmap.createScaledBitmap(), 报错‌ type is Number but Int was expected‌

分类:uts

代码
private static scaleBitmapToContainScreen(bitmap: Bitmap, screenMetrics: DisplayMetrics): Bitmap {
const wallpaperScale: number = bitmap.getHeight() / bitmap.getWidth();
const screenScale: number = screenMetrics.heightPixels / screenMetrics.widthPixels
let targetWidth: number;
let targetHeight: number;
if (wallpaperScale < screenScale) {
targetHeight = screenMetrics.heightPixels;
targetWidth = targetHeight / wallpaperScale;
} else {
targetWidth = screenMetrics.widthPixels;
targetHeight = targetWidth * wallpaperScale;
}
return Bitmap.createScaledBitmap(bitmap, targetWidth , targetHeight, true);
}

报错提示
‌error: Type mismatch: inferred type is Number but Int was expected‌
17:34:30.023 at uni_modules/jn-wallpaper/utssdk/app-android/Util.uts:49:63
17:34:30.033 47 | targetHeight = targetWidth * wallpaperScale;
17:34:30.043 48 | }
17:34:30.054 49 | return Bitmap.createScaledBitmap(bitmap, targetWidth , targetHeight, true);
17:34:30.064 | ^
17:34:30.074 50 | }

2022-11-10 12:53 负责人:DCloud_Android_DQQ 分享
已邀请:

最佳回复

检藏

检藏 (作者)

uts调用android原生api时, 类型错误及解决方法
1.uts数字类型只有number类型,但在声明变量时也可以用Kotlin的基本类型,如Int、Double。
2.uts 在做加减乘除运算时,类型如何强制转换
let a: Int = 3
let b: Int = 4
let c: Double = a/ b as Double 会提示warning: This cast can never succeed​ 改为
let c: Double = a * 1.0 / b
let d: Int = c as Double 会提示warning: This cast can never succeed​ 改为
let d: Int = c.toInt() HBuilder X会有红色提示,不用管它
3.调用android原生api,传参类型在uts基本类型中没有时,可用Kotlin的基本类型。

DCloud_Android_DQQ

DCloud_Android_DQQ

1 可以把number 改成Int, 编辑器可能会告警,但是可以正常编译运行

关于类似场景的原则参考这个文档
https://uniapp.dcloud.net.cn/plugin/uts-for-android.html#_2-3-%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E5%B7%AE%E5%BC%82

  • jiakaobang

    为什么我在前面提交的问题没有人回复我啊,感觉也不是个特别难的问题,辛苦帮忙看一下

    2022-11-11 10:42

  • DCloud_Android_DQQ

    回复 jiakaobang: 什么问题?

    2022-11-11 10:49

  • jiakaobang

    回复 DCloud_Android_DQQ: ios端开屏广告底部只显示logo+名称,不管如何设置,既不会显示启动图底部15%区域,manifest里面自定义ads也不生效

    2022-11-11 10:57

  • jiakaobang

    回复 DCloud_Android_DQQ: 我真就不明白了,遇到关于uniad的问题,一点儿回复都没有。qq群加不上,商务邮件不回。这样搞的人挺没信心的,我就是想要个答复。是不是文档上说的底部自定义现在不行了。如果是的,我使用别的方案,我感觉这真的很简单一个事情啊,如果你认识负责这块的,帮忙问一下,非常感谢

    2022-11-11 11:10

  • 检藏 (作者)

    我将number 改为Int 后,出现的问题是我在代码中会使用除法 得到的值会是Double 类型,如果强制用Int 小数点后面的数会去掉,计算值就会有问题。我改为Double 类型后,又提示错误

    error: Type mismatch: inferred type is Double but Int was expected‌

    12:06:44.910 at uni_modules/jn-wallpaper/utssdk/app-android/Util.uts:48:17

    12:06:44.927 46 | if (wallpaperScale < screenScale) {

    12:06:44.928 47 | targetHeight = screenMetrics.heightPixels;

    12:06:44.943 48 | targetWidth = targetHeight / wallpaperScale;

    12:06:44.954 | ^

    12:06:44.966 49 | } else {

    12:06:44.977 50 | targetWidth = screenMetrics.widthPixels;

    12:06:44.989 ‌error: Type mismatch: inferred type is Double but Int was expected‌

    12:06:45.000 at uni_modules/jn-wallpaper/utssdk/app-android/Util.uts:51:18

    12:06:45.011 49 | } else {

    12:06:45.023 50 | targetWidth = screenMetrics.widthPixels;

    12:06:45.034 51 | targetHeight = targetWidth * wallpaperScale;

    12:06:45.044 | ^

    12:06:45.045 52 | }

    12:06:45.055 53 | console.log("测试2",targetWidth);

    12:06:45.066 项目 'jc' 编译成功。

    2022-11-11 12:09

  • 检藏 (作者)

    有没有将Double 类型强制转换为Int的 。我看了uts 文档没有看到类型强制转换 的用法

    2022-11-11 12:14

  • DCloud_Android_DQQ

    回复 jiakaobang: 收到。 我转发一下,应该是帖子太多会有漏的

    2022-11-11 12:17

  • DCloud_Android_DQQ

    回复 检藏: 你私信我QQ把。 我看一下什么情况

    2022-11-11 12:18

  • jiakaobang

    回复 DCloud_Android_DQQ: 谢谢,已经有你的同事联系我了,已经确定是bug了。

    2022-11-11 12:20

要回复问题请先登录注册