PreferenceActivity定制

article/2025/10/29 22:38:08

android很多设置界面都会使用PreferenceActivity来实现,但那个界面比较丑陋,显示开发总是满足不了要求。

可以自己实现一个,但是那样又会使Activity中的逻辑代码和xml布局文件过于复杂,远远不及PreferenceActivity来的方便快捷。

开发工具:eclipse       运行环境:模拟器 2.2


这个是我模仿360手机安全卫士做的,背景的图片不大一样,懒得去找了,请谅解。


首先看:PreferenceActivity

public class SetupActivity extends PreferenceActivity{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.setup_layout);addPreferencesFromResource(R.xml.setting);}}



setup_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/mainbg2"android:orientation="vertical" ><ListViewandroid:id="@android:id/list"android:layout_width="match_parent"android:layout_height="match_parent"android:cacheColorHint="#00000000"android:scrollbarStyle="outsideOverlay" /></LinearLayout>
注意ListView的id,这个不是自己定义的,有兴趣的可以去看下android源码中PreferenceActivity的布局文件。


setting.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" ><PreferenceCategoryandroid:layout="@layout/sec_pref_category"android:title="设置1" ><Preferenceandroid:key="sec_password"android:layout="@layout/sec_pref_list_item"android:summary="修改"android:title="点击修改"android:widgetLayout="@layout/sec_pref_widget_more" /></PreferenceCategory><PreferenceCategoryandroid:layout="@layout/sec_pref_category"android:title="设置2" ><CheckBoxPreferenceandroid:defaultValue="true"android:key="sec_sms_notify"android:layout="@layout/sec_pref_list_item"android:summaryOff="设置2—1提示:关闭"android:summaryOn="设置-1提示:开启"android:title="设置2-1提示"android:widgetLayout="@layout/sec_pref_widget_checkbox" /><EditTextPreferenceandroid:defaultValue="设置2-2"android:dialogTitle="设置2-2"android:key="sec_sms_notify_text"android:layout="@layout/sec_pref_list_item"android:positiveButtonText="确定"android:summary="点击修改"android:title="设置2-2"android:widgetLayout="@layout/sec_pref_widget_more" /></PreferenceCategory><PreferenceCategoryandroid:layout="@layout/sec_pref_category"android:title="设置3" ><CheckBoxPreferenceandroid:defaultValue="true"android:key="sec_call_notify"android:layout="@layout/sec_pref_list_item"android:summaryOff="设置3-1提醒:关闭"android:summaryOn="设置3-1提醒:开启"android:title="设置3-1提醒"android:widgetLayout="@layout/sec_pref_widget_checkbox" /><EditTextPreferenceandroid:defaultValue="设置3-2"android:dialogTitle="设置3-2"android:key="sec_call_notify_text"android:layout="@layout/sec_pref_list_item"android:positiveButtonText="确定"android:summary="点击修改"android:title="设置3-2"android:widgetLayout="@layout/sec_pref_widget_more" /></PreferenceCategory></PreferenceScreen>
其中的android:widgetLayout="@layout/sec_pref_widget_checkbox"指定checkBox用自定义的checkbox

android:layout="@layout/sec_pref_list_item"指定布局



sec_pref_category.xml:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#ff83a4b4"android:orientation="vertical" ><TextViewandroid:id="@android:id/title"android:layout_width="fill_parent"android:layout_height="fill_parent"android:paddingLeft="5.0dip"android:textColor="#FFFFFF"android:textSize="14.0dip" /></LinearLayout>


sec_pref_widget_checkbox:

<?xml version="1.0" encoding="UTF-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"android:id="@android:id/checkbox"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_marginRight="4.0dip"android:button="@drawable/selector_checkbox"android:clickable="false"android:focusable="false" />

sec_pref_list_item:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="@drawable/selector_list_item"android:gravity="center_vertical"android:minHeight="?android:listPreferredItemHeight"android:paddingRight="?android:scrollbarSize" ><RelativeLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="6.0dip"android:layout_marginLeft="15.0dip"android:layout_marginRight="6.0dip"android:layout_marginTop="6.0dip"android:layout_weight="1.0" ><TextViewandroid:id="@android:id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ellipsize="marquee"android:fadingEdge="horizontal"android:singleLine="true"android:textColor="#FFFFFF"android:textSize="18.0sp" /><TextViewandroid:id="@android:id/summary"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@android:id/title"android:layout_below="@android:id/title"android:maxLines="4"android:textColor="#AAAAAA"android:textSize="14.0sp" /></RelativeLayout><LinearLayoutandroid:id="@android:id/widget_frame"android:layout_width="wrap_content"android:layout_height="fill_parent"android:gravity="center_vertical"android:orientation="vertical" /></LinearLayout>

