PreferenceGroup中RingtonePreference的用法

来源:互联网 发布:淘宝黑号会有什么后果 编辑:程序博客网 时间:2024/05/21 01:43
1.使用PerferenceActivity或者PerferenceFragment实现。
2.在创建布局时,选择PreferenceScreen;
PreferenceGroup:显示多个选项的容器,是PreferenceScreen和PreferenceCategory的父类;
PreferenceScreen:必须是一个PreferenceActivity/PreferenceFragment的根标签,也可用于其他Preference中。用于根标签时是不可见的,当用于其他偏好层级中时,是可见的,但是它所包含的子层级是不可见,点击它会跳转到
另一个Screen中,并显示它的子层级。
PreferenceCategory:用于给一组选项设置不可点击的标题;
ListPreference:以对话框的形式显示一系列词目的Preference;
CheckBoxPreference:提供了复选框功能的Preference;
DialogPreference:提供了对话框功能的Preference;
EditTextPreference:DialogPreference的子类,加入了EditText的功能;
3。xml主要属性:

android:orderingFromXml:是否按照xml文件中的顺序,若设置此属性,必须是false或者true。

android:key:存储设置选项的键;

android:summary:选项的主题;

android:summary:选项标题;

4.实例:
xml文件:
<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >    <PreferenceCategory     android:title="铃声设置">    <RingtonePreference         android:title="提示音"        android:summary="默认铃声"        android:key="key_ringtone_preference"        android:ringtoneType="ringtone"/></PreferenceCategory></PreferenceScreen>
java代码:
MainActivity.java中:
public class MainActivity extends Activity implements OnClickListener {private Button button;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button) findViewById(R.id.button_settings);        button.setOnClickListener(this);    }@Overridepublic void onClick(View v) {// TODO Auto-generated method stubgetFragmentManager().beginTransaction().replace(R.id.containner, new SettingPreference()).commit();}}
PreferenceFragment.java中:
public class SettingPreference extends PreferenceFragment implements OnPreferenceChangeListener{private static Activity activity;private RingtonePreference mRingtone;private PreferenceScreen mPreferenceScreen;private static final String KEY_RINGTONE = "key_ringtone_preference";@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.generalpreference);activity = getActivity();mPreferenceScreen =  getPreferenceScreen();mRingtone = (RingtonePreference) mPreferenceScreen.findPreference(KEY_RINGTONE);String ringtoneUri = getRingtonePreference();String ringtone = getRingtoneTitleFromUri(ringtoneUri);mRingtone.setSummary(ringtone == null? "":ringtone); //设置监听事件mRingtone.setOnPreferenceChangeListener(this);}/** * 首选项值改变时回调 */@Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) {// TODO Auto-generated method stubif(preference == mRingtone){Toast.makeText(getActivity(), "newValue="+newValue, Toast.LENGTH_SHORT).show();setRingtonePreference((String)newValue);String ringtongTitle = getRingtoneTitleFromUri((String)newValue);mRingtone.setSummary(ringtongTitle);}return true;}/** * 得到铃声的Uri * @return */public static String getRingtonePreference(){SharedPreferences prefs = activity.getSharedPreferences("SP", Context.MODE_PRIVATE);String ringtone = prefs.getString(KEY_RINGTONE, null);return ringtone;}/** * 将铃声的Uri进行存储 * @param str */public static void setRingtonePreference(String str){SharedPreferences prefs = activity.getSharedPreferences("SP", Context.MODE_PRIVATE);prefs.edit().putString(KEY_RINGTONE, str).commit();}/** * 获取铃声名 * @param uri * @return */public static String getRingtoneTitleFromUri(String uri){if(TextUtils.isEmpty(uri)){return null;}Ringtone ringtone = RingtoneManager.getRingtone(activity, Uri.parse(uri));String ringtoneTitle = ringtone.getTitle(activity);return ringtoneTitle;}}
运行效果:




0 0
原创粉丝点击