java - Android,设置背景拉伸(stretch)或放大但永远不会正确

标签 java android wallpaper

我目前一直在尝试使用我制作的 Android 壁纸应用程序设置手机背景。然而,每次我按“设置背景”时,它都会拉伸(stretch)图像。

这是我正在使用的代码

btnSetWallpaper.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                WallpaperManager wManager;

                try {

                    //  Bitmap bitmap = ((BitmapDrawable)imageView1.getDrawable()).getBitmap();
                    wManager = WallpaperManager.getInstance(view.getContext().getApplicationContext());

                    Display display = getWindowManager().getDefaultDisplay();
                    Point size = new Point();
                    display.getSize(size);
                    int fullWidth = size.x;
                    int fullHeight = size.y;

                    //int fullWidth   = wManager.getDesiredMinimumWidth();
                    //int fullHeight  = wManager.getDesiredMinimumHeight();

                    Log.d("Debug", Integer.toString(fullWidth));
                    Log.d("Debug", Integer.toString(fullHeight));

                    Bitmap bitmapResized = Bitmap.createScaledBitmap(bmpWallpaper, fullWidth * 2, fullHeight, true);
                    wManager.setBitmap(bitmapResized);


                } catch (IOException e) {
                    e.printStackTrace();
                }

                Core.makeNotification(view.getContext(), "MyNotification", "Your wallpaper has been set, enjoy!");
                Core.makeAlert(view.getContext(), "Wallpaper set", "Your wallpaper has been set, enjoy!");

            }
        });

最佳答案

好吧,在 bakriOnFire 发表评论后,我在他给我的链接上进行了搜索,将我的一些代码与那里描述的代码结合起来后,我找到了解决方案!

 btnSetWallpaper.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                try {
                    WallpaperManager wManager = WallpaperManager.getInstance(view.getContext());

                    Display display = getWindowManager().getDefaultDisplay();
                    Point size = new Point();
                    display.getSize(size);
                    int fullWidth = size.x;
                    int fullHeight = size.y;

                    //int fullWidth   = wManager.getDesiredMinimumWidth();
                    //int fullHeight  = wManager.getDesiredMinimumHeight();

                    Log.d("Debug", Integer.toString(fullWidth));
                    Log.d("Debug", Integer.toString(fullHeight));


                    Bitmap bitmapResized = Bitmap.createScaledBitmap(bmpWallpaper, fullWidth, fullHeight, true);
                    wManager.suggestDesiredDimensions(bitmapResized.getWidth(), bitmapResized.getHeight());

                    wManager.setBitmap(bitmapResized);



                } catch (IOException e) {
                    e.printStackTrace();
                }

                Core.makeNotification(view.getContext(), "MCPaper", "Your wallpaper has been set, enjoy!");
                Core.makeAlert(view.getContext(), "Wallpaper set", "Your wallpaper has been set, enjoy!");

            }
        });

我真的希望将来这能帮助人们摆脱困境,因为我在这方面花了很长时间。享受

关于java - Android,设置背景拉伸(stretch)或放大但永远不会正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18441301/

相关文章:

java - 什么类型的类实例化工厂类?

java - 是否可以仅从字符串中提取数字

java - Android:启动应用程序之前检查密码

android - 我可以在异步任务中将参数传递给 preExecute() 方法吗?

android - 通过检测它是否是 2.1 设备在 1.6 目标应用程序中显示动态壁纸?

Bat 和 Eclipse 之间的 Java 文件同步

javascript - WebView 使用 javascript getElementsByClassName() 无法正确显示

java - ViewPager 的内存问题

java - 获取所有系统壁纸

java - 使用 SharedPreference 实现首选项,适用于 Android 动态壁纸