Android开发之PreferenceActivity .

简介:
 

今天我们来讲PreferenceActivity的使用。我们先来认识一下它,看看它长什么样?呵呵,截图如下:

看到没?这就是PreferenceActivity.看起来蛮眼熟的,在哪见过。呵呵,对,在我们得模拟器“设置”—>“无线和网络”中,就使用了这个。呵呵,下面来跟据一个项目实例,来讲述它的具体应用。

1、  创建Android项目,命名为PreferenceActivity。

2、  在values目录下新建一个array.xml文件,以备下面程序使用,该文件代码如下:

  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <resources>    
  3. <string-array name="entries">    
  4.     <item>test1</item>    
  5.     <item>test2</item>    
  6.     <item>test3</item>    
  7. </string-array>    
  8. <string-array name="entriesvalue">    
  9.     <item>1</item>    
  10.     <item>2</item>    
  11.     <item>3</item>    
  12. </string-array>    
  13. </resources>   

3、  在res目录下新建一个xml目录,在里面新建一个preference.xml文件,该文件的具体内容如下:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7.     <PreferenceCategory android:title="我的位置">  
  8.        <CheckBoxPreference  
  9.           android:key="first"  
  10.           android:title="飞行模式"  
  11.           android:defaultValue="true"  
  12.        />  
  13.        <CheckBoxPreference  
  14.           android:key="second"  
  15.           android:title="Wi-Fi"  
  16.           android:summaryOn="开启"  
  17.           android:summaryOff="关闭"  
  18.           android:defaultValue="true"  
  19.        />  
  20.        <Preference  
  21.           android:key="third"  
  22.           android:title="Wi-Fi设置"  
  23.           android:summary="设置和管理无线接入点"  
  24.        />  
  25.        <ListPreference  
  26.           android:key="ListPreference"  
  27.           android:title="ListPreference"  
  28.           android:summary="ListPreference测试"  
  29.           android:dialogTitle="ListPreference"  
  30.           android:entries="@array/entries"  
  31.           android:entryValues="@array/entriesvalue"  
  32.        />  
  33.        <EditTextPreference    
  34.         android:key="EditTextPreference"    
  35.         android:title="EditTextPreference"    
  36.         android:summary="点击输入"    
  37.         android:dialogTitle="输入设置"    
  38.        />    
  39.        <RingtonePreference    
  40.         android:key="RingtonePreference"    
  41.         android:title="RingtonePreference"    
  42.         android:summary="选择铃声"    
  43.        />   
  44.     </PreferenceCategory>  
  45. </PreferenceScreen>  

4、  以上做好后,我们就只要修改程序中的部分代码了。首先,我们得让它继承自PreferenceActivity的Activity,然后在主程序中调用addPreferencesFromResource(R.xml.preference);就可以了。具体代码如下:

  1. public class PreferenceActivityTest extends PreferenceActivity implements OnSharedPreferenceChangeListener{  
  2.     SharedPreferences prefs;  
  3.     ListPreference listPreference;//声明ListPreference  
  4.     /** Called when the activity is first created. */  
  5.     @Override  
  6.     public void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         addPreferencesFromResource(R.xml.preference);  
  9.         //我们可以通过各个preference的key来得到Preference的view,从而可以用它进行相关操作  
  10.         listPreference=(ListPreference)findPreference("ListPreference");  
  11.         String str=listPreference.getKey();  
  12.         System.out.println(str);  
  13.         /*PreferenceActivity中的设置存储是完全自动的,你不需要再用代码去实现  
  14.          * 设置的存储,PreferenceActivity创建后会自动创建一个配置文件/data/  
  15.          * data/you_package_name/shared_prefs/you_package_name_you_xml_name.xml。  
  16.          * 如果要获取该文件中的值,我们可以通过以下方式取得*/  
  17.         prefs=PreferenceManager.getDefaultSharedPreferences(this);  
  18.         String value=prefs.getString("ListPreference", "xyz");  
  19.         Toast.makeText(this, value, Toast.LENGTH_LONG).show();  
  20.     }  
  21.     @Override  
  22.     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,  
  23.             Preference preference) {  
  24.         // TODO Auto-generated method stub  
  25.         if(preference.getKey().equals("third")){  
  26.             //这里可以操作,实现界面的跳转  
  27.              Intent intent=new Intent();  
  28.              intent.setClass(this, RunActivity.class);  
  29.              startActivity(intent);  
  30.         }  
  31.         return super.onPreferenceTreeClick(preferenceScreen, preference);  
  32.     }  
  33.     //当选择或是输入不同的值时,他们的值会自动保存到sharedpreferences中,当值发生改变的时候会触发  
  34.     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,  
  35.             String key) {  
  36.         // TODO Auto-generated method stub  
  37.           
  38.     }  
  39. }  

5、  到此我们得项目框架就已经搭建好了,单击执行便会得到我们以上的效果。

但是我们得任务还没完,下面的讲解才是本节的重点。学习PreferenceActivity我们需要注意一下几点:

