当前位置: 首页 > news >正文

自己如何免费做网站商业网站建设软件

自己如何免费做网站,商业网站建设软件,wordpress gif插件,指定网站建设前期规划方案简介 Settings应用中#xff0c;提供多类设置菜单入口#xff0c;每个菜单内又有各模块功能的实现。 那么各个模块基于Settings 基础的界面Fragment去实现UI#xff0c;层层按不同业务进行封装继承实现子类#xff1a; DashboardFragmentSettingsPreferenceFragment 功…简介 Settings应用中提供多类设置菜单入口每个菜单内又有各模块功能的实现。 那么各个模块基于Settings 基础的界面Fragment去实现UI层层按不同业务进行封装继承实现子类 DashboardFragmentSettingsPreferenceFragment 功能设置页中的菜单又是通过Controller去实现业务并进行UI动态更新控制。 代码 基于 Android U 平台的实现进行介绍。 公用基类 DashboardFragment packages/apps/Settings/src/com/android/settings/dashboard/DashboardFragment.java package com.android.settings.dashboard;/*** Base fragment for dashboard style UI containing a list of static and dynamic setting items.*/ public abstract class DashboardFragment extends SettingsPreferenceFragmentimplements CategoryListener, Indexable, PreferenceGroup.OnExpandButtonClickListener,BasePreferenceController.UiBlockListener {public static final String CATEGORY category;private static final String TAG DashboardFragment;private static final long TIMEOUT_MILLIS 50L;/*** Get a list of {link AbstractPreferenceController} for this fragment.*/protected ListAbstractPreferenceController createPreferenceControllers(Context context) {return null;} 模块案例 继承关系自上而下底层是父类除了MobileNetwork其他都是抽象类直到Fragment MobileNetworkSettings --- 移动网络设置AbstractMobileNetworkSettingsRestrictedDashboardFragmentDashboardFragmentSettingsPreferenceFragmentInstrumentedPreferenceFragment -- /com/android/settings/core/ObservablePreferenceFragment -- /frameworks/base/packages/SettingsLibPreferenceFragmentCompat -- classes.jar/androidx.preferenceFragment AbstractMobileNetworkSettings 是一个抽象类用于提供移动网络设置相关的基本功能和行为。 RestrictedDashboardFragment 是在DashboardFragment的基础上添加了一些限制或额外的安全措施以限制用户对某些设置或操作的访问或更改。可能会对一些敏感的设置进行限制例如网络设置、安全设置等。也可能会对某些功能进行权限控制只允许特定用户访问。 DashboardFragment 是基础的仪表盘样式 UI Fragment用于显示静态和动态的设置项列表。通常不会加入对设置的限制而是专注于提供用户友好的设置界面和功能。可能包含一些基本的设置项处理和展示逻辑以便用户能够轻松地进行配置和操作。 MobileNetworkSettings 移动网络设置界面逻辑 packages/apps/Settings/src/com/android/settings/network/telephony/MobileNetworkSettings.java 界面布局在mobile_network_settings.xml MobileNetworkSettings API APIFunctiononPreferenceTreeClick定义子功能pref点击事件overridecreatePreferenceControllers创建子功能pref的控制器overrideonAttach生命周期use 各类 ControlleroverrideonSubscriptionDetailChanged响应注册状态变化进行的操作 package com.android.settings.network.telephony;SearchIndexable(forTarget SearchIndexable.ALL ~SearchIndexable.ARC) public class MobileNetworkSettings extends AbstractMobileNetworkSettings implementsMobileNetworkRepository.MobileNetworkCallback {private static final String LOG_TAG NetworkSettings;//处理子菜单点击事件/*** Invoked on each preference click in this hierarchy, overrides* PreferenceActivitys implementation. Used to make sure we track the* preference click events.*/Overridepublic boolean onPreferenceTreeClick(Preference preference) {if (super.onPreferenceTreeClick(preference)) {return true;}final String key preference.getKey();if (TextUtils.equals(key, BUTTON_CDMA_SYSTEM_SELECT_KEY)|| TextUtils.equals(key, BUTTON_CDMA_SUBSCRIPTION_KEY)) {if (mTelephonyManager.getEmergencyCallbackMode()) {startActivityForResult(new Intent(TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null),REQUEST_CODE_EXIT_ECM);mClickedPrefKey key;}return true;}//【客制化】可通过else if 定制其他keyt的点击行为return false;}//创建各子菜单/功能选项的ControllerOverrideprotected ListAbstractPreferenceController createPreferenceControllers(Context context) {if (!SubscriptionUtil.isSimHardwareVisible(context)) {finish();return Arrays.asList();}if (getArguments() null) {Intent intent getIntent();if (intent ! null) {mSubId intent.getIntExtra(Settings.EXTRA_SUB_ID,MobileNetworkUtils.getSearchableSubscriptionId(context));Log.d(LOG_TAG, display subId from intent: mSubId);} else {Log.d(LOG_TAG, intent is null, can not get subId mSubId from intent.);}} else {mSubId getArguments().getInt(Settings.EXTRA_SUB_ID,MobileNetworkUtils.getSearchableSubscriptionId(context));Log.d(LOG_TAG, display subId from getArguments(): mSubId);}mMobileNetworkRepository MobileNetworkRepository.getInstance(context);mExecutor.execute(() - {mSubscriptionInfoEntity mMobileNetworkRepository.getSubInfoById(String.valueOf(mSubId));mMobileNetworkInfoEntity mMobileNetworkRepository.queryMobileNetworkInfoBySubId(String.valueOf(mSubId));});return Arrays.asList(new DataUsageSummaryPreferenceController(getActivity(), getSettingsLifecycle(),this, mSubId),new RoamingPreferenceController(context, KEY_ROAMING_PREF, getSettingsLifecycle(),this, mSubId),new CallsDefaultSubscriptionController(context, KEY_CALLS_PREF,getSettingsLifecycle(), this),new SmsDefaultSubscriptionController(context, KEY_SMS_PREF, getSettingsLifecycle(),this),new MobileDataPreferenceController(context, KEY_MOBILE_DATA_PREF,getSettingsLifecycle(), this, mSubId),new ConvertToEsimPreferenceController(context, KEY_CONVERT_TO_ESIM_PREF,getSettingsLifecycle(), this, mSubId));}Overridepublic void onAttach(Context context) {super.onAttach(context);if (mSubId SubscriptionManager.INVALID_SUBSCRIPTION_ID) {Log.d(LOG_TAG, Invalid subId, get the default subscription to show.);SubscriptionInfo info SubscriptionUtil.getSubscriptionOrDefault(context, mSubId);if (info null) {Log.d(LOG_TAG, Invalid subId request mSubId);return;}mSubId info.getSubscriptionId();Log.d(LOG_TAG, Show NetworkSettings fragment for subId mSubId);}Intent intent getIntent();if (intent ! null) {int updateSubscriptionIndex intent.getIntExtra(Settings.EXTRA_SUB_ID,SubscriptionManager.INVALID_SUBSCRIPTION_ID);if (updateSubscriptionIndex ! SubscriptionManager.INVALID_SUBSCRIPTION_ID) {int oldSubId mSubId;mSubId updateSubscriptionIndex;// If the subscription has changed or the new intent does not contain the opt in// action,// remove the old discovery dialog. If the activity is being recreated, we will see// onCreate - onNewIntent, so the dialog will first be recreated for the old// subscription// and then removed.if (updateSubscriptionIndex ! oldSubId|| !MobileNetworkActivity.doesIntentContainOptInAction(intent)) {removeContactDiscoveryDialog(oldSubId);}// evaluate showing the new discovery dialog if this intent contains an action to// show the// opt-in.if (MobileNetworkActivity.doesIntentContainOptInAction(intent)) {showContactDiscoveryDialog();}}}final DataUsageSummaryPreferenceController dataUsageSummaryPreferenceController use(DataUsageSummaryPreferenceController.class);if (dataUsageSummaryPreferenceController ! null) {dataUsageSummaryPreferenceController.init(mSubId);}use(MobileNetworkSwitchController.class).init(mSubId);use(CarrierSettingsVersionPreferenceController.class).init(mSubId);use(BillingCyclePreferenceController.class).init(mSubId);use(MmsMessagePreferenceController.class).init(mSubId);use(AutoDataSwitchPreferenceController.class).init(mSubId);use(DisabledSubscriptionController.class).init(mSubId);use(DeleteSimProfilePreferenceController.class).init(mSubId, this,REQUEST_CODE_DELETE_SUBSCRIPTION);use(DisableSimFooterPreferenceController.class).init(mSubId);use(NrDisabledInDsdsFooterPreferenceController.class).init(mSubId);final MobileDataPreferenceController mobileDataPreferenceController use(MobileDataPreferenceController.class);if (mobileDataPreferenceController ! null) {mobileDataPreferenceController.init(getFragmentManager(), mSubId,mSubscriptionInfoEntity, mMobileNetworkInfoEntity);mobileDataPreferenceController.setWifiPickerTrackerHelper(new WifiPickerTrackerHelper(getSettingsLifecycle(), context,null /* WifiPickerTrackerCallback */));}final RoamingPreferenceController roamingPreferenceController use(RoamingPreferenceController.class);if (roamingPreferenceController ! null) {roamingPreferenceController.init(getFragmentManager(), mSubId,mMobileNetworkInfoEntity);}use(ApnPreferenceController.class).init(mSubId);use(CarrierPreferenceController.class).init(mSubId);use(DataUsagePreferenceController.class).init(mSubId);use(PreferredNetworkModePreferenceController.class).init(mSubId);use(EnabledNetworkModePreferenceController.class).init(mSubId);use(DataServiceSetupPreferenceController.class).init(mSubId);use(Enable2gPreferenceController.class).init(mSubId);use(CarrierWifiTogglePreferenceController.class).init(getLifecycle(), mSubId);final WifiCallingPreferenceController wifiCallingPreferenceController use(WifiCallingPreferenceController.class).init(mSubId);final OpenNetworkSelectPagePreferenceController openNetworkSelectPagePreferenceController use(OpenNetworkSelectPagePreferenceController.class).init(mSubId);final AutoSelectPreferenceController autoSelectPreferenceController use(AutoSelectPreferenceController.class).init(getLifecycle(), mSubId).addListener(openNetworkSelectPagePreferenceController);use(NetworkPreferenceCategoryController.class).init(mSubId).setChildren(Arrays.asList(autoSelectPreferenceController));mCdmaSystemSelectPreferenceController use(CdmaSystemSelectPreferenceController.class);mCdmaSystemSelectPreferenceController.init(getPreferenceManager(), mSubId);mCdmaSubscriptionPreferenceController use(CdmaSubscriptionPreferenceController.class);mCdmaSubscriptionPreferenceController.init(getPreferenceManager(), mSubId);final VideoCallingPreferenceController videoCallingPreferenceController use(VideoCallingPreferenceController.class).init(mSubId);use(CallingPreferenceCategoryController.class).setChildren(Arrays.asList(wifiCallingPreferenceController, videoCallingPreferenceController));use(Enhanced4gLtePreferenceController.class).init(mSubId).addListener(videoCallingPreferenceController);use(Enhanced4gCallingPreferenceController.class).init(mSubId).addListener(videoCallingPreferenceController);use(Enhanced4gAdvancedCallingPreferenceController.class).init(mSubId).addListener(videoCallingPreferenceController);use(ContactDiscoveryPreferenceController.class).init(getParentFragmentManager(), mSubId);use(NrAdvancedCallingPreferenceController.class).init(mSubId);use(TransferEsimPreferenceController.class).init(mSubId, mSubscriptionInfoEntity);final ConvertToEsimPreferenceController convertToEsimPreferenceController use(ConvertToEsimPreferenceController.class);if (convertToEsimPreferenceController ! null) {convertToEsimPreferenceController.init(mSubId, mSubscriptionInfoEntity);}ListAbstractSubscriptionPreferenceController subscriptionPreferenceControllers useAll(AbstractSubscriptionPreferenceController.class);for (AbstractSubscriptionPreferenceController controller :subscriptionPreferenceControllers) {controller.init(mSubId);}}private void onSubscriptionDetailChanged() {if (mSubscriptionInfoEntity ! null) {/*** Update the title when SIM stats got changed*/final ConsumerActivity renameTitle activity - {if (activity ! null !activity.isFinishing()) {if (activity instanceof SettingsActivity) {((SettingsActivity) activity).setTitle(mSubscriptionInfoEntity.uniqueName);}}};ThreadUtils.postOnMainThread(() - {renameTitle.accept(getActivity());redrawPreferenceControllers();});}}//界面布局在mobile_network_settings.xmlOverrideprotected int getPreferenceScreenResId() {return R.xml.mobile_network_settings;}} mobile_network_settings 布局 packages/apps/Settings/res/xml/mobile_network_settings.xml MobileNetworkSwitchController SIM卡移动网络总开关逻辑use_sim_switch 界面的资源keymobile_network_use_sim_on 开关名称title 以下仅展示部分功能选项/菜单 PreferenceScreenxmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:settingshttp://schemas.android.com/apk/res-autoandroid:keymobile_network_pref_screencom.android.settings.widget.SettingsMainSwitchPreferenceandroid:keyuse_sim_switchandroid:titlestring/mobile_network_use_sim_onsettings:controllercom.android.settings.network.telephony.MobileNetworkSwitchController/PreferenceCategoryandroid:keyenabled_state_containerandroid:titlestring/summary_placeholdersettings:controllercom.android.settings.network.telephony.DisabledSubscriptionControllerandroid:layoutlayout/preference_category_no_label!--智能数据切换开关--SwitchPreferenceandroid:keyauto_data_switchandroid:titlestring/auto_data_switch_titleandroid:summarystring/auto_data_switch_summarysettings:controllercom.android.settings.network.telephony.AutoDataSwitchPreferenceController/!--数据漫游开关--com.android.settingslib.RestrictedSwitchPreferenceandroid:keybutton_roaming_keyandroid:titlestring/roamingandroid:persistentfalseandroid:summaryOnstring/roaming_enableandroid:summaryOffstring/roaming_disablesettings:userRestrictionno_data_roamingsettings:controllercom.android.settings.network.telephony.RoamingPreferenceController/!--数据流量菜单入口--Preferenceandroid:keydata_usage_summaryandroid:titlestring/mobile_data_usage_titlesettings:controllercom.android.settings.network.telephony.DataUsagePreferenceController/!--网络模式列表选择--ListPreferenceandroid:keyenabled_networks_keyandroid:titlestring/preferred_network_mode_titleandroid:summarystring/preferred_network_mode_summaryandroid:entriesarray/enabled_networks_choicesandroid:entryValuesarray/enabled_networks_valuesandroid:dialogTitlestring/preferred_network_mode_dialogtitlesettings:controllercom.android.settings.network.telephony.EnabledNetworkModePreferenceController/!--Network目录--PreferenceCategoryandroid:keynetwork_operators_category_keyandroid:titlestring/network_operator_categorysettings:controllercom.android.settings.network.telephony.NetworkPreferenceCategoryController!--自动选网开关--SwitchPreferenceandroid:keyauto_select_keyandroid:titlestring/select_automaticallysettings:controllercom.android.settings.network.telephony.gsm.AutoSelectPreferenceController/!--如果上述自动选网关闭那么此手动选网菜单可跳转到网络列表页--Preferenceandroid:keychoose_network_keyandroid:titlestring/choose_network_titlesettings:controllercom.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenceController//PreferenceCategory!--APN设置入口--!--We want separate APN setting from reset of settings because we want user to change it with caution--com.android.settingslib.RestrictedPreferenceandroid:keytelephony_apn_keyandroid:persistentfalseandroid:titlestring/mobile_network_apn_titlesettings:allowDividerAbovetruesettings:keywordsstring/keywords_access_point_namessettings:controllercom.android.settings.network.telephony.ApnPreferenceController//PreferenceCategory/PreferenceScreen
http://www.w-s-a.com/news/26799/

