www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] 一個完整的Android應(yīng)用程序都應(yīng)該提供選項(或者叫偏好設(shè)置等等)讓用戶對APP的表現(xiàn)形式能夠進行設(shè)置,比如說是否加入用戶體驗計劃,或者是否自動升級、定時提醒、開啟自啟動

 一個完整的Android應(yīng)用程序都應(yīng)該提供選項(或者叫偏好設(shè)置等等)讓用戶對APP的表現(xiàn)形式能夠進行設(shè)置,比如說是否加入用戶體驗計劃,或者是否自動升級、定時提醒、開啟自啟動、后臺運行等等。提供一個好的設(shè)置項,會大大提升APP的用戶體驗。為了完成這樣的功能,你不必從頭開始寫Activity或者Fragment,因為Android已經(jīng)提供了實現(xiàn)這個功能的API,并且會自動將用戶設(shè)置以鍵值對的形式存入SharedPreference(Android的四大存儲方式之一)中。在3.0以前的系統(tǒng),使用PreferenceActivity,這個類在api level 11(即Android 3.0)以后的api中丟棄,改用PreferenceFragment。兩者的使用方式及函數(shù)調(diào)用大同小異,可以根據(jù)app的目標(biāo)系統(tǒng)版本自己去衡量。本文主要說明兩個問題,層次較淺,重在總結(jié)和說明基本用法,懂的直接飄過吧。

1. 為APP添加設(shè)置選項

Android平臺上,為應(yīng)用添加設(shè)置選項是個非常容易的事兒。這里以PreferenceFragment為例進行演示,畢竟時代向前發(fā)展嘛。PreferenceFragment的父類是Fragment類,而Fragment對象必須嵌入到Activity中顯示出來。由此可以確定思路,為設(shè)置新建一個activity,然后將PreferenceFragment子類對象嵌入到其中,基本上就實現(xiàn)了選項設(shè)置,因為數(shù)據(jù)的保存與更新自動進行。

思路非常簡單,還是貼下主要代碼,順便整理下思路,幫助理解。

首先為設(shè)置選項設(shè)置新建一個Preference配置文件,跟layout文件也是XML文件格式,層次化清晰,注意它存儲在res/xml下,而不是res/layout。系統(tǒng)也提供了一些比較常用了設(shè)置選項,比如PreferenceScreen,PreferenceCategory,CheckBoxPreference,EditTextPreferece,ListPreference等,如果需要你也可以很方便的實現(xiàn)自定義的Preference,下文將會介紹實現(xiàn)方法?,F(xiàn)在新建一個Preference,命名settings.xml(更傳統(tǒng)的命名為preference.xml)。

復(fù)制代碼

1

2

3 xmlns:preference="http://schemas.android.com/apk/res/com.test.mytest"

4 android:title="設(shè)置" >

5

6

7 android:title="關(guān)于" >

8

9

10

11

12 preference:tipstring=">"

13 preference:titlestring="自定義測試" >

14

15 android:action="android.intent.action.VIEW"

16 android:data="http://www.baidu.com" />

17

18

19

20

21

22

23

24

25

26

27 android:key="setting_test"

28 android:title="測試一下" />

29

30

31

復(fù)制代碼

然后為設(shè)置選項新建一個Acitivity,因為此處PreferenceFragment子類寫的非常簡單,順便以內(nèi)部類實現(xiàn)了。

復(fù)制代碼

1 public class SettingsActivity extends Activity {

2

3 @Override

4 public void onCreate(Bundle savedInstanceState) {

5 super.onCreate(savedInstanceState);

6 setContentView(R.layout.settings);

7 setTitle("選項設(shè)置");

8 getFragmentManager().beginTransaction().replace(R.id.settings_content,

9 new PrefsFragment()).commit();

10 }

11

12 public static class PrefsFragment extends PreferenceFragment{

13

14 @Override

15 public void onCreate(Bundle savedInstanceState) {

16 super.onCreate(savedInstanceState);

17 addPreferencesFromResource(R.xml.settings);

18 }

19

20 }

21

22 }

復(fù)制代碼

