设置壁纸而不裁剪

时间:2015-01-05 08:42:04

标签: android image resizable android-wallpaper

我正在使用set as wallpaper选项开发壁纸应用程序。 我将所有图像显示在位于SD卡上的照片目录的网格视图中。 当用户点击任何图像缩略图时,它会打开到全屏幕视图,其中我提供了设置为壁纸选项。 一切都很好。现在的问题是,我想提供裁剪功能,可选择在全屏视图中设置图像而无需缩放或拉伸。我尝试了很多代码,但它没有按照我的期望工作。我在click事件上调用以下函数。以下是我试过的代码,但它会拉伸图像。

enter code here
private void setWallPaper() {
    WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
    try {
        //set for full screen wallpaper
        DisplayMetrics metrics = new DisplayMetrics(); 
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int fullHeight = metrics.heightPixels; 
        int fullWidth = metrics.widthPixels;
        Bitmap bitmapResized = Bitmap.createScaledBitmap(imageBitmap, fullWidth, fullHeight,true);
        wallpaperManager.setBitmap(bitmapResized);

        //wallpaperManager.setBitmap(imageBitmap);
        Toast toast = Toast.makeText(this, "Set wallpaper successfully!", Toast.LENGTH_LONG);
        toast.show();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

有没有办法绕过这种裁剪功能并将图像设置为全屏? 请帮助我这方面。提前谢谢。

1 个答案:

答案 0 :(得分:0)

据我所知,您必须为该级别的控制创建自己的动态壁纸服务。这是一个彻底的例子here。创建自己的服务将允许您添加其他功能,如触摸滚动等(尽管您必须为通过TouchWiz图层禁用此功能的三星设备做一些变通方法)。这似乎很痛苦,但设置基本的动态壁纸服务并不需要那么长时间。