我正在使用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();
}
}
有没有办法绕过这种裁剪功能并将图像设置为全屏? 请帮助我这方面。提前谢谢。
答案 0 :(得分:0)
据我所知,您必须为该级别的控制创建自己的动态壁纸服务。这是一个彻底的例子here。创建自己的服务将允许您添加其他功能,如触摸滚动等(尽管您必须为通过TouchWiz图层禁用此功能的三星设备做一些变通方法)。这似乎很痛苦,但设置基本的动态壁纸服务并不需要那么长时间。