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

网站开发语言介绍wordpress新增目录

网站开发语言介绍,wordpress新增目录,域名解析站长工具,个人网页设计作品开题报告概述 基于android 15.0, 以从强制横屏App上滑退回桌面流程来分析 frameworks/base/services/core/java/com/android/server/wm/AsyncRotationController.javaAsyncRotationController 是一种控制器#xff0c;用于处理设备显示屏旋转时非活动窗口的异步更新。这种控制器通过…概述 基于android 15.0, 以从强制横屏App上滑退回桌面流程来分析 frameworks/base/services/core/java/com/android/server/wm/AsyncRotationController.javaAsyncRotationController 是一种控制器用于处理设备显示屏旋转时非活动窗口的异步更新。这种控制器通过异步处理来优化屏幕旋转或应用过渡动画的启动延迟确保窗口在旋转过程中能够平滑过渡避免闪烁或延迟问题。具体功能包括 在旋转变化时处理窗口的淡出和淡入效果。隐藏和显示目标窗口以匹配新的旋转角度。使用同步事务管理无缝旋转确保窗口能够平滑过渡到新的旋转状态。 Async Rotation执行时机 // DisplayContent.java void setFixedRotationLaunchingAppUnchecked(Nullable ActivityRecord r, int rotation) {if (mFixedRotationLaunchingApp null r ! null) {mWmService.mDisplayNotificationController.dispatchFixedRotationStarted(this, rotation);// 延迟隐藏动画以避免在短时间内点击导航栏可能触发固定旋转时出现闪烁final boolean shouldDebounce r mFixedRotationTransitionListener.mAnimatingRecents|| mTransitionController.isTransientLaunch(r);startAsyncRotation(shouldDebounce);} else if (mFixedRotationLaunchingApp ! null r null) {mWmService.mDisplayNotificationController.dispatchFixedRotationFinished(this);// 如果请求display的下一次transition保持异步旋转控制器。if (!mTransitionController.hasCollectingRotationChange(this, getRotation())) {finishAsyncRotationIfPossible();}}mFixedRotationLaunchingApp r; }用于启动异步旋转过程。这个过程允许应用程序或系统在不阻塞主线程的情况下处理显示屏的旋转从而提供更平滑的用户体验. // DisplayContent.java private boolean startAsyncRotation(boolean shouldDebounce) {if (shouldDebounce) {mWmService.mH.postDelayed(() - {synchronized (mWmService.mGlobalLock) {if (mFixedRotationLaunchingApp ! null startAsyncRotation(false /* shouldDebounce */)) {// 应用该事务使动画控制能够立即生效getPendingTransaction().apply();}}}, FIXED_ROTATION_HIDE_ANIMATION_DEBOUNCE_DELAY_MS); //250msreturn false;}if (mAsyncRotationController null) {mAsyncRotationController new AsyncRotationController(this);mAsyncRotationController.start();return true;}return false; }动画执行 收集目标窗口 // AsyncRotationController.java AsyncRotationController(DisplayContent displayContent) {.....// 收集那些可以异步旋转而不阻塞display的窗口。displayContent.forAllWindows(this, true /* traverseTopToBottom */);...... }public void accept(WindowState w) {if (!w.mHasSurface || !canBeAsync(w.mToken)) {return;}if (mTransitionOp OP_LEGACY w.mForceSeamlesslyRotate) {// Legacy transition already handles seamlessly windows.return;}......// 大部分都是执行fade窗口动画final int action mTransitionOp OP_CHANGE_MAY_SEAMLESS || w.mForceSeamlesslyRotate? Operation.ACTION_SEAMLESS : Operation.ACTION_FADE;mTargetWindowTokens.put(w.mToken, new Operation(action)); }目标窗口在TO_FRONT transition启动时淡出 07-11 15:27:24.362 3750 3785 D AsyncRotation: Start fade-out Window{ae32994 u0 Floating XXX}// AsyncRotationController.java /*** 为可能稍后无缝旋转的窗口令牌准备相应的操作例如隐藏动画*/ void start() {.....for (int i mTargetWindowTokens.size() - 1; i 0; i--) {final WindowToken windowToken mTargetWindowTokens.keyAt(i);final Operation op mTargetWindowTokens.valueAt(i);if (op.mAction Operation.ACTION_FADE || op.mAction Operation.ACTION_TOGGLE_IME) {fadeWindowToken(false /* show */, windowToken, ANIMATION_TYPE_TOKEN_TRANSFORM);op.mLeash windowToken.getAnimationLeash();if (DEBUG) Slog.d(TAG, Start fade-out windowToken.getTopChild());} else if (op.mAction Operation.ACTION_SEAMLESS) {op.mLeash windowToken.mSurfaceControl;if (DEBUG) Slog.d(TAG, Start seamless windowToken.getTopChild());}}..... }目标窗口在CHANGE transition启动时以new rotation重绘 3750 3785 V WindowManager: Resize reasons for wWindow{eb45fff u0 Floating XXX}: forceReportingResizedfalse insetsChangedtrue configChangedtrue didFrameInsetsChangetrue 3750 3785 I WindowManager: Resizing Window{ae32994 u0 Floating XXX} WITH DRAW PENDING 3750 3785 V WindowManager: Requested redraw for orientation change: Window{ae32994 u0 Floating XXX} 3750 7896 I WindowManager: finishDrawing of orientation change: Window{ae32994 u0 Floating XXX} 100ms// WindowState.java void updateResizingWindowIfNeeded() {......// display rotation改变, 所以这里的configChanged为truefinal boolean configChanged !mInRelayout !isLastConfigReportedToClient();......final boolean contentChanged didFrameInsetsChange || configChanged|| dragResizingChanged || attachedFrameChanged;.....if (contentChanged || insetsChanged || shouldSendRedrawForSync()) {ProtoLog.v(WM_DEBUG_RESIZE,Resize reasons for w%s: %s configChanged%b didFrameInsetsChange%b,this, mWindowFrames.getInsetsChangedInfo(),configChanged, didFrameInsetsChange);.....// 重置当前窗口的mDrawState为DRAW_PENDINGif ((configChanged || getOrientationChanging() || dragResizingChanged) isVisibleRequested()) {winAnimator.mDrawState DRAW_PENDING;.....}if (!mWmService.mResizingWindows.contains(this)) {ProtoLog.v(WM_DEBUG_RESIZE, Resizing window %s, this);mWmService.mResizingWindows.add(this);}} ..... }void reportResized() {......ProtoLog.v(WM_DEBUG_RESIZE, Reporting new frame to %s: %s, this,mWindowFrames.mCompatFrame);final boolean drawPending mWinAnimator.mDrawState DRAW_PENDING;if (drawPending) {ProtoLog.i(WM_DEBUG_ORIENTATION, Resizing %s WITH DRAW PENDING, this);}.....final boolean reportDraw syncRedraw || drawPending;.....if (Flags.bundleClientTransactionFlag()) {getProcess().scheduleClientTransactionItem(WindowStateResizeItem.obtain(mClient, mClientWindowFrames, reportDraw,mLastReportedConfiguration, getCompatInsetsState(), forceRelayout,alwaysConsumeSystemBars, displayId,syncWithBuffers ? mSyncSeqId : -1, isDragResizing,mLastReportedActivityWindowInfo));onResizePostDispatched(drawPending, prevRotation, displayId);}...... }TO_FRONT动画结束时开始淡入目标窗口 07-11 15:27:25.532 3750 7896 D AsyncRotation: handleFinishDrawing Window{ae32994 u0 Floating XXX} 07-11 15:27:25.532 3750 7896 D AsyncRotation: Complete set pending Window{ae32994 u0 Floating XXX} 07-11 15:27:25.572 3750 8951 D AsyncRotation: Setup unrotate Window{ae32994 u0 Floating XXX} 07-11 15:27:25.636 3750 7166 D AsyncRotation: Complete directly Window{ae32994 u0 Floating XXX} 07-11 15:27:25.636 3750 7166 D AsyncRotation: finishOp fade-in Window{ae32994 u0 Floating XXX}// AsyncRotationController.java void completeAll() {for (int i mTargetWindowTokens.size() - 1; i 0; i--) {finishOp(mTargetWindowTokens.keyAt(i));}mTargetWindowTokens.clear();onAllCompleted(); }private void finishOp(WindowToken windowToken) {final Operation op mTargetWindowTokens.remove(windowToken);......else if (op.mAction Operation.ACTION_FADE) {if (DEBUG) Slog.d(TAG, finishOp fade-in windowToken.getTopChild());// The previous animation leash will be dropped when preparing fade-in animation, so// simply apply new animation without restoring the transformation.fadeWindowToken(true /* show */, windowToken, ANIMATION_TYPE_TOKEN_TRANSFORM);} ...... }
http://www.w-s-a.com/news/998205/