sec_pref_widget_more:

<?xml version="1.0" encoding="UTF-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_marginBottom="6.0dip"android:layout_marginLeft="10.0dip"android:layout_marginRight="4.0dip"android:layout_marginTop="6.0dip"android:src="@drawable/pref_arrow_right" />


代码下载地址:http://download.csdn.net/detail/luck_apple/3911442


仅供学习使用!





http://chatgpt.dhexx.cn/article/bbPEvLRf.shtml

相关文章

PreferenceActivity、PreferenceFragment使用

目录 目录前言PreferenceActivity preferences_scenario_1xmlPreference Activity演示 PreferenceFragment xml布局文件Preference FragmentPreference Activity管理Fragment 适配 前言 转来转去又回到了Android&#xff0c;闲话少说&#xff0c;这里是参考Android原生的Setti…

Android PreferenceActivity的介绍

转载&#xff1a;http://blog.chinaunix.net/uid-24666775-id-351136.html 在Android中的APIdemos是中经常遇到过继承于PreferenceActivity这个类&#xff0c;紧接着就是addPreferencesFromResource(R.xml.*******);&#xff08;附&#xff1a;这个******就是一个XML文件&#…

Android开发--详解SharedPreference/PreferenceActivity

我们经常看到应用程序的设置页面&#xff0c;一般用到设置页面时&#xff0c;我们会继承自PreferenceActivity&#xff0c;它实现了SharedPreference&#xff0c;并生成相应的XML文件自动保存用户的设置&#xff0c;在设置页面中&#xff0c;每一个列表项都是一个Preference&am…

Android之PreferenceActivity 详解

看到很多书中都没有对PreferenceActivity做介绍&#xff0c;而我正好又在项目中用到&#xff0c;所以就把自己的使用的在这总结一下&#xff0c;也方便日后查找。 PerferenceActivity是什么&#xff0c;看下面的截图&#xff1a; Android系统截图&#xff08;左&#xff09; …

android的PreferenceActivity

前言 这段时间在研究android平台上的开源项目——StandupTimer&#xff0c;这是由jwood所设计的一个较为简单android应用&#xff0c;用于控制会议时间&#xff0c;类似秒表倒计时。 PreferenceActivity PreferenceActivity是android提供的对系统信息和配置进行自动保存的Activ…

用StopWatch统计耗时,比System.currentTimeMillis好用

平时项目中统计耗时都用System.currentTimeMillis&#xff0c;最近看到一个spring-StopWatch统计耗时&#xff0c;其用法简单明了&#xff0c;比传统统计耗时方法好用。 StopWatch 的内部是通过 System.nanoTime() 来计时的&#xff0c;本质和 System.currentTimeMillis() 差别…

并发慎用——System.currentTimeMillis()

好记忆不如烂笔头&#xff0c;能记下点东西&#xff0c;就记下点&#xff0c;有时间拿出来看看&#xff0c;也会发觉不一样的感受. System.currentTimeMillis()是极其常用的基础Java API&#xff0c;广泛地用来获取时间戳或测量代码执行时长等&#xff0c;在我们的印象中应该快…

System.currentTimeMillis()的性能问题以及解决方法

System.currentTimeMillis()是极其常用的基础Java API&#xff0c;广泛地用来获取时间戳或测量代码执行时长等&#xff0c;在我们的印象中应该快如闪电。但实际上在并发调用或者特别频繁调用它的情况下&#xff08;比如一个业务繁忙的接口&#xff0c;或者吞吐量大的需要取得时…

统计代码执行时间时,System.currentTimeMillis()与System.nanoTime()哪个更适合?

目录 1.nanoTime是什么&#xff1f; 2.currentTimeMillis是什么&#xff1f; 3.nanoTime与currentTimeMillis在JDK中阐述 4.nanoTime与currentTimeMillis使用对比 5.深究从OpenJDK源代码、glibc&#xff0c;一直到Linux内核 6.总结 1.nanoTime是什么&#xff1f; ns&…

System.currentTimeMillis的性能如何

