精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android UI設計:構建應用參數設置屏幕

原創
移動開發 Android
51CTO曾在前文中介紹了谷歌官方教程:Android UI設計技巧,本文為51CTO獨家譯文,我們將介紹《Android UI設計:構建應用參數設置屏幕》。

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

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

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

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

***步:添加UI設計共享參數設置助手

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

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

  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.  }  

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

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

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

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

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

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

在這個活動的onCreate()方法里面,使用setSharedPreferencesName()方法,參數設置組常量在我們在***步定義的參數設置輔助類中有所定義。然后調用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.  

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

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

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

定義UI設計參數設置屏幕資源

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

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

  1. <?xml version="1.0" encoding="utf-8"?>  
  2.  
  3. <PreferenceScreen 
  4.  
  5.     xmlns:android="http://schemas.android.com/apk/res/android">  
  6.  
  7.     <PreferenceCategory 
  8.  
  9.         android:title="Background Updating">  
  10.  
  11.         <CheckBoxPreference 
  12.  
  13.             android:summary="@string/pref_summary_background_update_flag" 
  14.  
  15.             android:title="@string/pref_title_background_update_flag" 
  16.  
  17.             android:key="@string/pref_key_flag_background_update" />  
  18.  
  19.     </PreferenceCategory>  
  20.  
  21. </PreferenceScreen> 

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

第四步:啟動UI設計參數設置屏幕

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

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

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

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

接下來,編輯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);  

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

  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. <activity 
  2.  
  3.     android:name=".TutListPreferencesActivity" /> 

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

新的菜單項

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

存儲和檢索后臺更新參數設置

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

第五步:開始和停止警報

在上一步,對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()方法;視情況需要,設置或取消循環警報。在這個方法里面,你可以使用輔助方法getBackgroundUpdateFlag()來檢查參數設置的值:更新的值,并調用相應的方法:

  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. }  

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

關于PreferenceFragment

你可能會想我們為什么不用新的PreferenceFragment類。原因很簡單:它在兼容性庫中還沒有得到支持。由于我們想要讓TutList應用程序不僅僅與Android 3.0設備兼容,所以我們還無法使用它。但愿兼容性庫會繼續得到改進。

結論

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

責任編輯:佚名 來源: 51CTO
相關推薦

2010-09-16 16:37:09

SIP協議棧

2010-09-26 09:54:43

JVM參數設置

2009-11-18 14:53:40

Oracle參數設置

2010-04-13 16:45:47

Oracle job

2010-11-02 09:45:07

DB2 logfils

2010-09-25 10:11:19

無線局域網

2012-01-11 11:28:00

JavaJVM

2009-11-16 14:42:32

路由器參數設置

2010-09-27 10:08:36

無線局域網網絡參數

2009-12-25 09:51:46

2009-11-25 13:17:11

無線路由參數

2010-05-11 14:55:42

MySQL參數設置

2011-06-01 16:12:11

Android UI

2012-03-01 20:14:25

Android UI

2011-05-28 12:19:33

設計技巧UIAndroid

2010-08-30 10:48:01

無線網絡參數

2011-03-02 13:41:34

Action BarDashboardAndroid用戶界面

2011-05-28 15:14:06

設計技巧UIAndroid

2009-12-17 16:53:22

路由器協議

2009-12-03 20:11:47

路由器參數設置
點贊
收藏

51CTO技術棧公眾號

