国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
PreferenceActivity用法簡介
 
 

在開發(fā)應(yīng)用程序的過程中我們有很大的機會需要用到參數(shù)設(shè)置功能,那么在Android應(yīng)用中,我們?nèi)绾螌崿F(xiàn)參數(shù)設(shè)置界面及參數(shù)存儲呢,下面我們來介紹一下Android中的一個特殊Activity–PreferencesActivity。PreferencesActivity是Android中專門用來實現(xiàn)程序設(shè)置界面及參數(shù)存儲的一個Activity,我們用一個實例來簡介如何使用PreferencesActivity。
下圖是一個參數(shù)設(shè)置界面:


下載 (23.65 KB)
2010-5-22 10:49
以此為例我們來介紹一下如何實現(xiàn)這個界面。首先建立一個xml來描述這個界面,文件為res/xml/preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="PreferenceCategory 1">
        <CheckBoxPreference
            android:key="CheckBox1"
            android:title="CheckBox"
            android:summaryOn="某功能: 開啟"
            android:summaryOff="某功能: 關(guān)閉"
            android:defaultValue="true"
        />
    </PreferenceCategory>
    <PreferenceCategory android:title="PreferenceCategory 2">
        <PreferenceScreen android:title="二級PreferenceScreen">
            <CheckBoxPreference
                android:key="CheckBox2"
                android:title="CheckBox"
                android:summaryOn="某功能: 開啟"
                android:summaryOff="某功能: 關(guān)閉"
                android:defaultValue="true"
            />
        </PreferenceScreen>
    </PreferenceCategory>
    <PreferenceCategory android:title="PreferenceCategory 3">
    <ListPreference
        android:key="ListPreference"
        android:title="ListPreference"
        android:summary="ListPreference測試"
        android:dialogTitle="ListPreference"
        android:entries="@array/entries_list_preference"
        android:entryValues="@array/entriesvalue_list_preference"
    />
    <EditTextPreference
        android:key="EditTextPreference"
        android:title="EditTextPreference"
        android:summary="點擊輸入"
        android:dialogTitle="輸入設(shè)置"
    />
    <RingtonePreference
        android:key="RingtonePreference"
        android:title="RingtonePreference"
        android:summary="選擇鈴聲"
    />
    </PreferenceCategory>
</PreferenceScreen>
復(fù)制代碼
這個例子中包括了PreferenceActivity中常見的幾種組件,以下為具體介紹及用法:
PreferenceScreen:設(shè)置頁面,可嵌套形成二級設(shè)置頁面,用Title參數(shù)設(shè)置標(biāo)題。
PreferenceCategory:某一類相關(guān)的設(shè)置,可用Title參數(shù)設(shè)置標(biāo)題。
CheckBoxPreference:是一個CheckBox設(shè)置,只有兩種值,true或false,可用Title參數(shù)設(shè)置標(biāo)題,用summaryOn和summaryOff參數(shù)來設(shè)置控件選中和未選中時的提示。

下載 (14.01 KB)
2010-5-22 10:49
ListPreference:下拉框選擇控件,用Title參數(shù)設(shè)置標(biāo)題,用Summary參數(shù)設(shè)置說明,點擊后出現(xiàn)下拉框,用dialogTitle設(shè)置下拉框的標(biāo)題,下拉框內(nèi)顯示的內(nèi)容和具體的值需要在res/values/array.xml中設(shè)置兩個array來表示。圖中的array.xml設(shè)置如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="entries_list_preference">
    <item>test1</item>
    <item>test2</item>
    <item>test3</item>
</string-array>
<string-array name="entriesvalue_list_preference">
    <item>1</item>
    <item>2</item>
    <item>3</item>
</string-array>
</resources>
復(fù)制代碼

下載 (19.72 KB)
2010-5-22 10:49
EditTextPreference:輸入框控件,點擊后可輸入字符串設(shè)置。用Title參數(shù)設(shè)置標(biāo)題,Summary參數(shù)設(shè)置說明,dialogTitle參數(shù)設(shè)置輸入框的標(biāo)題。

下載 (20.68 KB)
2010-5-22 10:49
RingtonePreference:鈴聲選擇框,點擊后可選擇系統(tǒng)鈴聲。Title參數(shù)設(shè)置標(biāo)題,Summary參數(shù)設(shè)置說明,dialogTitle參數(shù)設(shè)置鈴聲選擇框的標(biāo)題。

下載 (20.36 KB)
2010-5-22 10:49
以上是PreferenceActivity的xml描述,那么在程序中我們只需要新建一個繼承自PreferenceActivity的Activity,然后在主程序中調(diào)用就可以了。這個PreferenceActivity中的設(shè)置存儲是完全自動的,你不需要再用代碼去實現(xiàn)設(shè)置的存儲,PreferenceActivity創(chuàng)建后會自動創(chuàng)建一個配置文件/data/data/you_package_name/shared_prefs/you_package_name_you_xml_name.xml。上例中自動生成的配置文件如下:<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="EditTextPreference">12332312</string>
<string name="ListPreference">2</string>
<string name="RingtonePreference">content://settings/system/ringtone</string>
<boolean name="CheckBox1" value="true" />
<boolean name="CheckBox2" value="true" />
</map>
復(fù)制代碼
要取得其中的值可以通過如下的方法:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
value = prefs.getString(”ListPreference”, “unset”);

 

 

 

 

 

 

 

 

 

