2015-02-28 6 views
0

Рассмотрят следующий код будет страницей настроек из живых обоев в андроиде:Извлечение данных из страницы настроек в живых обоях

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
    android:title="@string/livewallpaper_settings" 
    android:key="livewallpaper_settings"> 

    <ListPreference 
     android:key="livewallpaper_testpattern" 
     android:title="@string/livewallpaper_settings_title" 
     android:summary="@string/livewallpaper_settings_summary" 
     android:entries="@array/livewallpaper_testpattern_names" 
     android:entryValues="@array/livewallpaper_testpattern_prefix"/> 
    <CheckBoxPreference android:key="livewallpaper_movement" 
     android:summary="@string/livewallpaper_movement_summary" 
     android:title="@string/livewallpaper_movement_title" 
     android:summaryOn="Moving test pattern" 
     android:summaryOff="Still test pattern"/> 
</PreferenceScreen> 

он показывает страницу настроек и каждая вещь, показывающие настройки в порядке. Но я могу сохранить эти настройки и использовать их при создании живых обоев.

и второй вопрос заключается в том, что верно ли читать параметры в методе onCreate или нет.

У меня есть googled, но ничего полезного!

спасибо.

ответ

0

Я нашел ответ:

package ca.jvsh.livewallpaper; 

import ca.jvsh.livewallpaper.R; 

import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.preference.PreferenceActivity; 

public class LiveWallpaperSettings extends PreferenceActivity 
    implements SharedPreferences.OnSharedPreferenceChangeListener 
{ 
    @Override 
    protected void onCreate(Bundle icicle) 
    { 
     super.onCreate(icicle); 
     getPreferenceManager().setSharedPreferencesName(LiveWallpaper.SHARED_PREFS_NAME); 
     addPreferencesFromResource(R.xml.livewallpaper_settings); 
     getPreferenceManager().getSharedPreferences() 
       .registerOnSharedPreferenceChangeListener(this); 
    } 

    @Override 
    protected void onResume() 
    { 
     super.onResume(); 
    } 

    @Override 
    protected void onDestroy() 
    { 
     getPreferenceManager().getSharedPreferences() 
       .unregisterOnSharedPreferenceChangeListener(this); 
     super.onDestroy(); 
    } 

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 
      String key) 
    { 
    } 
} 

это класс Java для настройки страницы. , и это для считывания настроек:

TestPatternEngine() 
    { 
     ... 

     mPreferences = LiveWallpaper.this.getSharedPreferences(SHARED_PREFS_NAME, 0); 
     mPreferences.registerOnSharedPreferenceChangeListener(this); 
     onSharedPreferenceChanged(mPreferences, null); 
    } 

    public void onSharedPreferenceChanged(SharedPreferences prefs, 
      String key) 
    { 
     mShape = prefs.getString("livewallpaper_testpattern", "smpte"); 
     mMotion = prefs.getBoolean("livewallpaper_movement", true); 
     readColors(); 
    }