日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
AndroidUI設計:構建應用參數(shù)設置屏幕

【譯文】許多應用程序可以得益于共享參數(shù)設置(Shared Preferences)——這是Android平臺解決應用程序設置持久性存儲的辦法。有許多辦法可以創(chuàng)建UI用戶界面,用來為用戶收集和顯示持久性設置。最容易的辦法就是使用PreferencesActivity,它提供了與平臺的其余部分一致的外觀感覺,包括設備的系統(tǒng)參數(shù)設置。不妨通過該教程來學習如何使用PreferencesActivity。

我們簡單的Mobiletuts新聞源閱讀應用程序還沒有一個正式名稱(我們一直稱之為TutList),它需要改進針對后臺更新過程的用戶控制。因而,我們會添加一個參數(shù)設置,幫助控制后臺更新過程。

構建應用參數(shù)設置屏幕的UI設計準備工作

不管怎樣,開始之前都要下載一個素材,并導入到Eclipse。

***步:添加UI設計共享參數(shù)設置助手

共享參數(shù)設置常常用在整個應用程序當中。關于單個設置的名稱和參數(shù)設置組的名稱的定義必須存儲起來,以便用在整個應用程序當中。有幾個辦法來解決這個問題。我們采用的解決辦法涉及一個輔助類(helper class),用于一致地訪問特定的設置值,而參數(shù)設置鍵存儲在資源字符串中,以便從代碼及其他資源文件來訪問。

不妨從輔助類代碼開始入手:

 
 
 
 
  1. public class TutListSharedPrefs {  
  2.  
  3.     public final static String PREFS_NAME = "tutlist_prefs";  
  4.  
  5.    
  6.  
  7.     public static boolean getBackgroundUpdateFlag(Context context) {  
  8.  
  9.         SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0);  
  10.  
  11.         return prefs.getBoolean(  
  12.  
  13.                 context.getString(R.string.pref_key_flag_background_update),  
  14.  
  15.                 false);  
  16.  
  17.     }  
  18.  
  19.    
  20.  
  21.     public static void setBackgroundUpdateFlag(Context context, boolean newValue) {  
  22.  
  23.         SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0);  
  24.  
  25.         Editor prefsprefsEditor = prefs.edit();  
  26.  
  27.         prefsEditor.putBoolean(  
  28.  
  29.                 context.getString(R.string.pref_key_flag_background_update),  
  30.  
  31.                 newValue);  
  32.  
  33.         prefsEditor.commit();  
  34.  
  35.    } 
  36.  
  37.  }  

在這個類中,我們定義了一個公共變量來確認設置參數(shù)組或集的名稱,名為PREFS_NAME。我們還使用了名為pref_key_flag_background_update的資源字符串,指定特定的設置參數(shù)名稱定義。你應該為自己的資源添加字符串,那樣可以定義該標識符。我們把其值設為“background_update_flag”,但重要的是,所用的值在每個地方都是一樣的。

雖然我們添加了一個setBackgroundUpdateFlag()方法,以求全面,但不會使用這個方法。下文解釋了原因。

***,我們把這個Java類添加到了com.mamlambo.tutorial.tutlist.data程序包,因為那個類似乎最有關系。

第二步:添加UI設計參數(shù)設置屏幕活動

Android軟件開發(fā)工具包(SDK)包括了一種一致的方法為用戶提供設置:PreferenceActivity。這個特殊的Activity(活動)類與參數(shù)設置資源文件一起,共同使得開發(fā)人員很容易一致地配置和顯示大多數(shù)類型的應用設置。與其他應用程序和系統(tǒng)參數(shù)設置屏幕相一致,也使得這些屏幕對用戶來說很熟悉、很容易。

