0

我做了一个动态壁纸,里面有很多复杂的设置。查看网络上的各种示例,似乎在壁纸中设置首选项的标准方法是拥有一些像这样的 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 (如果允许的话)。

4

1 回答 1

1

根据这个你不需要有一个 PreferenceActivity,任何活动都可以。

PreferenceActivity 是一种设置屏幕的简单方法,但如果您不想使用,可以创建自己的。

于 2013-04-18T12:37:50.487 回答