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

廊坊优化网站排名微网站建设包含哪些内容

廊坊优化网站排名,微网站建设包含哪些内容,株洲网红,网页设计课SystemUI导航栏 1、系统中参数项1.1 相关开关属性2.2 属性设置代码 2、设置中设置“三按钮”导航更新流程2.1 属性资源覆盖叠加2.2 SystemUI导航栏接收改变广播2.3 SystemUI导航栏布局更新2.4 时序图 android13-release 1、系统中参数项 1.1 相关开关属性 设置-系统-… SystemUI导航栏 1、系统中参数项1.1 相关开关属性2.2 属性设置代码 2、设置中设置“三按钮”导航更新流程2.1 属性资源覆盖叠加2.2 SystemUI导航栏接收改变广播2.3 SystemUI导航栏布局更新2.4 时序图 android13-release 1、系统中参数项 1.1 相关开关属性 设置-系统-手势-系统导航-“三按钮”导航 设置中“三按钮”导航 packages/apps/Settings/src/com/android/settings/gestures/SystemNavigationGestureSettings.java packages/apps/Settings/res/values-zh-rCN/strings.xml string namelegacy_navigation_title msgid7877402855994423727“三按钮”导航/string 默认导航栏模式config_navBarInteractionMode frameworks/base/core/res/res/values/config.xml !-- Controls the navigation bar interaction mode:0: 3 button mode (back, home, overview buttons)1: 2 button mode (back, home buttons swipe up for overview)2: gestures only for back, home and overview --integer nameconfig_navBarInteractionMode0/integer!-- Whether a software navigation bar should be shown. NOTE: in the future this may beautodetected from the Configuration. --bool nameconfig_showNavigationBarfalse/boolSettings数据库中adb shell settings get Secure navigation_mode frameworks/base/core/java/android/provider/Settings.java /*** Navigation bar mode.* 0 3 button* 1 2 button* 2 fully gestural* hide*/ Readable public static final String NAVIGATION_MODE navigation_mode;prop属性qemu.hw.mainkeys允许系统属性覆盖此设置。由仿真器使用。使用方法hasNavigationBar()导航栏高度navigation_bar_height frameworks/base/core/res/res/values/dimens.xml !-- Height of the bottom navigation / system bar. --dimen namenavigation_bar_height48dp/dimen!-- Height of the bottom navigation bar in portrait; often the same as dimen/navigation_bar_height --dimen namenavigation_bar_height_landscape48dp/dimen2.2 属性设置代码 设置中显示判断 String NAV_BAR_MODE_3BUTTON_OVERLAY com.android.internal.systemui.navbar.threebutton; /product/overlay/NavigationBarMode3Button/NavigationBarMode3ButtonOverlay.apkString NAV_BAR_MODE_2BUTTON_OVERLAY com.android.internal.systemui.navbar.twobutton; /product/overlay/NavigationBarMode2Button/NavigationBarMode2ButtonOverlay.apkString NAV_BAR_MODE_GESTURAL_OVERLAY com.android.internal.systemui.navbar.gestural; /product/overlay/NavigationBarModeGestural/NavigationBarModeGesturalOverlay.apk packages/apps/Settings/src/com/android/settings/gestures/SystemNavigationPreferenceController.java static boolean isOverlayPackageAvailable(Context context, String overlayPackage) {try {return context.getPackageManager().getPackageInfo(overlayPackage, 0) ! null;} catch (PackageManager.NameNotFoundException e) {// Not found, just return unavailablereturn false;} }frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java private int mNavBarMode NAV_BAR_MODE_3BUTTON;mNavBarMode mNavigationModeController.addListener(mModeChangedListener);frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationModeController.java private int getCurrentInteractionMode(Context context) {int mode context.getResources().getInteger(com.android.internal.R.integer.config_navBarInteractionMode);if (DEBUG) {Log.d(TAG, getCurrentInteractionMode: mode mode contextUser context.getUserId());}return mode; }public void updateCurrentInteractionMode(boolean notify) {mCurrentUserContext getCurrentUserContext();int mode getCurrentInteractionMode(mCurrentUserContext);mUiBgExecutor.execute(() -Settings.Secure.putString(mCurrentUserContext.getContentResolver(),Secure.NAVIGATION_MODE, String.valueOf(mode)));if (DEBUG) {Log.d(TAG, updateCurrentInteractionMode: mode mode);dumpAssetPaths(mCurrentUserContext);}if (notify) {for (int i 0; i mListeners.size(); i) {mListeners.get(i).onNavigationModeChanged(mode);}} }frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java if (mDisplayContent.isDefaultDisplay) {mHasStatusBar true;mHasNavigationBar mContext.getResources().getBoolean(R.bool.config_showNavigationBar);// Allow a system property to override this. Used by the emulator.// See also hasNavigationBar().String navBarOverride SystemProperties.get(qemu.hw.mainkeys);if (1.equals(navBarOverride)) {mHasNavigationBar false;} else if (0.equals(navBarOverride)) {mHasNavigationBar true;} } else {mHasStatusBar false;mHasNavigationBar mDisplayContent.supportsSystemDecorations(); }2、设置中设置“三按钮”导航更新流程 2.1 属性资源覆盖叠加 OverlayManagerService 运行时资源叠加层 (RRO) 点击设置后导航栏模式通过 OverlayManagerService 服务对 config_navBarInteractionMode 资源进行叠加而settings的Secure表中navigation_mode属性只是记录模式。 frameworks/base/services/core/java/com/android/server/om/OverlayManagerService.java 资源叠加主要文件config.xml frameworks/base/core/res/res/values/config.xml /product/overlay/NavigationBarMode3Button/NavigationBarMode3ButtonOverlay.apk /product/overlay/NavigationBarMode2Button/NavigationBarMode2ButtonOverlay.apk /product/overlay/NavigationBarModeGestural/NavigationBarModeGesturalOverlay.apk updateActivityManager(affectedPackages, userId)发送受覆盖状态更改影响的所有目标包的配置更改事件。broadcastActionOverlayChanged(targets, userId)发送覆盖包已更改广播ACTION_OVERLAY_CHANGED。 private void updateTargetPackagesLocked(Nullable SetPackageAndUser updatedTargets) {if (CollectionUtils.isEmpty(updatedTargets)) {return;}persistSettingsLocked();final SparseArrayArraySetString userTargets groupTargetsByUserId(updatedTargets);for (int i 0, n userTargets.size(); i n; i) {final ArraySetString targets userTargets.valueAt(i);final int userId userTargets.keyAt(i);final ListString affectedPackages updatePackageManagerLocked(targets, userId);if (affectedPackages.isEmpty()) {// The package manager paths are already up-to-date.continue;}FgThread.getHandler().post(() - {// Send configuration changed events for all target packages that have been affected// by overlay state changes.updateActivityManager(affectedPackages, userId);// Do not send broadcasts for all affected targets. Overlays targeting the framework// or shared libraries may cause too many broadcasts to be sent at once.broadcastActionOverlayChanged(targets, userId);});} }2.2 SystemUI导航栏接收改变广播 mReceiver 监听ACTION_OVERLAY_CHANGED广播 Secure.NAVIGATION_MODE记录导航栏模式改变值 mListeners.get(i).onNavigationModeChanged(mode)通知导航栏模式改变的ModeChangedListener监听 frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationModeController.java private BroadcastReceiver mReceiver new BroadcastReceiver() {Overridepublic void onReceive(Context context, Intent intent) {if (DEBUG) {Log.d(TAG, ACTION_OVERLAY_CHANGED);}updateCurrentInteractionMode(true /* notify */);} };public NavigationModeController(Context context,DeviceProvisionedController deviceProvisionedController,ConfigurationController configurationController,UiBackground Executor uiBgExecutor,DumpManager dumpManager) {//... ...IntentFilter overlayFilter new IntentFilter(ACTION_OVERLAY_CHANGED);overlayFilter.addDataScheme(package);overlayFilter.addDataSchemeSpecificPart(android, PatternMatcher.PATTERN_LITERAL);mContext.registerReceiverAsUser(mReceiver, UserHandle.ALL, overlayFilter, null, null);//... ... }public void updateCurrentInteractionMode(boolean notify) {mCurrentUserContext getCurrentUserContext();int mode getCurrentInteractionMode(mCurrentUserContext);mUiBgExecutor.execute(() -Settings.Secure.putString(mCurrentUserContext.getContentResolver(),Secure.NAVIGATION_MODE, String.valueOf(mode)));if (DEBUG) {Log.d(TAG, updateCurrentInteractionMode: mode mode);dumpAssetPaths(mCurrentUserContext);}if (notify) {for (int i 0; i mListeners.size(); i) {mListeners.get(i).onNavigationModeChanged(mode);}} }2.3 SystemUI导航栏布局更新 NavigationModeController通知监听执行onNavigationModeChanged方法更新最后 navBar.getView().updateStates()执行更新界面NavigationBarView updateSlippery()更新WindowManager.LayoutParams.FLAG_SLIPERY状态具体取决于是否启用了向上滑动或者通知是否在未处于动画状态的情况下完全打开。如果启用了slide触摸事件将离开导航栏窗口并进入全屏应用程序/主页窗口如果没有则手势离开导航栏后导航栏将收到取消的触摸事件。reloadNavIcons()重新导入导航栏相关图片资源updateNavButtonIcons更新界面导航栏图标、显示状态及活动触摸区域 frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java Override public void onNavigationModeChanged(int mode) {if (mNavMode mode) {return;}final int oldMode mNavMode;mNavMode mode;updateAccessibilityButtonModeIfNeeded();mHandler.post(() - {// create/destroy nav bar based on nav mode only in unfolded stateif (oldMode ! mNavMode) {updateNavbarForTaskbar();}for (int i 0; i mNavigationBars.size(); i) {NavigationBar navBar mNavigationBars.valueAt(i);if (navBar null) {continue;}navBar.getView().updateStates();}}); }frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java public void updateStates() {if (mNavigationInflaterView ! null) {// Reinflate the navbar if needed, no-op unless the swipe up state changesmNavigationInflaterView.onLikelyDefaultLayoutChange();}updateSlippery();reloadNavIcons();updateNavButtonIcons();WindowManagerWrapper.getInstance().setNavBarVirtualKeyHapticFeedbackEnabled(!mShowSwipeUpUi);getHomeButton().setAccessibilityDelegate(mShowSwipeUpUi ? mQuickStepAccessibilityDelegate : null); }2.4 时序图
http://www.zqtcl.cn/news/310203/

相关文章:

  • 科凡网站建设小程序自己开发
  • 专门做金融的招聘网站wordpress 价格
  • 微商城网站建设信息定制程序网站
  • 电子政务网站开发餐饮品牌设计包括哪些
  • 深圳手机商城网站设计公司网站做会员用什么源码
  • 安康网站建设公司价格pathon做网站
  • jq网站模板宣城有做网站的公司吗
  • 江苏个人备案网站内容大连seo加盟
  • 服装网站建设公司地址公司网站建设需要注意什么
  • 免费行情软件网站下载安装电子商务网站建设实训报告
  • wordpress怎么添加企业网站美化网站公司
  • 工作室网站源码全球军事网站
  • 网站设计模板免费建站珠海正规网站制作排名费用多少
  • 北京沙河教做网站的wordpress增加自适应功能
  • 中国著名的个人网站网站设计怎么做ppt答辩
  • 郑州做招商的网站网站后台主流网站开发语言
  • 专业足球网站开发铜陵网站优化
  • 南昌高端网站开发山西太原网站建设公司
  • 青岛专业制作网站的公司吗百度咨询
  • 自定义网站模块深圳宝安区有什么好玩的地方
  • 如何增加网站的外链微平台网站支持html5实现游戏
  • 平台网站建设网站邯郸seo优化
  • 做网站着用什么软件盐城网站建设电话
  • 自己的网站wordpress自动变化文字
  • 北京制作网站公司哪家好wordpress小工具不显示不出来
  • 如何建设一个新的网站h5网站建设价格
  • 无锡专业做网站的怎么攻击php做的网站
  • 盐城网站建设代理商wordpress定义字体颜色
  • 成都旅游网站建设地址自己做的网站怎么被搜索出来
  • 网站建设免费免代码商城微网站如何做