設(shè)計自己的Android Preference

SeekBar Preference


 

Android提供了Preference供應(yīng)用可以進行功能設(shè)置以及屬性配置等操作,檢查android.preference可以看到Preference下有若干子類,例如常用的EditTextPreference、CheckBoxPreference、ListPreference等。但是僅僅有這些是不夠的。

在我現(xiàn)在的工作當(dāng)中,應(yīng)用里有這么一個場景,用戶手指在屏幕滑動,應(yīng)用繪制出移動的軌跡。

熟悉Android API Demo(可以在SDK/platforms/android-1.5/samples下找到)的人一定記得在graphics目錄下,有一個FingerPaint的類實現(xiàn)了類似上述功能。但是還遠遠實現(xiàn)不了我們的需要,–需求是要在Preference中實現(xiàn)挑選顏色和調(diào)整粗細。

當(dāng)然,他山之石可以攻玉,F(xiàn)ingerPaint還是提供了不錯的例子,尤其是FingPaint中選擇顏色所使用的另外一個類ColorPickerDialog基本上具備了我們想要的部分功能。

除了上面提到的FingerPaint之外,還可以從Android的源碼中找到可以參考的代碼。從framework/base/core/java中,找到android.preference包,可以看到有一個SeekBarPreference的類,–這是一個“爛尾”類,代碼未完成,因此被Google打上了@hide的標(biāo)簽。因此需要稍加完善,才能加以使用。


 

@Overrideprotected void onBindDialogView(View view) {super.onBindDialogView(view); bar = (SeekBar) view.findViewById(R.id.seekbar);bar.setOnSeekBarChangeListener(this);bar.setProgress(barValue);} public void setValue(int value) {barValue = value;} public int getValue() {return barValue;} @Overrideprotected void onDialogClosed(boolean positiveResult) {if (positiveResult) {this.getOnPreferenceChangeListener().onPreferenceChange(this, barValue);}}


Color Picker Preference


 

在這個類的改造過程中,override兩個父類方法是關(guān)鍵所在,一個是onBindDialogView,另一個是onDialogClosed。

通過第一個方法,我們可以“找到”被當(dāng)做content view的SeekBar的實例,進而可以獲得到其progress。

通過第二個方法,我們可以方便的通知到Listener,告訴它,SeekBar的值有變化。這里我們把SeekBar的值,即progress看做是SeekBarPreference的value。除了這兩個方法之外,就是要增加setValue和getValue兩個方法了。

如果不看代碼的話,就會有疑問:SeekBar是如何進入Diglog的呢?它正式通過DialogPreference的屬性android:dialogLayout得以注入:


 

<net.poemcode.android.config.SeekBarPreferenceandroid:key="@string/setting_handwrite_width_key"android:title="@string/setting_handwrite_width_title"android:dialogTitle="@string/setting_handwrite_width_title"android:dialogLayout="@layout/setting_widthseekbar"android:persistent="true"/>


 

依此原理,可以舉一反三,對于如何實現(xiàn)選擇顏色是不是有了思路?

首先實現(xiàn)一個視圖,負責(zé)展現(xiàn)不同顏色和接收用戶選中的顏色,其可以從SeekBarPreference中的內(nèi)部類ColorPickerView加以改造完成;然后新增一個布局文件,將剛才的視圖加入到布局當(dāng)中;接著繼承DialogPreference實現(xiàn)自己的Preference子類ColorPickerPreference;最后在XML文件里增加這個Preference并把剛才的布局文件通過dialogLayout屬性加入進去。從而實現(xiàn)了整個功能。


 

public class SeekBarPreference extends DialogPreference implements SeekBar.OnSeekBarChangeListener { private static final String TAG = "SeekBarPreference"; private SeekBar bar; private int barValue; public SeekBarPreference(Context context, AttributeSet attrs) {super(context, attrs);} @Overrideprotected void onBindDialogView(View view) {super.onBindDialogView(view); bar = (SeekBar) view.findViewById(R.id.seekbar);bar.setOnSeekBarChangeListener(this);bar.setProgress(barValue);} public void setValue(int value) {barValue = value;} public int getValue() {return barValue;} @Overrideprotected void onDialogClosed(boolean positiveResult) {if (positiveResult) {this.getOnPreferenceChangeListener().onPreferenceChange(this, barValue);}} public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {Log.d(TAG, "onProgressChanged, progress : " + progress + ", fromUser : " + fromUser);} public void onStartTrackingTouch(SeekBar seekBar) {Log.d(TAG, "onStartTrackingTouch");} public void onStopTrackingTouch(SeekBar seekBar) {barValue = seekBar.getProgress();}}
 
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android之PreferenceActivity
Android的配置界面PreferenceActivity
Android Preference使用
自定義PreferenceActivity——修改Preference樣式、加頂部布局
PreferenceActivity 全接觸 - 我的實驗室 貢獻我們智慧于網(wǎng)絡(luò) - Ja...
PreferenceActivity和PreferenceFragment
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服