壁纸适合图像屏幕尺寸



我花了几个小时在一个看起来并不复杂的问题上,但是尽管有关于这个主题的所有现有消息,但我仍然没有找到解决方案......

正在使用查看页,在适配器中我有一个按钮和一个图像视图。我想在使用myWallpaperManager.setBitmap(image)单击按钮时将图像视图中的图片设置为墙纸。在此之前,我调整图片大小以适应屏幕尺寸。墙纸已更改,但图片保持缩放和裁剪。我想设置带有整个图片的壁纸。我对getDefaultDisplay()的宽度和高度以及myWallpaperManager.getDesiredMinimumHeight/Width()的宽度和高度具有相同的值。

我尝试了许多不同的方法,但没有奏效。我不知道还能做什么!非常感谢您的回答。

这是代码:

 Button ButWallpaper = (Button) viewLayout.findViewById(R.id.ButWallpaper);
      ButWallpaper.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View arg0) {
               Bitmap image;
               Bitmap imagelarge = ((BitmapDrawable)imageView2.getDrawable()).getBitmap();
              int Measuredwidth = 0;  
              int Measuredheight = 0;  
              Point size = new Point();
              WindowManager w = _activity.getWindowManager();
             if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)    {
                 w.getDefaultDisplay().getSize(size);
                 Measuredwidth = size.x;
                 Measuredheight = size.y; 
             }else{
                 Display d = w.getDefaultDisplay(); 
                 Measuredwidth = d.getWidth(); 
                 Measuredheight = d.getHeight(); 
             }
             Log.i("TAG", String.valueOf(Measuredwidth));
             Log.i("TAG", String.valueOf(Measuredheight));
            image =  Bitmap.createScaledBitmap(imagelarge, Measuredwidth, Measuredheight,true);

               // TODO Auto-generated method stub
            WallpaperManager myWallpaperManager 
            = WallpaperManager.getInstance(_activity.getApplicationContext());
            try {
                myWallpaperManager.setBitmap(image);
                 myWallpaperManager.suggestDesiredDimensions(Measuredwidth, Measuredheight);
                 Log.i("TAG", String.valueOf(myWallpaperManager.getDesiredMinimumHeight()));
                 Log.i("TAG", String.valueOf(myWallpaperManager.getDesiredMinimumWidth()));
                 Toast.makeText(_activity.getApplicationContext(), "Wallpaper changed", toast.LENGTH_LONG).show();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }});

你可以试试我的代码:

try{
            DisplayMetrics metrics = new DisplayMetrics(); 
            WindowManager windowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay().getMetrics(metrics);
            int height = metrics.heightPixels; 
            int width = metrics.widthPixels;
            Bitmap tempbitMap = BitmapFactory.decodeFile(path);
            Bitmap bitmap = Bitmap.createScaledBitmap(tempbitMap,width,height, true);
            WallpaperManager wallpaperManager = WallpaperManager.getInstance(mContext); 
            wallpaperManager.setWallpaperOffsetSteps(1, 1);
            wallpaperManager.suggestDesiredDimensions(width, height);
            try {
              wallpaperManager.setBitmap(bitmap);
              Toast.makeText(mContext, "Set wallpaper success", Toast.LENGTH_SHORT).show();
              } catch (IOException e) {
              e.printStackTrace();
            }
        }catch(Exception e){
        Log.e("DATA", "Cannot set image as wallpaper", e);
        }

还行!然后您添加权限:

 <uses-permission android:name="android.permission.SET_WALLPAPER" />
 <uses-permission android:name="android.permission.SET_WALLPAPER_HINTS" />

看看这是否有帮助:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels; 
Bitmap bitmap = Bitmap.createScaledBitmap(yourimagebitmap, width, height, true);
WallpaperManager.getInstance(MyActivity.this).setBitmap(bitmap);  

来源:安卓设置壁纸出错

最新更新