最后就差用戶點擊你設(shè)計好的設(shè)置選項了,到了這里你應(yīng)該猜到了,打開設(shè)置選項不過只是打開一個Intent而已。基本流程就到這里,但是一個需要獲得大用戶量應(yīng)用的設(shè)置要比這個復(fù)雜得多,你可能還需要根據(jù)用戶的設(shè)置,立即對應(yīng)用的表現(xiàn)做出調(diào)整,可能要實現(xiàn)onPreferenceTreeClick(PreferenceScreen preferenceScreen,Preference prefence)。正如前文所述,剛接觸Preference,這里僅僅總結(jié)基本用法。

2. 在設(shè)置選項中使用自定義的Preference

Preference類直接繼承于Object類。在上文的settings.xml中,定義好幾個Preference,Preference只提供簡單的文本顯示,而它的的子類CheckBoxPreference,SwitchPreference,EditTextPreference等則提供了較為復(fù)雜的UI展示,并可以保存用戶的設(shè)置數(shù)據(jù),一般來說,這些子類Preference對于應(yīng)用程序更加重要。關(guān)于如果使用這些子類對象,其實很簡單,他們可以像UI控件在Layout中的用法類似的應(yīng)用在Preference定義的xml文件(上文定義的settings.xml)中,基本上使用了eclipse代碼提示功能就可以使用,這些用法基礎(chǔ)但不是本文的說明重點。下面旨在介紹如何定義自己的Preference,先上圖看效果。

圖一 自定義Preference展示

圖一展示了Preference與自定義Preference樣式差別,你或許注意到第二項”自定義測試“與其他的Preference只有一個“>“符號的差別,其實這里包含了自定義一個Preference的完整步驟。說道這里,順便說下,其實自定義Preference與自定義控件的方法和套路幾乎一致。還是總結(jié)下基本步驟。

1) 定義屬性值 attr.xml

復(fù)制代碼

1

[!--empirenews.page--]

2

3

4

5

6

7

復(fù)制代碼

2) 設(shè)計自定義Preference的布局 preferencewithtip.xml

1

2

3 android:layout_width="match_parent"

4 android:layout_height="match_parent"

5 android:orientation="horizontal"

6 android:paddingLeft="8dp"

7 android:paddingRight="15dp"

8 android:paddingTop="20dp"

9 android:paddingBottom="20dp">

10

11 android:id="@+id/prefs_title"

12 android:layout_width="0dp"

13 android:layout_height="wrap_content"

14 android:layout_gravity="left"

15 android:gravity="left|center_vertical"

16 android:textSize="18sp"

17 android:layout_weight="1"/>

18

19 android:id="@+id/prefs_tip"

20 android:layout_width="0dp"

21 android:layout_height="wrap_content"

22 android:layout_gravity="right"

23 android:gravity="right|center_vertical"

24 android:textSize="18sp"

25 android:layout_weight="1"/>

26

27

3) 繼承Preference,實現(xiàn)自己的Preference類 PreferenceWithTip

1 public class PreferenceWithTip extends Preference {

2 private static final String TAG = "PreferenceWithTip";

3 String pTitle = null;

4 String tipstring = null;

5

6 @SuppressLint("Recycle")

7 public PreferenceWithTip(Context context, AttributeSet attrs, int defStyle) {

8 super(context, attrs, defStyle);

9 // 獲取自定義參數(shù)

10 Log.i(TAG,"PreferenceWithTip invoked");

11 TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.PreferenceWithTip);

12 tipstring = ta.getString(R.styleable.PreferenceWithTip_tipstring);

13 pTitle = ta.getString(R.styleable.PreferenceWithTip_titlestring);

14 ta.recycle();

15 }

16

17 public PreferenceWithTip(Context context, AttributeSet attrs) {

18 this(context, attrs, 0);

19 }

20

21 @Override

22 protected void onBindView(View view) {

23 super.onBindView(view);

24 TextView pTitleView = (TextView)view.findViewById(R.id.prefs_title);

25 pTitleView.setText(pTitle);

26 TextView pTipView = (TextView)view.findViewById(R.id.prefs_tip);

27 pTipView.setText(tipstring);

28 }

29

30 @Override

31 protected View onCreateView(ViewGroup parent) {

32 return LayoutInflater.from(getContext()).inflate(R.layout.preferencewithtip,

33 parent, false);

34 }

