SHOW:
|
|
- or go back to the newest paste.
1 | package com.basic.mileagecalculatorwithsettings; | |
2 | ||
3 | import android.annotation.TargetApi; | |
4 | import android.content.Context; | |
5 | import android.content.SharedPreferences.Editor; | |
6 | import android.content.res.Configuration; | |
7 | import android.media.Ringtone; | |
8 | import android.media.RingtoneManager; | |
9 | import android.net.Uri; | |
10 | import android.os.Build; | |
11 | import android.os.Bundle; | |
12 | import android.preference.ListPreference; | |
13 | import android.preference.Preference; | |
14 | import android.preference.PreferenceActivity; | |
15 | import android.preference.PreferenceCategory; | |
16 | import android.preference.PreferenceFragment; | |
17 | import android.preference.PreferenceManager; | |
18 | import android.preference.RingtonePreference; | |
19 | import android.text.TextUtils; | |
20 | import android.view.MenuItem; | |
21 | import android.support.v4.app.NavUtils; | |
22 | import java.util.List; | |
23 | ||
24 | public class SettingsActivity extends PreferenceActivity | |
25 | { | |
26 | private static final boolean ALWAYS_SIMPLE_PREFS = false; | |
27 | @Override | |
28 | protected void onCreate(Bundle savedInstanceState) | |
29 | { | |
30 | super.onCreate(savedInstanceState); | |
31 | setupActionBar(); | |
32 | } | |
33 | @TargetApi(Build.VERSION_CODES.HONEYCOMB) | |
34 | private void setupActionBar() | |
35 | { | |
36 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) | |
37 | { | |
38 | getActionBar().setDisplayHomeAsUpEnabled(true); | |
39 | } | |
40 | } | |
41 | @Override | |
42 | public boolean onOptionsItemSelected(MenuItem item) | |
43 | { | |
44 | switch (item.getItemId()) | |
45 | { | |
46 | case android.R.id.home: | |
47 | NavUtils.navigateUpFromSameTask(this); | |
48 | return true; | |
49 | } | |
50 | return super.onOptionsItemSelected(item); | |
51 | } | |
52 | @Override | |
53 | protected void onPostCreate(Bundle savedInstanceState) | |
54 | { | |
55 | super.onPostCreate(savedInstanceState); | |
56 | ||
57 | setupSimplePreferencesScreen(); | |
58 | } | |
59 | private void setupSimplePreferencesScreen() { | |
60 | if (!isSimplePreferences(this)) { | |
61 | return; | |
62 | } | |
63 | addPreferencesFromResource(R.xml.pref_general);} | |
64 | @Override | |
65 | public boolean onIsMultiPane() | |
66 | { | |
67 | return isXLargeTablet(this) && !isSimplePreferences(this); | |
68 | } | |
69 | private static boolean isXLargeTablet(Context context) | |
70 | { | |
71 | return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE; | |
72 | } | |
73 | private static boolean isSimplePreferences(Context context) | |
74 | { | |
75 | return ALWAYS_SIMPLE_PREFS | |
76 | || Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB | |
77 | || !isXLargeTablet(context); | |
78 | } | |
79 | @Override | |
80 | @TargetApi(Build.VERSION_CODES.HONEYCOMB) | |
81 | public void onBuildHeaders(List<Header> target) | |
82 | { | |
83 | if (!isSimplePreferences(this)) | |
84 | { | |
85 | //loadHeadersFromResource(R.xml.pref_headers, target); | |
86 | } | |
87 | } | |
88 | private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() { | |
89 | @Override | |
90 | public boolean onPreferenceChange(Preference preference, Object value) | |
91 | { | |
92 | String stringValue = value.toString(); | |
93 | ||
94 | if (preference instanceof ListPreference) | |
95 | { | |
96 | ListPreference listPreference = (ListPreference) preference; | |
97 | int index = listPreference.findIndexOfValue(stringValue); | |
98 | preference.setSummary(index >= 0 ? listPreference.getEntries()[index]:null); | |
99 | } | |
100 | else if (preference instanceof RingtonePreference) | |
101 | { | |
102 | if (TextUtils.isEmpty(stringValue)) | |
103 | { | |
104 | //preference.setSummary(R.string.pref_ringtone_silent); | |
105 | } | |
106 | else | |
107 | { | |
108 | Ringtone ringtone = RingtoneManager.getRingtone( | |
109 | preference.getContext(), Uri.parse(stringValue)); | |
110 | if (ringtone == null) | |
111 | {preference.setSummary(null);} | |
112 | else | |
113 | { | |
114 | String name = ringtone.getTitle(preference.getContext()); | |
115 | preference.setSummary(name); | |
116 | } | |
117 | } | |
118 | } | |
119 | else | |
120 | { | |
121 | preference.setSummary(stringValue); | |
122 | } | |
123 | return true; | |
124 | } | |
125 | }; | |
126 | private static void bindPreferenceSummaryToValue(Preference preference) | |
127 | { | |
128 | preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener); | |
129 | sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,PreferenceManager.getDefaultSharedPreferences(preference.getContext()).getString(preference.getKey(),"")); | |
130 | } | |
131 | @TargetApi(Build.VERSION_CODES.HONEYCOMB) | |
132 | public static class GeneralPreferenceFragment extends PreferenceFragment | |
133 | { | |
134 | @Override | |
135 | public void onCreate(Bundle savedInstanceState) | |
136 | { | |
137 | super.onCreate(savedInstanceState); | |
138 | addPreferencesFromResource(R.xml.pref_general); | |
139 | bindPreferenceSummaryToValue(findPreference("example_list")); | |
140 | bindPreferenceSummaryToValue(findPreference("fuel_type")); | |
141 | bindPreferenceSummaryToValue(findPreference("unit_type")); | |
142 | } | |
143 | public void onPause() | |
144 | { | |
145 | super.onPause(); | |
146 | addPreferencesFromResource(R.xml.pref_general); | |
147 | bindPreferenceSummaryToValue(findPreference("example_list")); | |
148 | bindPreferenceSummaryToValue(findPreference("fuel_type")); | |
149 | bindPreferenceSummaryToValue(findPreference("unit_type")); | |
150 | } | |
151 | } | |
152 | } |