Android(安卓)Settings添加选项
16lz
2021-01-24
在Android中,设置Settings一直都是header+fragment的形式出现。例如设置里面的“时间和日期”项,在settings_hesder.xml中其布局大概是这样:
这是典型的一个设置中的选项,DateTimeSettings.java 继承了Fragment。
所以要添加一个选项,模仿即可。
本例中以添加一个“老人模式”选项为例,为连线到一个APP中,即点击此选项将跳转到相对应的APP。只需这个应用的包名和类名,我们就可以把它嵌入到设置Settings中。
1、首先在settings_hesder.xml中添加选项
其中,com.hll.haolauncher是目标应用的包名。
2、在SettingsActivity.java中添加该选项显示
// Show only these settings for restricted usersprivate int[] SETTINGS_FOR_RESTRICTED = { R.id.wireless_section, R.id.wifi_settings, ...... R.id.aged_mode_setting_new };
3、找到updateHeaderList方法,更新Settings选项的状态,代码大概如下:
private void updateHeaderList(List target) { PDebug.Start("updateHeaderList"); int i = 0; mHeaderIndexMap.clear(); while (i < target.size()) { Header header = target.get(i); int id = (int) header.id; if (id == R.id.bluetooth_settings) { if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) { target.remove(i); } } else if (id == R.id.battery_settings) { if (!mBatteryPresent) { target.remove(i); } }else if(id==R.id.aged_mode_setting) { if (enable){ target.remove(header); } } PDebug.End("updateHeaderList");}
一些选项的显示或隐藏将被写到这里面。 4、设置Settings中的点击事件被写在onHeaderClick方法中,如下:
if (header.id ==R.id.aged_mode_setting_new) { Intent mIntent = new Intent(); mIntent.setClassName("com.hll.haolauncher","com.hll.elauncher.StartActivity"); mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(mIntent); return; }
过程基本上是如此,由于笔者手上的代码不是原生系统的源码,不能把多一些的源码贴上,其中可能与原生代码有些出入,但大同小异,大都数地方还是相同的。
更多相关文章
- Android高手进阶教程(六)之----Android(安卓)中MenuInflater的使
- Android运行显示 Android(安卓)Device Chooser为空
- Android(安卓)for OpenCV 调用 CameraAPI 1 实现人脸检测
- Android(安卓)使用Settings 数据库demo(源码)以及adb 读写settings
- Android(安卓)屏幕适配之屏幕分辨率(创建不同dimen)适配
- N 个 Android(安卓)项目源码
- Android(安卓)Studio安装过程中出现Failed to install Intel HAX
- 如何去写Android(安卓)init.rc
- Android(安卓)ril移植-6410开发板SIM300模块