亚洲成人www| 国产在线一区二区| 一二美女精品欧洲| 欧美国产在线一区| а√天堂中文在线资源8| 26uuu国产电影一区二区| 国产精品入口免费视频一| 美女的奶胸大爽爽大片| 奇米亚洲欧美| 欧美不卡视频一区| 999精品视频在线| 亚洲综合伊人久久大杳蕉| 久久综合999| 亚洲一区二区免费| 午夜精品免费观看| 欧美午夜一区| 中文字幕欧美日韩va免费视频| 黄页网站在线看| 欧美va在线| 亚洲成av人综合在线观看| 亚洲一区二区三区午夜| 男人天堂资源在线| 国产98色在线|日韩| 国产精品视频yy9099| www.国产高清| 欧美在线亚洲综合一区| 中文字幕亚洲激情| 久久久久久久久免费看无码| 美女精品视频在线| 欧美日韩性生活| 免费在线观看日韩视频| 在线电影福利片| 国产精品第五页| 欧洲精品久久| 污视频在线免费| 国产成人免费视频精品含羞草妖精| 国产精品美乳一区二区免费| 可以免费在线观看的av| 一区视频在线看| 蜜臀久久99精品久久久无需会员| 日本美女xxx| 伊人春色之综合网| 日韩精品一区二区视频| 91九色蝌蚪porny| 成人盗摄视频| 精品国产亚洲在线| 欧洲成人午夜精品无码区久久| 成人短视频软件网站大全app| 欧美少妇一区二区| 日本a√在线观看| 99精品国自产在线| 日本乱人伦aⅴ精品| 国产一区二区三区精彩视频| 成人在线免费观看黄色| 亚洲一二三级电影| 日韩欧美精品免费| 92久久精品| 亚洲一区在线观看免费观看电影高清 | 欧美一区二区三区不卡| 婷婷六月天在线| 国产亚洲欧美日韩精品一区二区三区| 欧美三级韩国三级日本三斤| 午夜宅男在线视频| 成人福利片在线| 欧美精品久久一区| 天天干天天色天天干| 成人51免费| 日韩午夜激情免费电影| 欧美熟妇另类久久久久久多毛| 精品一区视频| 精品播放一区二区| 黄色网址在线视频| 自拍偷拍精品| 日韩中文字幕网址| 欧美黄色aaa| 在线欧美一区| 日本亚洲精品在线观看| 亚洲天堂网在线观看视频| 精品一区二区三区在线播放| 999热视频在线观看| 午夜视频免费在线| 欧美激情资源网| 国产卡一卡二在线| √8天堂资源地址中文在线| 欧美性高潮在线| 亚洲欧美国产中文| 亚洲精品一二三**| 精品丝袜一区二区三区| 国产不卡在线观看视频| 欧美freesex交免费视频| 91精品国产91久久久久久| 亚洲天堂五月天| 韩国三级电影一区二区| 久久涩涩网站| 日本高清视频在线观看| 亚洲二区在线观看| 欧美一级裸体视频| 亚洲一区二区三区中文字幕在线观看| 日韩成人在线电影网| 精品人体无码一区二区三区| 亚洲小说欧美另类社区| 国产精品99久久久久久久久久久久| 国产精品无码久久久久成人app| 成熟亚洲日本毛茸茸凸凹| 日韩中文一区二区三区| 国产乱妇乱子在线播视频播放网站| 日韩欧美国产一区二区| 99国产精品免费视频| 国产欧美日韩精品一区二区免费| 欧美大胆在线视频| 高清乱码免费看污| 国产电影一区二区三区| 亚洲第一在线综合在线| 大菠萝精品导航| 69堂亚洲精品首页| 舐め犯し波多野结衣在线观看| 欧美精品一线| 91精品久久久久久久久中文字幕 | 在线免费观看羞羞视频一区二区| 欧美成人一二三区| 麻豆91在线观看| 久久亚洲一区二区| 免费电影视频在线看| 欧美网站大全在线观看| 性欧美丰满熟妇xxxx性久久久| 在线观看免费一区二区| 国产精品美女视频网站| 日本亚洲欧美| 亚洲成人一区在线| 在线观看一区二区三区视频| 久久精品国产亚洲夜色av网站 | 亚洲欧美日本精品| 国产精品6666| 成人午夜又粗又硬又大| 天天想你在线观看完整版电影免费| 成人日韩精品| 亚洲色图五月天| 日韩久久中文字幕| 成人免费毛片嘿嘿连载视频| 欧美交换配乱吟粗大25p| 一区二区三区| 久久亚洲国产精品| 国产精品人妻一区二区三区| 国产精品欧美极品| 97超碰成人在线| 成人高清av| 国产精品久久久久久久久久免费| 免费人成在线观看网站| 欧美日韩综合视频网址| 99久久国产精| 亚洲欧美bt| 日本福利一区二区三区| 成人啊v在线| 国产一区二区三区免费视频| 波多野结衣电影在线播放| 久久久国产精华| 美女黄色片视频| 欧美成人自拍| 99精品国产一区二区| 国语对白在线刺激| 精品福利在线导航| 国产性xxxx高清| 国产亚洲成年网址在线观看| 国产又猛又黄的视频| 希岛爱理av一区二区三区| 91欧美日韩一区| 欧美韩日亚洲| 亚洲欧美国产另类| 中文字幕人妻精品一区| 亚洲视频一区二区在线| 少妇极品熟妇人妻无码| 国产日本精品| 婷婷精品国产一区二区三区日韩 | 日产国产欧美视频一区精品| 亚洲制服欧美久久| 亚洲日本视频在线| 88xx成人精品| 日韩伦理在线观看| 精品国产一区a| 精品视频一二三区| 亚洲日本丝袜连裤袜办公室| 国产性生活毛片| 美女尤物国产一区| www.日本在线视频| 加勒比久久综合| 91麻豆桃色免费看| av资源中文在线| 中文字幕视频一区二区在线有码| 精品国产999久久久免费| 精品国产户外野外| 男人晚上看的视频| thepron国产精品| 91制片厂毛片| 欧美日韩ab| 日韩一区免费观看| 久久97精品| 国产在线视频一区| 黄色在线网站噜噜噜| 日韩亚洲成人av在线| 午夜在线视频免费| 欧美精品粉嫩高潮一区二区| 久久久久久久黄色片| 亚洲欧洲一区二区在线播放| 国产精品手机在线观看| 麻豆一区二区在线| 国产特级淫片高清视频| 亚洲精品国产偷自在线观看| 蜜桃麻豆www久久国产精品| 精品中文字幕一区二区三区四区 | 中文字幕欧美人妻精品一区蜜臀| 亚洲国产精品久久一线不卡| 男女男精品视频网站| 粉嫩aⅴ一区二区三区四区| 免费看污污网站| 日韩一级免费| 久久久久久av无码免费网站下载| 国产亚洲电影| 久久99精品久久久久久三级| 试看120秒一区二区三区| 国产精品永久免费视频| 最新日韩精品| 久久久久久久久久国产精品| www视频在线看| 色噜噜狠狠狠综合曰曰曰| 天堂91在线| 337p日本欧洲亚洲大胆色噜噜| 99久久婷婷国产一区二区三区| 日韩欧美极品在线观看| 日韩av在线播| 亚洲一区二区三区四区五区黄| 四虎影视1304t| 欧美国产成人在线| 中文字幕免费看| 99热国产精品| 日韩av无码一区二区三区不卡| 盗摄精品av一区二区三区| 日韩av加勒比| 久草这里只有精品视频| 视色视频在线观看| 蜜桃精品视频在线| 亚洲少妇久久久| 鲁大师成人一区二区三区| 久久久久久久久久久视频| 国产精品亚洲欧美| 男人日女人bb视频| 奶水喷射视频一区| 日本女优爱爱视频| 日本女人一区二区三区| 99热手机在线| 久久国产精品免费| 亚洲va在线va天堂va偷拍| 麻豆精品视频在线观看| www.亚洲高清| 国产一区二区网址| 香蕉视频xxx| 国内国产精品久久| 中文字幕欧美视频| 国产69精品久久久久毛片| 亚洲黄色小说在线观看| k8久久久一区二区三区| 国产精品无码电影| 久久久久久免费网| 波多野在线播放| **欧美大码日韩| 美女福利视频在线观看| 亚洲第一成年网| 日本高清www免费视频| 91国偷自产一区二区三区成为亚洲经典| 色在人av网站天堂精品| 国产伦理一区二区三区| 国产精品999久久久| 亚洲天堂精品在线观看| 天天操夜夜操av| 亚洲精品一二三区| 日韩精品视频播放| 色综合久久中文字幕| 亚洲第一区av| 日韩一区和二区| 四虎影院在线播放| 在线国产精品播放| a视频在线免费看| 97碰碰碰免费色视频| 成人福利一区二区| 99中文字幕| 亚洲免费成人av在线| 亚洲高清不卡一区| 红桃视频国产精品| 人妻内射一区二区在线视频| 久久se精品一区精品二区| 18禁一区二区三区| 久久久久国产精品厨房| 最新av电影网站| 五月婷婷激情综合| 伊人亚洲综合网| 亚洲大胆人体在线| 成人欧美亚洲| 欧美国产中文字幕| 国产成人精选| 精品婷婷色一区二区三区蜜桃| 青草国产精品| 97视频久久久| 极品少妇一区二区三区精品视频 | 亚洲精品影院| 亚洲人成高清| 日韩精品视频网址| 久久久久久久国产精品影院| 欧美精品一级片| 欧美日韩五月天| 日本免费不卡| 欧美激情精品久久久久久蜜臀| 我爱我色成人网| 国产精品免费观看高清| 久久婷婷蜜乳一本欲蜜臀| 黄色大片中文字幕| 国模一区二区三区白浆| 国产成人无码精品久久二区三| 一区二区三区中文字幕在线观看| 日韩一级片中文字幕| 亚洲成人久久网| 成人影欧美片| 国产精品欧美在线| 国产精品一区2区3区| www.日本在线播放| 国产成人一区二区精品非洲| 日韩女同一区二区三区| 黑人巨大精品欧美一区免费视频 | 婷婷视频在线播放| 美女精品网站| 人妻丰满熟妇aⅴ无码| 亚洲在线观看免费| 国产又粗又猛又爽又黄91| 国产亚洲xxx| 亚洲涩涩在线| 久久久精彩视频| 伊人影院久久| 日本一区二区免费视频| 亚洲欧美在线视频观看| 成人黄色片在线观看| 国产丝袜精品视频| 一个人看的www视频在线免费观看 一个人www视频在线免费观看 | 亚洲欧美日韩精品综合在线观看| 国产精品社区| 野外性满足hd| 狠狠久久五月精品中文字幕| 天天操天天射天天| 亚州精品天堂中文字幕| 韩国精品福利一区二区三区| 每日在线观看av| 成人av免费在线| 日韩免费视频一区二区视频在线观看| 日韩av网站电影| 日本综合字幕| 日韩欧美三级一区二区| 丝袜诱惑制服诱惑色一区在线观看| 国产吞精囗交久久久| 色综合久久综合| 国产免费永久在线观看| 国产精品久久久久久久久久尿| 精品国产一区一区二区三亚瑟| 两根大肉大捧一进一出好爽视频| 99精品久久久久久| www.国产com| 亚洲午夜性刺激影院| 粉嫩av一区二区三区四区五区| 欧美aaa在线观看| 国产成人av在线影院| 日本熟妇成熟毛茸茸| 精品亚洲一区二区| yiren22亚洲综合| 免费成人深夜夜行网站视频| 国产精品99久久久| 久久国产精品系列| 亚洲人成电影网站| 欧美午夜三级| 久久久久久久久网| av在线一区二区三区| 精品免费囯产一区二区三区 | 手机电影在线观看| 精品无人区一区二区三区竹菊| 久久午夜激情| 五月天激情丁香| 精品国产乱码久久久久久1区2区| 免费一二一二在线视频| 四虎一区二区| 国产精品99久久久| 免费污污视频在线观看| 久久精品影视伊人网| 黄色免费大全亚洲| 四季av一区二区| 亚洲一线二线三线视频| 久热av在线| 91成人理论电影| 久久中文欧美| 九九热最新地址| 亚洲欧美日韩中文视频| 久久精品视频5| 国产欧美一区二区精品久导航| 国产精品亚洲lv粉色| 国内精品小视频| 97视频热人人精品免费|