我做了一个动态壁纸,里面有很多复杂的设置。查看网络上的各种示例,似乎在壁纸中设置首选项的标准方法是拥有一些像这样的 xml:
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
android:thumbnail="@drawable/my_icon"
android:description="@string/wallpaper_description"
android:settingsActivity="com.mycompany.mywallpaper.MyWallpaperSettings"
/>
MyWallpaperSettings
像这样定义的类在哪里:
public class MyWallpaperSettings extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener
和...
@Override
protected void onCreate(Bundle blah)
{
super.onCreate(blah);
getPreferenceManager().setSharedPreferencesName(MyWallPaper.SHARED_PREFS_NAME);
addPreferencesFromResource(R.xml.my_settings);
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
这一切都像宣传的那样有效,但看起来相当粗糙。我注意到一些壁纸设置的外观和感觉要复杂得多,或者看起来一点也不像标准设置屏幕,有些会弹出一个对话框,上面的按钮是网站链接。我想知道如何实现这一目标。是否所有关于在 my_settings.xml 中拥有更高级的 xml 或者 android:settingsActivity=.. 指向不是 PreferenceActivity 的东西,而只是一个正常的活动?或者也许 oncreate 中的代码需要看起来不同 - 我只是不确定我应该在哪里偏离示例。
查看 developer.android.com 它说“这是一个向用户显示偏好层次结构的活动的基类。” - 这听起来像是我只能做一些我能做的事情......这就是为什么我在试图突破 PreferenceActivity 内可以做的事情的限制和android:settingsActivity=
指出根本不是的事情之间左右为难一个 PreferenceActivity (如果允许的话)。