private void initPreference() { mLanguagePreference = (PreferenceScreen) findPreference(KEY_LANGUAGE); mAddChannelPreference = (PreferenceScreen) findPreference(KEY_ADD_CHANNEL); mChannelListPreference = (PreferenceCategory) findPreference(KEY_CHANNEL_LIST); mLanguagePreference.setOnPreferenceClickListener(this); mAddChannelPreference.setOnPreferenceClickListener(this); }
private void updateHardKeyboards() { mHardKeyboardPreferenceList.clear(); if (getResources().getConfiguration().keyboard == Configuration.KEYBOARD_QWERTY) { final int[] devices = InputDevice.getDeviceIds(); for (int i = 0; i < devices.length; i++) { InputDevice device = InputDevice.getDevice(devices[i]); if (device != null && !device.isVirtual() && device.isFullKeyboard()) { final String inputDeviceDescriptor = device.getDescriptor(); final String keyboardLayoutDescriptor = mIm.getCurrentKeyboardLayoutForInputDevice(inputDeviceDescriptor); final KeyboardLayout keyboardLayout = keyboardLayoutDescriptor != null ? mIm.getKeyboardLayout(keyboardLayoutDescriptor) : null; final PreferenceScreen pref = new PreferenceScreen(getActivity(), null); pref.setTitle(device.getName()); if (keyboardLayout != null) { pref.setSummary(keyboardLayout.toString()); } else { pref.setSummary(R.string.keyboard_layout_default_label); } pref.setOnPreferenceClickListener( new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { showKeyboardLayoutDialog(inputDeviceDescriptor); return true; } }); mHardKeyboardPreferenceList.add(pref); } } } if (!mHardKeyboardPreferenceList.isEmpty()) { for (int i = mHardKeyboardCategory.getPreferenceCount(); i-- > 0; ) { final Preference pref = mHardKeyboardCategory.getPreference(i); if (pref.getOrder() < 1000) { mHardKeyboardCategory.removePreference(pref); } } Collections.sort(mHardKeyboardPreferenceList); final int count = mHardKeyboardPreferenceList.size(); for (int i = 0; i < count; i++) { final Preference pref = mHardKeyboardPreferenceList.get(i); pref.setOrder(i); mHardKeyboardCategory.addPreference(pref); } getPreferenceScreen().addPreference(mHardKeyboardCategory); } else { getPreferenceScreen().removePreference(mHardKeyboardCategory); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this; addPreferencesFromResource(R.xml.about_pref); mVersion = (PreferenceScreen) findPreference("about_version"); mVersion.setSummary(Misc.getVersionName(this)); mCheckUpdate = (PreferenceScreen) findPreference("about_check_update"); mCheckUpdate.setOnPreferenceClickListener(this); mRecommend = (PreferenceScreen) findPreference("about_recommend"); mRecommend.setOnPreferenceClickListener(this); mReset = (PreferenceScreen) findPreference("about_reset"); mReset.setOnPreferenceClickListener(this); }
/** * 初始化关于 * * @param preference */ private void initAboutPreference(PreferenceScreen preference) { preference.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference arg0) { AlertDialog.Builder builder = new AlertDialog.Builder(PreferencesActivity.this); builder .setTitle("关于") .setIcon(R.drawable.icon) .setMessage( android.text.Html.fromHtml( "<b>版本号:1.0.0.0</b><br /><br /> 情景模式(Profile Manager) 是一款Android平台的情景模式增强软件,能够让你随时切换多种情景模式。<br /> 软件内置了几种常用情景模式(标准、家庭、会议、户外等),并且可以根据需要进行修改和添加。<br /> 每个情景模式可以对铃声、通话音量、闹铃音量、振动、飞行模式、Wi-Fi、蓝牙等进行详细的设置。<br /><br />使用中有什么建议或问题,请反馈到:[email protected]")) .setNegativeButton("返回", null); AlertDialog ad = builder.create(); ad.show(); return false; } }); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); setTitle(getString(R.string.app_name) + " > " + getString(R.string.general_preferences)); // not super safe, but we're just putting in this mode to help administrate // would require code to access it boolean adminMode = getIntent().getBooleanExtra("adminMode", false); SharedPreferences adminPreferences = getSharedPreferences(AdminPreferencesActivity.ADMIN_PREFERENCES, 0); boolean serverAvailable = adminPreferences.getBoolean(AdminPreferencesActivity.KEY_CHANGE_SERVER, true); PreferenceCategory serverCategory = (PreferenceCategory) findPreference(getString(R.string.server_preferences)); mServerUrlPreference = (EditTextPreference) findPreference(KEY_SERVER_URL); mServerUrlPreference.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String url = newValue.toString(); // remove all trailing "/"s while (url.endsWith("/")) { url = url.substring(0, url.length() - 1); } if (UrlUtils.isValidUrl(url)) { preference.setSummary(newValue.toString()); return true; } else { Toast.makeText(getApplicationContext(), R.string.url_error, Toast.LENGTH_SHORT) .show(); return false; } } }); mServerUrlPreference.setSummary(mServerUrlPreference.getText()); mServerUrlPreference.getEditText().setFilters(new InputFilter[] {getReturnFilter()}); if (!(serverAvailable || adminMode)) { Preference protocol = findPreference(KEY_PROTOCOL); serverCategory.removePreference(protocol); serverCategory.removePreference(mServerUrlPreference); } else { // this just removes the value from protocol, but protocol doesn't // exist if we take away access disableFeaturesInDevelopment(); } mUsernamePreference = (EditTextPreference) findPreference(KEY_USERNAME); mUsernamePreference.setOnPreferenceChangeListener(this); mUsernamePreference.setSummary(mUsernamePreference.getText()); mUsernamePreference.getEditText().setFilters(new InputFilter[] {getReturnFilter()}); boolean usernameAvailable = adminPreferences.getBoolean(AdminPreferencesActivity.KEY_CHANGE_USERNAME, true); if (!(usernameAvailable || adminMode)) { serverCategory.removePreference(mUsernamePreference); } mPasswordPreference = (EditTextPreference) findPreference(KEY_PASSWORD); mPasswordPreference.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String pw = newValue.toString(); if (pw.length() > 0) { mPasswordPreference.setSummary("********"); } else { mPasswordPreference.setSummary(""); } return true; } }); if (mPasswordPreference.getText() != null && mPasswordPreference.getText().length() > 0) { mPasswordPreference.setSummary("********"); } mUsernamePreference.getEditText().setFilters(new InputFilter[] {getReturnFilter()}); boolean passwordAvailable = adminPreferences.getBoolean(AdminPreferencesActivity.KEY_CHANGE_PASSWORD, true); if (!(passwordAvailable || adminMode)) { serverCategory.removePreference(mPasswordPreference); } // mSelectedGoogleAccountPreference = (PreferenceScreen) // findPreference(KEY_SELECTED_GOOGLE_ACCOUNT); // mSelectedGoogleAccountPreference // .setOnPreferenceClickListener(new OnPreferenceClickListener() { // @Override // public boolean onPreferenceClick(Preference preference) { // Intent i = new Intent(getApplicationContext(), AccountList.class); // startActivity(i); // return true; // } // }); // mSelectedGoogleAccountPreference.setSummary(mSelectedGoogleAccountPreference // .getSharedPreferences().getString(KEY_ACCOUNT, "")); // boolean googleAccounAvailable = adminPreferences.getBoolean( // AdminPreferencesActivity.KEY_CHANGE_GOOGLE_ACCOUNT, true); // if (!(googleAccounAvailable || adminMode)) { // serverCategory.removePreference(mSelectedGoogleAccountPreference); // } // mFormListUrlPreference = (EditTextPreference) findPreference(KEY_FORMLIST_URL); // mFormListUrlPreference.setOnPreferenceChangeListener(this); // mFormListUrlPreference.setSummary(mFormListUrlPreference.getText()); // mServerUrlPreference.getEditText().setFilters( // new InputFilter[] { // getReturnFilter(), getWhitespaceFilter() // }); // if (!(serverAvailable || adminMode)) { // serverCategory.removePreference(mFormListUrlPreference); // } // mSubmissionUrlPreference = (EditTextPreference) findPreference(KEY_SUBMISSION_URL); // mSubmissionUrlPreference.setOnPreferenceChangeListener(this); // mSubmissionUrlPreference.setSummary(mSubmissionUrlPreference.getText()); // mServerUrlPreference.getEditText().setFilters( // new InputFilter[] { // getReturnFilter(), getWhitespaceFilter() // }); // if (!(serverAvailable || adminMode)) { // serverCategory.removePreference(mSubmissionUrlPreference); // } // // if (!(serverAvailable || usernameAvailable || passwordAvailable || adminMode)) { // getPreferenceScreen().removePreference(serverCategory); // } PreferenceCategory clientCategory = (PreferenceCategory) findPreference(getString(R.string.client)); boolean fontAvailable = adminPreferences.getBoolean(AdminPreferencesActivity.KEY_CHANGE_FONT_SIZE, true); mFontSizePreference = (ListPreference) findPreference(KEY_FONT_SIZE); mFontSizePreference.setSummary(mFontSizePreference.getEntry()); mFontSizePreference.setOnPreferenceChangeListener( new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { int index = ((ListPreference) preference).findIndexOfValue(newValue.toString()); String entry = (String) ((ListPreference) preference).getEntries()[index]; ((ListPreference) preference).setSummary(entry); return true; } }); if (!(fontAvailable || adminMode)) { clientCategory.removePreference(mFontSizePreference); } boolean defaultAvailable = adminPreferences.getBoolean(AdminPreferencesActivity.KEY_DEFAULT_TO_FINALIZED, true); Preference defaultFinalized = findPreference(KEY_COMPLETED_DEFAULT); if (!(defaultAvailable || adminMode)) { clientCategory.removePreference(defaultFinalized); } boolean splashAvailable = adminPreferences.getBoolean(AdminPreferencesActivity.KEY_SELECT_SPLASH_SCREEN, true); mSplashPathPreference = (PreferenceScreen) findPreference(KEY_SPLASH_PATH); mSplashPathPreference.setOnPreferenceClickListener( new OnPreferenceClickListener() { private void launchImageChooser() { Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.setType("image/*"); startActivityForResult(i, PreferencesActivity.IMAGE_CHOOSER); } @Override public boolean onPreferenceClick(Preference preference) { // if you have a value, you can clear it or select new. CharSequence cs = mSplashPathPreference.getSummary(); if (cs != null && cs.toString().contains("/")) { final CharSequence[] items = { getString(R.string.select_another_image), getString(R.string.use_odk_default) }; AlertDialog.Builder builder = new AlertDialog.Builder(PreferencesActivity.this); builder.setTitle(getString(R.string.change_splash_path)); builder.setNeutralButton( getString(R.string.cancel), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); } }); builder.setItems( items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int item) { if (items[item].equals(getString(R.string.select_another_image))) { launchImageChooser(); } else { setSplashPath(getString(R.string.default_splash_path)); } } }); AlertDialog alert = builder.create(); alert.show(); } else { launchImageChooser(); } return true; } }); if (!(splashAvailable || adminMode)) { clientCategory.removePreference(mSplashPathPreference); } boolean showSplashAvailable = adminPreferences.getBoolean(AdminPreferencesActivity.KEY_SHOW_SPLASH_SCREEN, true); CheckBoxPreference showSplashPreference = (CheckBoxPreference) findPreference(KEY_SHOW_SPLASH); if (!(showSplashAvailable || adminMode)) { clientCategory.removePreference(showSplashPreference); } if (!(fontAvailable || defaultAvailable || splashAvailable || showSplashAvailable || adminMode)) { getPreferenceScreen().removePreference(clientCategory); } }
public void setOnPreferenceClickListener( PreferenceScreen.OnPreferenceClickListener onPreferenceClickListener) { myScreen.setOnPreferenceClickListener(onPreferenceClickListener); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); settings = PreferenceManager.getDefaultSharedPreferences(this); mPreferenceListener = new PreferenceChangeListener(); settings.registerOnSharedPreferenceChangeListener(mPreferenceListener); setLanguage(); systemDefaultLocale = Resources.getSystem().getConfiguration().locale; systemDefaultLangugage = systemDefaultLocale.toString(); String lang = settings.getString(MainActivity.PREF_LANG, systemDefaultLangugage); locale = new Locale(lang); addPreferencesFromResource(R.xml.prefs); // code for cropping image /*ScreenResolution sr = deviceDimensions(); int gcd = GCD(sr.width, sr.height); aspectX = sr.width / gcd; aspectY = sr.height / gcd; outputX = sr.width - aspectX * 30; outputY = sr.height - aspectY * 30;*/ selectImagePref = (SelectImagePreference) findPreference(MainActivity.IMG_SELECT); selectImagePref.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { selectBackgroundImage(SELECT_IMAGE); return true; } }); selectLandscapeImagePref = (SelectLandscapeImagePreference) findPreference(MainActivity.LANDSCAPE_IMG_SELECT); selectLandscapeImagePref.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { selectBackgroundImage(SELECT_LANDSCAPE_IMAGE); return true; } }); PreferenceScreen resetImages = (PreferenceScreen) findPreference(MainActivity.RESET); resetImages.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { SharedPreferences.Editor editor = settings.edit(); editor.putBoolean(MainActivity.isBgSet, false); editor.putBoolean(MainActivity.isLandscapeSet, false); editor.commit(); selectImagePref.updateBackgroundImage(null); selectLandscapeImagePref.updateBackgroundImage(null); return true; } }); PreferenceScreen pScreen = (PreferenceScreen) findPreference(MainActivity.PREF_LANG); pScreen.setSummary(LanguageList.toTitleCase(getLocale(lang).getDisplayName(locale))); pScreen.setOnPreferenceClickListener( new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Intent intent = new Intent(Preferences.this, InputLanguageSelection.class); startActivity(intent); return true; } }); }