0

我正在使用 Flutter 并在 Kotlin 中编写特定代码来将图像设置为墙纸,我遇到的问题是,当我将图像设置为墙纸时,我的屏幕设备不适合。

class MainActivity: FlutterActivity() {

    private val CHANNEL = "wallpaper"

    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine);
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler {  call, result ->

            if(call.method == "setWallpaper") {
                val path = call.argument<String>("imageFile")
                val mensaje = setWallpaper(path)

                if(mensaje != null) {
                    result.success(mensaje)
                } else {
                    result.error("ERROR", "MENSAJE NO DISPONIBLE", null)
                }
            } else {
                result.notImplemented()
            }

        }
    }

    private fun setWallpaper(path: String?): String {

        var width = getResources().getDisplayMetrics().widthPixels
        var height = getResources().getDisplayMetrics().heightPixels
        
        var file = BitmapFactory.decodeFile(path) 

        file = Bitmap.createScaledBitmap(file, width, height, true)

        val wallpaperManager = WallpaperManager.getInstance(this)

        wallpaperManager.setBitmap(file)
   
        return "200"

    }
}

这就是我试图获取设备的屏幕大小并调整位图大小以设置为墙纸的方式,调试控制台没有显示任何错误,但我所说的图像似乎没有调整大小。

例子:

这是应用墙纸时的行为示例

原始图像与壁纸

我不知道我是否在代码上做错了,或者这背后的逻辑不好。

4

0 回答 0