相关文章:

  • 滨州网站开发公司中立建设集团有限公司网站
  • 泰安建设厅网站做网站为什么要建站点
  • 有什么好的手机推荐网站创建网站需要哪些工作
  • 网站能给企业带来什么上饶市网站建设公司
  • 学做网站卖东西去哪学南宁网站建设gxjzdrj
  • 欧美网站建设案例网站开发 男生
  • 网站正在开发中做电子元器件的网站
  • 做网站搭建的公司中国建设银行官网站u盾证书
  • 大连哪里有手机自适应网站建设公司网站介绍模板 html
  • 佛山模板建站宣传片制作公司电话
  • 文字网站居中能自己做网站接业务吗
  • 免备案自助建站网站广州珈瑶公司是哪一年注册的
  • ps做网站界面wordpress为图片添加圆角
  • seo优化推广业务员招聘seo顾问服务福建
  • 成都私人网站建设seo网站推广方案策划书
  • 广州网站建设工作室wordpress log
  • 网站后台添加wordpress h1标签优化
  • 自己做网站都需要什么高密 网站建设
  • 网站语言选择郑州本地做团购的网站
  • dw网页设计模板图片谷歌wordpress优化
  • 网站seo优化要怎么做礼品公司怎么做网站
  • 做网页网站需要钱吗提供常州微信网站建设
  • 网站建设文化效果广东网站建设哪家有
  • 毕业设计做网站怎样做特别一点在线网页制作软件
  • html网站代码上海这边敲墙拆旧做啥网站的比较多
  • 微网站怎么用在线crm管理系统
  • 中国城乡建设部人力网站首页如何利用某个软件做一个网站
  • 个人承接网站建设wordpress editor
  • 建站主机 wordpress专业的菏泽网站建设公司
  • 网站响应时间 标准网站建设色调的