第一, preference下的View是有限的,只有下面几个:

  • CheckBoxPreference:CheckBox选择项,对应的值的ture或flase
  • EditTextPreference:输入编辑框,值为String类型,会弹出对话框供输入。
  • ListPreference: 列表选择,弹出对话框供选择。
  • Preference:只进行文本显示,需要与其他进行组合使用。
  • PreferenceCategory:用于分组。
  • RingtonePreference:系统玲声选择

第二,PreferenceActivity布局中的一些属性。

android:key 唯一标识符。它对应保存的XML保存的配置文件中的节点的 name属性。android:defaultValue 默认值,对应XML中的Value属性的值。

android:title:显示标题(大字体显示)。

 android:summary:副标题(小字体显示)。

android:dialogTitle:弹出对话框的标题

android:entries:列表中显示的值。为一个数组,通读通过资源文件进行设置。

android:entryValues:列表中实际保存的值,与entries对应。

第三,当PreferenceActivity上的View有所更改时,系统会自动将对应的值更新到XML配置文件中,该文件可以在android 的 file explorer 中的 data/data/"yourPageName"/shared_prefs/"yourpageName"_prefenrences.xml中找到。“yourpageName”表示你项目所在的包。

第四,如何响应PreferenceActivity操作。

其实,我们只要重写PreferenceActivity的onPreferenceTreeClick的方法就可以了,通过参数preference来判断是对那一个元素进行的,并根据需要进行操作。

到此,内容已经基本上剖析完全了。呵呵!

相关文章
|
23天前
|
XML 存储 Java
探索安卓开发之旅:从基础到进阶
【9月更文挑战第37天】安卓开发,一个充满无限可能的领域。它不仅关乎技术的深度与广度,更关乎开发者的成长与突破。本文将带你走进安卓开发的世界,从基础知识的学习到进阶技巧的掌握,一起感受编程的魅力与乐趣。
|
17天前
|
缓存 搜索推荐 Android开发
安卓开发中的自定义控件实践
【10月更文挑战第4天】在安卓开发的海洋中,自定义控件是那片璀璨的星辰。它不仅让应用界面设计变得丰富多彩,还提升了用户体验。本文将带你探索自定义控件的核心概念、实现过程以及优化技巧,让你的应用在众多竞争者中脱颖而出。
|
17天前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
69 1
|
20天前
|
Android开发
Android开发表情emoji功能开发
本文介绍了一种在Android应用中实现emoji表情功能的方法,通过将图片与表情字符对应,实现在`TextView`中的正常显示。示例代码展示了如何使用自定义适配器加载emoji表情,并在编辑框中输入或删除表情。项目包含完整的源码结构,可作为开发参考。视频演示和源码详情见文章内链接。
47 4
Android开发表情emoji功能开发
|
18天前
|
Web App开发 安全 程序员
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
多年的互联网寒冬在今年尤为凛冽,坚守安卓开发愈发不易。面对是否转行或学习新技术的迷茫,安卓程序员可从三个方向进阶:1)钻研谷歌新技术,如Kotlin、Flutter、Jetpack等;2)拓展新功能应用,掌握Socket、OpenGL、WebRTC等专业领域技能;3)结合其他行业,如汽车、游戏、安全等,拓宽职业道路。这三个方向各有学习难度和保饭碗指数,助你在安卓开发领域持续成长。
47 1
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
|
1天前
|
Java API Android开发
安卓应用程序开发的新手指南:从零开始构建你的第一个应用
【10月更文挑战第20天】在这个数字技术不断进步的时代,掌握移动应用开发技能无疑打开了一扇通往创新世界的大门。对于初学者来说,了解并学习如何从无到有构建一个安卓应用是至关重要的第一步。本文将为你提供一份详尽的入门指南,帮助你理解安卓开发的基础知识,并通过实际示例引导你完成第一个简单的应用项目。无论你是编程新手还是希望扩展你的技能集,这份指南都将是你宝贵的资源。
14 5
|
16天前
|
缓存 搜索推荐 Android开发
安卓开发中的自定义控件基础与进阶
【10月更文挑战第5天】在Android应用开发中,自定义控件是提升用户体验和界面个性化的重要手段。本文将通过浅显易懂的语言和实例,引导你了解自定义控件的基本概念、创建流程以及高级应用技巧,帮助你在开发过程中更好地掌握自定义控件的使用和优化。
26 10
|
8天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
40 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
20天前
|
JSON API Android开发
探索安卓开发之旅:打造你的第一个天气应用
在这篇文章中,我们将一起踏上一段激动人心的旅程,学习如何在安卓平台上开发一个简单的天气应用。通过实际操作和代码示例,我们将逐步构建一个能够显示当前位置天气情况的应用。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供清晰的指导和启发性的见解,帮助你理解和掌握安卓开发的基础知识。让我们一起探索代码的世界,解锁新技能,实现你的创意和梦想。
|
16天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。