壁纸规则不符的设备屏幕 [英] Wallpaper not properly fit on device screen

查看:165
本文介绍了壁纸规则不符的设备屏幕的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一组在一个文件夹中绘制的图像。我有一个按钮可以设置图片作为墙纸上的设备屏幕。但是,当我设置此图片作为壁纸它无论是缩放或裁剪。我想形象应该适合屏幕大小。我看到很多在SO联系,但没有联系是为我工作。这是code我想这么远。<​​/ P>

code -

 位图bmap2 = BitmapFactory.de codeStream(getResources()openRawResource(mThumb [位置]));
DisplayMetrics指标=新DisplayMetrics();
。getWindowManager()getDefaultDisplay()getMetrics(度量)。
INT高= metrics.heightPixels;
INT宽度= metrics.widthPixels;
点阵位图= Bitmap.createScaledBitmap(bmap2,宽度,高度,真正的);
WallpaperManager wallpaperManager = WallpaperManager.getInstance(本);
尝试 {
  wallpaperManager.setBitmap(位);
  }赶上(IOException异常E){
  e.printStackTrace();
}
 

我还添加了以下清单中的行 -

 &LT;使用-权限的Andr​​oid:名称=android.permission.SET_WALLPAPER_HINTS/&GT;
&LT;使用-权限的Andr​​oid:名称=android.permission.SET_WALLPAPER/&GT;
 

解决方案

您好:这正与绘制的图像我已经检查了。

  DisplayMetrics指标=新DisplayMetrics();
                。getWindowManager()getDefaultDisplay()getMetrics(度量)。
                INT高= metrics.heightPixels;
                INT宽度= metrics.widthPixels;
                位图tempbitMap = BitmapFactory.de codeResource(getResources(),R.drawable.img);
                点阵位图= Bitmap.createScaledBitmap(tempbitMap,宽度,高度,真正的);
                WallpaperManager wallpaperManager = WallpaperManager.getInstance(MainActivity.this);
                wallpaperManager.setWallpaperOffsetSteps(1,1);
                wallpaperManager.suggestDesiredDimensions(宽度,高度);
                尝试 {
                  wallpaperManager.setBitmap(位);
                  }赶上(IOException异常E){
                  e.printStackTrace();
                }
 

另外提及的Manifest.xml ..

这些权限

 &LT;使用-权限的Andr​​oid:名称=android.permission.SET_WALLPAPER_HINTS/&GT;
    &LT;使用-权限的Andr​​oid:名称=android.permission.SET_WALLPAPER/&GT;
 

这是截图。

有关画面店复位适合壁纸的图片路径共享preferences和使用Boot完成接收器然后重新在屏幕上相同的壁纸......

广播接收器。

 进口java.io.IOException异常;

进口android.app.WallpaperManager;
进口android.content.BroadcastReceiver;
进口android.content.Context;
进口android.content.Intent;
进口android.graphics.Bitmap;
进口android.graphics.BitmapFactory;
进口android.util.DisplayMetrics;
进口android.util.Log;
进口android.view.WindowManager;

公共类BootReceiver扩展的BroadcastReceiver {
私有静态最后字符串变量=BootReceiver;

@覆盖公共无效的onReceive(上下文的背景下,意图意图){
    尝试{
            DisplayMetrics指标=新DisplayMetrics();
            窗口管理器窗口管理=(窗口管理器)context.getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay()getMetrics(度量)。
            INT高= metrics.heightPixels;
            INT宽度= metrics.widthPixels;
            位图tempbitMap = BitmapFactory.de codeResource(context.getResources(),R.drawable.img);
            点阵位图= Bitmap.createScaledBitmap(tempbitMap,宽度,高度,真正的);
            WallpaperManager wallpaperManager = WallpaperManager.getInstance(上下文);
            wallpaperManager.setWallpaperOffsetSteps(1,1);
            wallpaperManager.suggestDesiredDimensions(宽度,高度);
            尝试 {
              wallpaperManager.setBitmap(位);
              }赶上(IOException异常E){
              e.printStackTrace();
            }
    }赶上(例外五){
        Log.e(TAG,e.toString());
    }
}
}
 

在的Manifest.xml添加这些行后

 &LT;接收器
            机器人:名称=。BootReceiver
            机器人:启用=真
            机器人:出口=真
            机器人:标签=BootReceiver&GT;
            &LT;意向滤光器&gt;
                &lt;作用机器人:名称=android.intent.action.BOOT_COMPLETED&GT;
                &LT; /作用&gt;
            &所述; /意图滤光器&gt;
        &LT; /接收器&GT;
 

I have one set of images in one drawable folder. I have one button to set image as wallpaper on device screen. But when I set this image as wallpaper its either zoom or cropped. I want image should fit on screen size. I have seen lots of links on SO but no link is work for me. This is the code I am trying so far.

Code-

Bitmap bmap2 = BitmapFactory.decodeStream(getResources().openRawResource(mThumb[position]));
DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels; 
int width = metrics.widthPixels;
Bitmap bitmap = Bitmap.createScaledBitmap(bmap2, width, height, true); 
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
try {
  wallpaperManager.setBitmap(bitmap);
  } catch (IOException e) {
  e.printStackTrace();
}

I also added following lines in manifest-

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

解决方案

Hello This is working with drawable image i have checked it..

                DisplayMetrics metrics = new DisplayMetrics(); 
                getWindowManager().getDefaultDisplay().getMetrics(metrics);
                int height = metrics.heightPixels; 
                int width = metrics.widthPixels;
                Bitmap tempbitMap = BitmapFactory.decodeResource(getResources(), R.drawable.img);
                Bitmap bitmap = Bitmap.createScaledBitmap(tempbitMap,width,height, true);
                WallpaperManager wallpaperManager = WallpaperManager.getInstance(MainActivity.this); 
                wallpaperManager.setWallpaperOffsetSteps(1, 1);
                wallpaperManager.suggestDesiredDimensions(width, height);
                try {
                  wallpaperManager.setBitmap(bitmap);
                  } catch (IOException e) {
                  e.printStackTrace();
                }

Also mention these permissions in Manifest.xml..

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

This is screenshot..

For reset Fit wallpaper of screen store the image path in shared preferences and use Boot Completed Receiver then reset the same wallpaper on the screen....

The broadcast receiver is..

import java.io.IOException;

import android.app.WallpaperManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.WindowManager;

public class BootReceiver extends BroadcastReceiver {
private static final String TAG="BootReceiver";

@Override public void onReceive(Context context,Intent intent){
    try{
            DisplayMetrics metrics = new DisplayMetrics(); 
            WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            windowManager.getDefaultDisplay().getMetrics(metrics);
            int height = metrics.heightPixels; 
            int width = metrics.widthPixels;
            Bitmap tempbitMap = BitmapFactory.decodeResource(context.getResources(), R.drawable.img);
            Bitmap bitmap = Bitmap.createScaledBitmap(tempbitMap,width,height, true);
            WallpaperManager wallpaperManager = WallpaperManager.getInstance(context); 
            wallpaperManager.setWallpaperOffsetSteps(1, 1);
            wallpaperManager.suggestDesiredDimensions(width, height);
            try {
              wallpaperManager.setBitmap(bitmap);
              } catch (IOException e) {
              e.printStackTrace();
            }
    }catch(Exception e){
        Log.e(TAG,e.toString());
    }
}
}

After Add these lines in Manifest.xml

       <receiver
            android:name=".BootReceiver"
            android:enabled="true"
            android:exported="true"
            android:label="BootReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" >
                </action>
            </intent-filter>
        </receiver>

这篇关于壁纸规则不符的设备屏幕的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