相关文章:

  • 网站建设+青海龙岗区网站建设
  • 精品课网站建设网络公司名字怎么取
  • 化工网站制作用户体验设计案例
  • 如何在微信公众平台上建立微网站垂直门户网站怎么做
  • 关于销售网站有哪些内容品牌网站建设小科6a蚪
  • 免费制作网站平台哪个好湖南企业建网站
  • 灞桥微网站建设株洲百姓网
  • 儿童网站建设互联网怎么学
  • 重庆建网站的公司集中在哪里中煤第五建设有限公司网站
  • 成都网站建设987net运维需要掌握哪些知识
  • 网站建设师个人简介怎么写WordPress头像美化插件
  • 网站优化知识销售管理系统c语言
  • 桂林市网站设计厦门自己建网站
  • 网站seo哪里做的好东莞做网站优化的公司
  • 休闲采摘园网站建设政务公开和网站建设工作的建议
  • 长沙网站建设哪个公司好PHP amp MySQL网站建设宝典
  • 代码编辑器做热点什么网站好湛江网站建设哪家好
  • php网站开发概念网站开发岗位职责任职责格
  • asp 网站源码 下载西安自适应网站建设
  • 白领兼职做网站贵阳网站设计哪家好
  • 热水器网站建设 中企动力企业网站开发需要多钱
  • 北京市建设工程信息网交易网站静态网页模板免费下载网站
  • 福田欧曼服务站网站前台设计
  • 网站做系统叫什么软件吗注册域名需要实名认证吗
  • jsp网站开发教学视频ui设计风格
  • 注册网站建设开发怎么自己做导航网站
  • 设计做网站品牌咖啡主题网页界面设计
  • 个人网站制作总体设计宿迁房价2023年最新房价
  • 服装网站建设进度及实施过程马鞍山网站设计制作
  • 郑州网站优化顾问济宁网站制作