2013-04-18 2 views
0

Я сделал живые обои, которые имеют множество сложных настроек. Глядя на различных примерах в Интернете кажется, что стандартный способ установить предпочтение в качестве обоев, чтобы иметь некоторые XML, как это:android: settingsActivity - как получить нестандартное поведение

<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); 
} 

Это все работает как рекламируемое, но оно выглядит довольно грубым. Я заметил, что внешний вид некоторых настроек обоев намного сложнее или вообще не похож на экраны стандартных настроек, некоторые из них имеют диалоговое окно, в котором появляются кнопки, на которых есть ссылки на веб-сайты. Мне интересно, как я могу это достичь. Все дело в том, что fancier xml в my_settings.xml или, возможно, в android: settingsActivity = .. указывает на то, что не является функцией предпочтения, а скорее обычной деятельностью? Или, может быть, код внутри oncreate должен выглядеть по-другому - я просто не уверен, где именно я должен отклоняться от примеров.

Глядя на developer.android.com, он говорит: «Это базовый класс для активности, показывающий иерархию предпочтений для пользователя». - это звучит так, будто я ограничен узким диапазоном вещей, которые я могу сделать ... вот почему я разрывается между попытками выдвинуть границы того, что можно сделать внутри PreferenceActivity и сделать android:settingsActivity=, что-то, что просто isn ' t a PreferenceActivity вообще (если это разрешено).

+0

действительно сложно сказать, что было задано здесь: тема http://stackoverflow.com/questions/11751498/how-to-change-preferenceactivity-theme? пользовательский макет http://stackoverflow.com/questions/2697233/how-to-add-a-button-to-preferencescreen? – Selvin

+0

Ссылки, которые вы добавили в свой комментарий, уже полезны - так что это не может быть так сложно. Но я сделаю некоторые изменения на свой пост. – Mick

ответ

1

Согласно this, вам не нужно иметь функцию предпочтения, любая деятельность будет выполнена.

PreferenceActivity - это простой способ иметь экран настроек, но если вы не хотите использовать, вы можете создать свой собственный.

+0

предположительно я должен добавить «реализует SharedPreferences.OnSharedPreferenceChangeListener», чтобы обои узнали об изменениях. – Mick

+0

Да, если вы не используете PreferenceActivity, вы должны сохранить настройки самостоятельно в SharedPreferences, а Wallpaper должна использовать OnSharedPreferenceChangeListener для уведомления об изменениях –

Смежные вопросы