Android Settings源码结构分析与自实现

最近的项目一直是按照PRD与高清,修改系统设置,调整布局、间距、颜色,涉及到一些流程的更改与自定义控件,以及对settings源码结构的研究。在项目相对空闲是,做个整理记录。由于项目依赖系统源码环境,而且在赶项目的时候,只能以最快的速度解决当前的问题,而下面的设计的代码与效果图,都是个人封装的DEMO测试,毕竟不能仅仅只是最求项目的解决过关,学过用过,就应该做点总结,毕竟我觉得很多东西,在赶项目的时候是无法去过多的仔细研究,所以有居多“废代码”,很多地方是值得仔细研究与优化改进的。

首先对原生Settings的布局,及切换跳转,按照我的研究理解,做个流程的分析简介,后面会给出我的改进与实现

1.先从布局简单的说起:

在PreferenceActivity中 可以看到:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(com.android.internal.R.layout.preference_list_content);

系统默认会加载这个布局文件,它是一个左右分屏的,左边是一个ListView,右边是一个android.preference.PreferenceFrameLayout,左边ListView 负责切换,右边显示相应的Fragment。可以到sdk目录下查看该布局文件(sdk\platforms\android-17\data\res\layout\preference_list_content)

2.右边ListView的显示。

代码详见内部类:HeaderAdapter。

//类型一,分类title,无焦点,不可点击
        static final int  HEADER_TYPE_CATEGORY= 0;
        //类型二,正常的可点击的header项
        static final int HEADER_TYPE_NORMAL = 1;
        //带 switch 开关的header项
        static final int HEADER_TYPE_SWITCH = 2;

三种类型,分别对应的布局:

 case HEADER_TYPE_CATEGORY://下划线样式的TextView
                        view = new TextView(getContext(), null,android.R.attr.listSeparatorTextViewStyle);
 case HEADER_TYPE_SWITCH://含有switch 控件的布局
                        view = mInflater.inflate(R.layout.preference_header_switch_item, parent,false);

                    case HEADER_TYPE_NORMAL:
                        view = mInfla
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值