一、背景 撸代码时发现System.currentTimeMillis的调用都被封装成了cache类型&#xff0c;代码如下: 那么System.currentTimeMillis真的有这么这么差吗&#xff0c;如果差的话又是什么原因造成的&#xff1f;什么情况下可以直接调用原生方法&#xff0c;什么情况下需要使用缓存…

别再用 System.currentTimeMillis 统计耗时了,太 Low,试试 Spring Boot 源码在用的 StopWatch吧,够优雅

大家好&#xff0c;我是二哥呀&#xff01; 昨天&#xff0c;一位球友问我能不能给他解释一下 SpringBootApplication 注解是什么意思&#xff0c;还有 Spring Boot 的运行原理&#xff0c;于是我就带着他扒拉了一下这个注解的源码&#xff0c;还有 SpringApplication 类的 ru…

System.currentTimeMillis的性能,真有如此不堪吗?

# 疑惑&#xff0c;System.currentTimeMillis真有性能问题&#xff1f; 最近我在研究一款中间件的源代码时&#xff0c;发现它获取当前时间不是通过System.currentTimeMillis&#xff0c;而是通过自定义的System.currentTimeMillis的缓存类&#xff08;见下方&#xff09;&…

疑惑,System.currentTimeMillis真有性能问题?

点击关注公众号&#xff0c;Java干货及时送达 System.currentTimeMillis的性能真有如此不堪吗&#xff1f; 最近我在研究一款中间件的源代码时&#xff0c;发现它获取当前时间不是通过System.currentTimeMillis&#xff0c;而是通过自定义的System.currentTimeMillis的缓存类&a…

高并发下System.currentTimeMillis()性能问题及优化方案

文章目录 背景System.currentTimeMillis()性能测试单线程测试多线程测试 原因优化优化代码单线程测试多线程测试 参考 背景 最近在看asyncTool源码发现了System.currentTimeMillis存在卡顿问题&#xff0c;所以就详细研究了下。具体如何呢&#xff1f;我们来看看 System.curr…

currentTimeMillis()方法

currentTimeMillis()方法返回一个long类型的值&#xff0c;该值表示的是当前时间与1970年1月1日0时0分0秒之间的时间差&#xff0c;单位是毫秒&#xff0c;习惯上被称为时间戳 源码&#xff1a; 时间戳可以用来计算循环操作时所需要的时间&#xff1a; /*** 向goods表中插入…

Java获取当前时区时间LocalDateTime与System.currentTimeMillis

Java获取当前时区时间 System.currentTimeMillisLocalDateTime最终结果 全球根据纬度不同&#xff0c;划分不同的时区。对于此时此刻&#xff0c;大家同处同一个时间点&#xff0c;但是&#xff0c;每个时区的时间表示是不同的。Java可以使用 System.currentTimeMillis和 Loc…

关于Java currentTimeMillis方法简述

刚刚接触JAVA时&#xff0c;为了便于记录某个方法块的执行时间&#xff0c;通常都会在代码块的执行前和执行后各标记一个时间&#xff0c;取两个时间差。 但是初学者一般只会选择用LocalDateTime来标记&#xff0c;然后用Duration.between来做差值。当然&#xff0c;Duration可…

System.currentTimeMillis()计算方式与时间的单位转换

一、时间的单位转换 1秒1000毫秒(ms) 1毫秒1&#xff0f;1,000秒(s) 1秒1,000,000 微秒(μs) 1微秒1&#xff0f;1,000,000秒(s) 1秒1,000,000,000 纳秒(ns) 1纳秒1&#xff0f;1,000,000,000秒(s) 1秒1,000,000,000,000 皮秒(ps) 1皮秒1&#xff0f;1,000,000,000,000秒(s) …

Java currentTimeMillis()方法介绍

一、官方文档 参考自Java SE 8官方文档&#xff1a; 方法功能&#xff1a;返回从1970年1月1日午夜&#xff08;UTC&#xff09;开始到当前时间的毫秒值. 其中&#xff0c;需要特别说明的地方 1.午夜(midnight)指的时间是 0时0分0秒&#xff0c;UTC表示该时间是0时区的时间…

Android中Intent和IntentFilter进行通信

文章目录 Intent启动不同组件的方法ActivityServiceBroadcastReceiver Data&#xff0c;Type属性与intent-filter配置指定Action调用系统的Activity启动Activity的标准Action常量以及对应的字符串标准的Category常量以及对应的字符串 实例一查看并获取联系人电话MainActivity代…