我想在屏幕上更改所有桌面(以前称为"空格")的壁纸.从OS X 10.6开始,NSWorkspace有一个类别允许设置壁纸,但是,当我使用此功能时,只有当前桌面的壁纸被更改,所有其他桌面保持不变.
然后我查看了桌面首选项plist并编写了一个类来修改它以反映我想要的更改(基本上设置了一个新的图像文件路径).保存新文件后,我发送了com.apple.desktop"BackgroundChanged"通知 - 谷歌,如果你不知道我在说什么,这就是人们在10.6天之前改变壁纸的方式.起初这没有产生任何结果,因此我在用户信息字典中输入了与nil相同的userInfo字典,就像你在设置中更改壁纸时所做的那样(订阅应用中的通知并更改壁纸)在设置应用程序中,您将看到它的样子).Luck在这里帮助了我,当我因为某种原因发送通知时,Dock崩溃了,当它重新加载时,它从首选项文件中加载了设置,从而显示了我的更改.
这适用于10.7.1,但是,我会a)没有糟糕的用户体验码头崩溃和重新加载,以及b)使用一个或多或少保证在未来版本中工作的路径.利用bug似乎不是一条稳定的道路.
关于如何更改所有桌面壁纸的任何其他想法?我也不确定NSWorkspace壁纸类别的当前行为是打算还是一个bug,但是,从壁纸首选项面板的行为来看,似乎前者就是这种情况.
我希望使用C#为Windows XP设置壁纸.我已经开发了代码,因此它在Windows 7中完美运行,但显然它与XP不同.我将壁纸添加为资源,将其编译操作设置为内容并始终复制.奇怪的是,它在桌面属性对话框中设置了正确的墙纸名称.但是,壁纸未设置.我的代码看起来像这样:
public sealed class Wallpaper
{
Wallpaper() { }
const int SPI_SETDESKWALLPAPER = 20;
const int SPIF_UPDATEINIFILE = 0x01;
const int SPIF_SENDWININICHANGE = 0x02;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
public enum Style : int
{
Tiled,
Centered,
Stretched
}
public static void Set(string wpaper, Style style)
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
if (style == Style.Stretched)
{
key.SetValue(@"WallpaperStyle", 2.ToString());
key.SetValue(@"TileWallpaper", 0.ToString());
}
if (style == Style.Centered)
{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个需要在桌面上绘制的应用程序,在图标后面,所以它似乎取代桌面壁纸.我已经找到了一些解决方案,但大多数都不能很好地工作(很多闪烁).一个解决方案似乎是我正在寻找的,但我真的没有得到它.我已经使用或者更高级别的图形库,或只是Windows窗体,和一些C++,但只有在非Windows平台上做多是C#应用程序.
如果有人可以为我"翻译"它或为我提供替代解决方案,我将不胜感激!
对于各种Android屏幕配置(低,中,高密度的小屏幕,普通屏幕和大屏幕),Home壁纸/背景的默认尺寸是多少?
壁纸是否支持9补丁PNG文件?我应该使用这些吗?
我在API级别5中找到了一个方法,它为您提供了最小的壁纸大小,但我也想支持以前版本的Android.
谢谢!
我写的是动态壁纸的定位问题.基本上,画布将根据在其上方打开的应用程序旋转.我测试了这个,并意识到当我从先前打开的应用程序返回主屏幕时,onSurfaceChanged()方法正在触发,该应用程序的方向已更改.
我想一个更好的问题是,为什么我的动态壁纸表面会在应用程序打开时更改并且方向发生变化? 有没有办法阻止我的动态壁纸方向不断变化?谢谢,希望有道理吗?
android wallpaper orientation screen-orientation live-wallpaper
你能编写最简单的shell脚本,它会定期(例如1分钟)更改桌面壁纸(在Ubuntu中).
壁纸将保存在特定目录中(例如$ HOME/wallpapers).我只需要基本功能.
1)选择随机壁纸$HOME/wallpapers
2)将其设置为桌面上的壁纸
3)设置cron以每分钟运行脚本(不是问题的一部分).
我正在研究一些简单的壁纸应用程序,我有一些图像.它们是可绘制文件夹中的.png文件.
以下是一些代码段:
WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext());
....
myWallpaperManager.setResource(R.drawable.image1);
Run Code Online (Sandbox Code Playgroud)
无论我使用什么尺寸或分辨率,当设置壁纸时,它会裁剪原始图像.当我使用相同的图像作为背景时,它是正确的大小并显示整个图像.我认为这可能是我的模拟器的问题,所以我尝试在实际设备(HTC eris)上运行它,我遇到了同样的问题.我已经将图像设置为eris的屏幕尺寸和分辨率,它仍在裁剪它.然后我使图像只有一英寸高,分辨率为100 dpi.在eris上它是非常像素化的,但仍然裁剪图像.
任何帮助将不胜感激.
我试图添加一些图像来显示之前和之后,但作为一个新用户,我被禁止这样做.
我对Android编程很陌生,所以请耐心等待.
我想知道是否有一种方法可以在Android设备上检索当前壁纸并将其保存到应用程序代码中的变量中.
谢谢
我有一个正在运行的动态壁纸,并对SCREEN_ON事件作出反应以在画布上显示更改.但是在某些手机上,用户可以设置不同的锁屏和主屏幕壁纸(Touchwiz,一些Xperia设备).当用户在锁定屏幕上设置了不同的壁纸时,我的动态壁纸不会显示.
在我使用的Galaxy S3上WallpaperService.Engine.isVisible(),false当用户设置了不同的锁屏壁纸时它正确返回.在Galaxy S3迷你,但是,这是行不通的,因为isVisible()回报率true是否不是我的动态壁纸是活跃的锁屏壁纸.
WallpaperManager.getWallpaperInfo()或者WallpaperManager.peekDrawable()也不工作,因为getWallpaperInfo()无论当前的锁屏壁纸如何都会返回我的动态壁纸,并且peekDrawable()即使我为两个屏幕设置了动态壁纸,也会返回有效的可绘制内容.我试着听WallpaperService.Engine.onTouchEvent(..),但来自锁屏的触摸事件无法通过我的动态壁纸,因为它们被解锁滑块消耗.
有没有其他方法来检测我的动态壁纸是否是当前的锁屏壁纸?我很喜欢反思黑客,变通方法,所有能让我这样做的东西.
编辑:它也适用于Galaxy Note 2,机器人不在Xperia T LT30p上
我在一个drawable文件夹中有一组图像.我有一个按钮将图像设置为设备屏幕上的壁纸.但是,当我将此图像设置为壁纸时,无论是缩放还是裁剪.我想图像应该适合屏幕尺寸.我在SO上看过很多链接,但没有链接对我有用.这是我到目前为止所尝试的代码.
码-
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();
}
Run Code Online (Sandbox Code Playgroud)
我还在清单中添加了以下行:
<uses-permission android:name="android.permission.SET_WALLPAPER_HINTS"/>
<uses-permission android:name="android.permission.SET_WALLPAPER" />
Run Code Online (Sandbox Code Playgroud)