想為“TutList”應用程序添加PreferenceActivity,首先添加一個新的活動調用TutListPreferencesActivity,讓它擴展PreferenceActivity(我們把它添加到主程序包)。由于我們沒有使用默認的參數(shù)設置名稱,就需要設定這個PreferenceActivity將使用的參數(shù)設置名稱。此外,我們需要告訴它使用哪個參數(shù)設置資源文件。這將告訴它如何顯示參數(shù)設置,并且告訴它這個屏幕顯示和改動哪些參數(shù)設置。

在這個活動的onCreate()方法里面,使用setSharedPreferencesName()方法,參數(shù)設置組常量在我們在***步定義的參數(shù)設置輔助類中有所定義。然后調用addPreferencesFromResource()方法。我們會在下一步定義這個資源。

眼下,這整個類看起來像這樣:

 
 
 
 
  1. public class TutListPreferencesActivity extends PreferenceActivity {  
  2.  
  3.     @Override 
  4.  
  5.     protected void onCreate(Bundle savedInstanceState) {  
  6.  
  7.         super.onCreate(savedInstanceState);  
  8.  
  9.    
  10.  
  11.         getPreferenceManager().setSharedPreferencesName(  
  12.  
  13.                 TutListSharedPrefs.PREFS_NAME);  
  14.  
  15.         addPreferencesFromResource(R.xml.prefs);  
  16.  
  17.     }  
  18.  

我們會在整個教程中改進這個類。但首先,我們創(chuàng)建名為prefs的被引用XML資源。

第三步:定義UI設計參數(shù)設置屏幕資源

為應用程序資源添加一個新的XML文件,名為prefs.xml。你可以使用新的Android XML文件向導,填寫相應字段,如下圖所示。這還會在正確的位置:/res/xml目錄創(chuàng)建XML文件。

參數(shù)設置活動資源文件包括 標簽和一個或多個標簽,后者用于組織設置和各種類型特定屬性。為了滿足我們簡單的參數(shù)設置要求,我們可以使用,它裝入并存儲布爾值。其他可能的類型包括EditTextPreference和ListPreference選擇,分別用于收集字符串以及從項目列表中進行選擇。

下面是整個內容參數(shù)設置屏幕資源文件prefs.xml:

 
 
 
 
  1.   
  2.  
  3.  
  4.     xmlns:android="http://schemas.android.com/apk/res/android">  
  5.  
  6.     
  7.  
  8.         android:title="Background Updating">  
  9.  
  10.         
  11.  
  12.             android:summary="@string/pref_summary_background_update_flag" 
  13.  
  14.             android:title="@string/pref_title_background_update_flag" 
  15.  
  16.             android:key="@string/pref_key_flag_background_update" />  
  17.  
  18.       
  19.  
  20.  

這表明了把鍵字符串作為資源來存儲的***理由之一:它們既可以裝入到Java中,又可以在XML文件中直接使用。

第四步:啟動UI設計參數(shù)設置屏幕

下一步,我們將把菜單項添加到列表片段上,以啟動參數(shù)設置屏幕。在做這一步時,我們還將更新刷新菜單項,不再開始進行預定更新。

為此,先編輯/res/menu/options_menu.xml資源文件,添加一個新的菜單項:

 
 
 
 
  1.  
  2.     android:id="@+id/settings_option_item" 
  3.  
  4.     android:icon="@drawable/ic_menu_preferences" 
  5.  
  6.     android:title="@string/settings"> 

你還需要為菜單項標題(@string/settings)添加相應的資源字符串,并添加一個相應的圖標(@drawable/ic_menu_preferences)。我們使用來自Android SDK的標準的參數(shù)設置圖標,該圖標對用戶來說會很熟悉。

接下來,編輯onCreateOptionsMenu()方法,為新的菜單項提供正確的Intent:

 
 
 
 
  1. Intent prefsIntent = new Intent(getActivity().getApplicationContext(),  
  2.  
  3.         TutListPreferencesActivity.class);  
  4.  
  5.    
  6.  
  7. MenuItem preferences = menu.findItem(R.id.settings_option_item);  
  8.  
  9. preferences.setIntent(prefsIntent);  

現(xiàn)在,更新onOptionsItemSelected()方法。由于菜單項不止一個,現(xiàn)在有必要使用開關語句。在該開關語句里面,我們可以使用為每個菜單項分配的常量標識符,以區(qū)別用戶的選擇。

 
 
 
 
  1.    Override 
  2.  
  3. ic boolean onOptionsItemSelected(MenuItem item) {  
  4.  
  5. switch (item.getItemId()) {  
  6.  
  7. case R.id.refresh_option_item:  
  8.  
  9.     getActivity().startService(item.getIntent());  
  10.  
  11.     break;  
  12.  
  13. case R.id.settings_option_item:  
  14.  
  15.     getActivity().startActivity(item.getIntent());  
  16.  
  17.     break;  
  18.  
  19. }  
  20.  
  21. return true;  

***,不要忘了為Android清單文件添加新的活動:

 
 
 
 
  1.  
  2.     android:name=".TutListPreferencesActivity" /> 

現(xiàn)在你可以運行應用程序,看到新的菜單項。

參數(shù)設置活動啟動后,可以存儲和檢索后臺更新參數(shù)設置。它應該看起來如下:

看起來很好,但還沒有做實際的操作。雖然標記在參數(shù)設置里面進行更新,但還沒有地方來檢查值,看看要不要開始后臺更新。

第五步:開始和停止警報

在上一步,對setRecurringAlarm()輔助方法的調用已被刪除。實際上,這個方法在TutListFragment類中不再需要。而是把它移到TutListPreferencesActivity類。然后添加第二個輔助方法,名為cancelRecurringAlarm():

 
 
 
 
  1. cancelRecurringAlarm(): 
  2.  
  3.        private void cancelRecurringAlarm(Context context) {  
  4.  
  5.     Intent downloader = new Intent(context, AlarmReceiver.class);  
  6.  
  7.     PendingIntent recurringDownload = PendingIntent.getBroadcast(context,  
  8.  
  9.             0, downloader, PendingIntent.FLAG_CANCEL_CURRENT);  
  10.  
  11.     AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);  
  12.  
  13.     alarms.cancel(recurringDownload);  
  14.  

***,覆蓋TutListPreferencesActivity類的onPause()方法;視情況需要,設置或取消循環(huán)警報。在這個方法里面,你可以使用輔助方法getBackgroundUpdateFlag()來檢查參數(shù)設置的值:更新的值,并調用相應的方法:

 
 
 
 
  1.    @Override 
  2.  
  3. ected void onPause() {  
  4.  
  5. super.onPause();  
  6.  
  7. Context context = getApplicationContext();  
  8.  
  9. if (TutListSharedPrefs.getBackgroundUpdateFlag(getApplicationContext())) {  
  10.  
  11.     setRecurringAlarm(context);  
  12.  
  13. } else {  
  14.  
  15.     cancelRecurringAlarm(context);  
  16.  
  17. }  

現(xiàn)在,無論何時檢查設置,都可以根據(jù)當前值來更新警報。由于默認值是“off”,用戶必須進入到設置,才能啟用后臺下載。

關于PreferenceFragment

你可能會想我們?yōu)槭裁床挥眯碌腜referenceFragment類。原因很簡單:它在兼容性庫中還沒有得到支持。由于我們想要讓TutList應用程序不僅僅與Android 3.0設備兼容,所以我們還無法使用它。但愿兼容性庫會繼續(xù)得到改進。

結論

在該教程中,大家學會了如何用PreferencesActivity使用PreferencesScreen資源文件,以便快速、輕松地創(chuàng)建一個功能活動,以便管理應用程序的參數(shù)設置數(shù)據(jù)。此外,你為用戶提供了控制后臺更新TutList應用程序的一個方法。


本文名稱:AndroidUI設計:構建應用參數(shù)設置屏幕
標題鏈接:http://www.5511xx.com/article/cdehocs.html