1

早上好,我有一个代码可以正确设置壁纸,当我设置壁纸时,它是从网络下载的,大小为 1024 x 768 的 jpg,它分发到所有主屏幕,但从 android 4+ 开始,它们不可滚动,放置一个为所有主屏幕修复了部分图像我想解决这个问题,所以我希望你能帮助我

问候和对不起我英语

//path is a String with image's url
public int setWallpaper(String path) {          
    int width, height;
    Bitmap dbm, bm;         
    bm = null;
    dbm = null; 
    InputStream is = null;

    WallpaperManager wpm = wallpaperManager.getInstance(this);              

    //all images are 1024x 768 
    //to scale bitmap the widht have to be 1.33 bigger than screen's height
    if((wpm != null) && (dis != null)){ 
        height = dis.getHeight();
        width = (int) (height * 1.33);              

        try {           
            URLConnection conn = new URL(path).openConnection();                
            conn.connect();             
            is = conn.getInputStream();                 

            if (is != null) {                   
                bm = BitmapFactory.decodeStream(new FlushedInputStream(is));                    
                dbm = Bitmap.createScaledBitmap(bm, width, height, false);                  
                wpm.setBitmap(dbm); 

            }else {
                return 2;
            }

        } catch (MalformedURLException e) {                 
            e.printStackTrace();                
        } catch (IOException e) {               
            e.printStackTrace();                
        } finally {             
            if (is != null) {
                try {
                    is.close();
                }
                catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }           
        if(bm != null){
            bm.recycle();
        }
        if(dbm != null){
            dbm.recycle();  
        }           
    }else {
        return 1;
    }
    return 0;
}
4

1 回答 1

1

它们在 android 4 上不再可滚动,但是,为了避免它们被放大,您可以执行以下操作:

// get screen dimensions
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;

wpm.suggestDesiredDimensions(width, height);
wpm.setBitmap(dbm);

通过使用SuggestDesiredDimensions,您可以指定壁纸的大小。

来自开发者参考:

公共无效建议DesiredDimensions(int minimumWidth,int minimumHeight)

自:API 级别 5 仅供当前家庭应用程序使用,以指定要使用的壁纸尺寸。这允许此类应用程序拥有比物理屏幕更大的虚拟壁纸,与其工作空间的大小相匹配。

请注意似乎没有阅读此内容的开发人员。这是为了让主屏幕告诉他们想要什么尺寸的壁纸。其他人不应该打电话给这个!当然不是其他改变壁纸的非主屏幕应用程序。这些应用程序应该检索建议的尺寸,以便他们可以构建与之匹配的壁纸。

请记住,您还需要通过执行以下操作请求清单上的 SET_WALLPAPER_HINTS 权限:

<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>
于 2013-01-24T21:31:26.930 回答