35

36 //如需更新、保存數(shù)據(jù)則需要繼續(xù)編寫

37

38 }

4) 調(diào)用。調(diào)用代碼在文章的開頭部分已經(jīng)貼出,主要代碼如下,preference是自定義的包名。

復(fù)制代碼

1

2 preference:tipstring=">"

3 preference:titlestring="自定義測試" >

4

5 android:action="android.intent.action.VIEW"

6 android:data="http://www.baidu.com" />

7

復(fù)制代碼

總結(jié)一下Preference的使用還是比較簡單的,自定義Preference也比較方便。但是要設(shè)計出一個漂亮的、人性化的Preference還是不那么容易,但這些都是提高用戶體驗的途徑,值得進一步挖掘。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

其他電腦(比如安卓手機/平板電腦)的屏幕壞了,你可能想在安排維修之前緊急訪問一些東西。你可以使用android的USB OTG功能(是的,幾乎每個android都支持這個功能,你可以將鼠標(biāo)和鍵盤連接到它)。

關(guān)鍵字: USB 鼠標(biāo) Android 樹莓派

Google 宣布與中國 AR 科技公司 XREAL 達成深度戰(zhàn)略合作,聯(lián)合推出全球首款專為 Android XR 平臺打造的旗艦級 AR 眼鏡 Project Aura。

關(guān)鍵字: Google XREAL Android XR眼鏡 AR

繼停止維護AOSP開源項目后,谷歌母公司Alphabet近日被曝在其安卓系統(tǒng)(Android)、Pixel手機以及Chrome瀏覽器等部門裁員數(shù)百人。這一舉措引發(fā)了業(yè)界的廣泛關(guān)注,也引發(fā)了對谷歌未來業(yè)務(wù)布局的諸多猜測。

關(guān)鍵字: 谷歌 AOSP Android 裁員

在本教程中,我們將使用Capacitor 6、Angular和TypeScript構(gòu)建一個Android應(yīng)用程序,該應(yīng)用程序通過串行端口連接到BleuIO USB加密狗。該應(yīng)用程序允許用戶直接從Android設(shè)備發(fā)送和接...

關(guān)鍵字: Android USB 電容器 BLE設(shè)備

早前媒體報道谷歌將停止維護Android開源項目(AOSP),將Android開發(fā)全面轉(zhuǎn)向內(nèi)部閉源分支,目前這一消息已經(jīng)得到谷歌官方確認。

關(guān)鍵字: 谷歌 Android 開源

本項目演示了如何通過OTG (on - go) USB在Android設(shè)備上使用BleuIO USB加密狗作為串行端口。使用電容器6和@adeunis/電容器-串行插件,我們建立串行連接,發(fā)送AT命令,并實時讀取響應(yīng)。該...

關(guān)鍵字: 電容器 Android 傳感器 微控制器 嵌入式系統(tǒng)

在Linux操作系統(tǒng)中,Android Debug Bridge(ADB)是一個功能強大的命令行工具,它允許開發(fā)者在計算機和Android設(shè)備之間建立通信,從而進行調(diào)試、管理、安裝應(yīng)用等操作。本文將詳細介紹在Linux系...

關(guān)鍵字: Linux系統(tǒng) Android Debug ADB

隨著Android操作系統(tǒng)的進步,智能手機的使用日益增加。隨后,有報道稱,惡意個人和黑客利用 Android 提供的漏洞來訪問用戶珍視的數(shù)據(jù)。例如,此類威脅包括 2021 年針對 Android 設(shè)備發(fā)布的 Flubot...

關(guān)鍵字: Android 惡意軟件

在本教程中,我們將構(gòu)建超出電子領(lǐng)域的東西。作為一名電子工程師,我們大多數(shù)人都想為我們的物聯(lián)網(wǎng)應(yīng)用程序構(gòu)建一些用戶界面,在大多數(shù)情況下,Android應(yīng)用程序?qū)⑹怯脩襞c我們的物聯(lián)網(wǎng)設(shè)備交互的正確選擇。所以,如果你想為你的物...

關(guān)鍵字: 物聯(lián)網(wǎng) Android
關(guān)閉