【问题标题】:Wallpaper fit image to screen size壁纸适合屏幕大小的图像
【发布时间】:2014-12-07 03:33:05
【问题描述】:

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

我正在使用 viewpager,在适配器中我有一个按钮和一个 imageview。当使用 myWallpaperManager.setBitmap(image) 单击按钮时,我想将 imageview 中的图片设置为墙纸。在此之前,我调整图片大小以适合屏幕大小。壁纸已更改,但图片保持缩放和裁剪。我想用整张图片设置壁纸。 我对 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();
            }
        }});

【问题讨论】:

    标签: android size wallpaper


    【解决方案1】:

    你可以试试我的代码:

    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" />
    

    【讨论】:

      【解决方案2】:

      看看这是否有帮助:

      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);  
      

      来源:Android setting wallpaper gone wrong

      【讨论】:

      • 您好,感谢您的回答。不幸的是,它并没有改变任何东西,我仍然裁剪了图片......是否有可能是由于Android的最后一次更新?
      猜你喜欢
      • 2014-01-11
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多