gitextract_k1p2gcqq/ ├── .github/ │ └── ISSUE_TEMPLATE.md ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE.TXT ├── README.md ├── arch/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── qmuiteam/ │ │ └── qmui/ │ │ └── arch/ │ │ └── ExampleInstrumentedTest.java │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── qmuiteam/ │ │ │ └── qmui/ │ │ │ └── arch/ │ │ │ ├── InnerBaseActivity.java │ │ │ ├── QMUIActivity.java │ │ │ ├── QMUIFragment.java │ │ │ ├── QMUIFragmentActivity.java │ │ │ ├── QMUIFragmentContainerProvider.java │ │ │ ├── QMUIFragmentPagerAdapter.java │ │ │ ├── QMUILatestVisit.java │ │ │ ├── QMUINavFragment.java │ │ │ ├── QMUISwipeBackActivityManager.java │ │ │ ├── SwipeBackLayout.java │ │ │ ├── SwipeBackgroundView.java │ │ │ ├── Utils.java │ │ │ ├── annotation/ │ │ │ │ └── DefaultFirstFragment.java │ │ │ ├── effect/ │ │ │ │ ├── Effect.java │ │ │ │ ├── FragmentResultEffect.java │ │ │ │ ├── MapEffect.java │ │ │ │ ├── QMUIFragmentEffectHandler.java │ │ │ │ ├── QMUIFragmentEffectRegistration.java │ │ │ │ ├── QMUIFragmentEffectRegistry.java │ │ │ │ ├── QMUIFragmentMapEffectHandler.java │ │ │ │ └── QMUIFragmentResultEffectHandler.java │ │ │ ├── record/ │ │ │ │ ├── DefaultLatestVisitStorage.java │ │ │ │ ├── LatestVisitArgumentCollector.java │ │ │ │ ├── QMUILatestVisitStorage.java │ │ │ │ ├── RecordArgumentEditor.java │ │ │ │ ├── RecordArgumentEditorImpl.java │ │ │ │ └── RecordIdClassMap.java │ │ │ └── scheme/ │ │ │ ├── ActivitySchemeItem.kt │ │ │ ├── FragmentSchemeItem.kt │ │ │ ├── QMUISchemeBuilder.kt │ │ │ ├── QMUISchemeFragmentFactory.kt │ │ │ ├── QMUISchemeHandler.kt │ │ │ ├── QMUISchemeHandlerInterceptor.kt │ │ │ ├── QMUISchemeIntentFactory.kt │ │ │ ├── QMUISchemeMatcher.kt │ │ │ ├── QMUIUnknownSchemeHandler.kt │ │ │ ├── SchemeHandleContext.kt │ │ │ ├── SchemeInfo.kt │ │ │ ├── SchemeItem.kt │ │ │ ├── SchemeMap.kt │ │ │ ├── SchemeRefreshable.kt │ │ │ └── SchemeValue.kt │ │ └── res/ │ │ ├── anim/ │ │ │ ├── decelerate_factor_interpolator.xml │ │ │ ├── decelerate_low_factor_interpolator.xml │ │ │ ├── scale_enter.xml │ │ │ ├── scale_exit.xml │ │ │ ├── slide_in_left.xml │ │ │ ├── slide_in_right.xml │ │ │ ├── slide_out_left.xml │ │ │ ├── slide_out_right.xml │ │ │ ├── slide_still.xml │ │ │ ├── swipe_back_enter.xml │ │ │ ├── swipe_back_exit.xml │ │ │ └── swipe_back_exit_still.xml │ │ ├── animator/ │ │ │ ├── scale_enter.xml │ │ │ ├── scale_exit.xml │ │ │ ├── slide_in_left.xml │ │ │ ├── slide_in_right.xml │ │ │ ├── slide_out_left.xml │ │ │ ├── slide_out_right.xml │ │ │ └── slide_still.xml │ │ └── values/ │ │ ├── attrs.xml │ │ ├── ids.xml │ │ ├── qmui_integers.xml │ │ ├── strings.xml │ │ └── style.xml │ └── test/ │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── qmui/ │ └── arch/ │ └── ExampleUnitTest.java ├── arch-annotation/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── qmui/ │ └── arch/ │ └── annotation/ │ ├── ActivityScheme.java │ ├── FragmentContainerParam.java │ ├── FragmentScheme.java │ └── LatestVisitRecord.java ├── arch-compiler/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── qmui/ │ └── arch/ │ ├── BaseProcessor.java │ ├── LatestVisitProcessor.java │ └── SchemeProcessor.java ├── build.gradle.kts ├── compiler/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── qmuidemo/ │ └── compiler/ │ └── WidgetProcessor.java ├── compose/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── qmuiteam/ │ │ └── compose/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── qmuiteam/ │ │ │ └── compose/ │ │ │ └── modal/ │ │ │ ├── ModalImpl.kt │ │ │ ├── QMUIBottomSheet.kt │ │ │ ├── QMUIDialog.kt │ │ │ ├── QMUIModal.kt │ │ │ └── QMUIToast.kt │ │ └── res/ │ │ └── values/ │ │ └── ids.xml │ └── test/ │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── compose/ │ └── ExampleUnitTest.kt ├── compose-core/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── qmuiteam/ │ │ └── compose/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── qmuiteam/ │ │ │ └── compose/ │ │ │ └── core/ │ │ │ ├── ex/ │ │ │ │ └── DrawScopeEx.kt │ │ │ ├── helper/ │ │ │ │ ├── Dimen.kt │ │ │ │ ├── Global.kt │ │ │ │ ├── Log.kt │ │ │ │ └── LogTag.kt │ │ │ ├── provider/ │ │ │ │ └── WindowInsets.kt │ │ │ └── ui/ │ │ │ ├── DefaultConfig.kt │ │ │ ├── PressWithAlphaBox.kt │ │ │ ├── QMUIIcon.kt │ │ │ ├── QMUIItem.kt │ │ │ └── QMUITopBar.kt │ │ └── res/ │ │ ├── drawable/ │ │ │ ├── ic_qmui_checkbox_checked.xml │ │ │ ├── ic_qmui_checkbox_normal.xml │ │ │ ├── ic_qmui_checkbox_partial.xml │ │ │ ├── ic_qmui_chevron.xml │ │ │ ├── ic_qmui_mark.xml │ │ │ └── ic_qmui_topbar_back.xml │ │ └── values/ │ │ └── qmui_ids.xml │ └── test/ │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── compose/ │ └── ExampleUnitTest.kt ├── deploy.sh ├── editor/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── editor/ │ ├── EditorBehavior.kt │ ├── QMUIEditor.kt │ ├── Range.kt │ ├── TextFieldValueEx.kt │ └── WordEdit.kt ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── lib/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── qmuidemo/ │ └── lib/ │ ├── Group.java │ └── annotation/ │ └── Widget.java ├── photo/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── qmuiteam/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── qmuiteam/ │ │ │ └── photo/ │ │ │ ├── activity/ │ │ │ │ ├── QMUIPhotoClipActivity.kt │ │ │ │ ├── QMUIPhotoPickerActivity.kt │ │ │ │ └── QMUIPhotoViewerActivity.kt │ │ │ ├── compose/ │ │ │ │ ├── BitmapRegion.kt │ │ │ │ ├── GesturePhoto.kt │ │ │ │ ├── Loading.kt │ │ │ │ ├── PhotoClipper.kt │ │ │ │ ├── PhotoConfig.kt │ │ │ │ ├── Thumbnail.kt │ │ │ │ └── picker/ │ │ │ │ ├── Buckets.kt │ │ │ │ ├── Common.kt │ │ │ │ ├── Config.kt │ │ │ │ ├── Edit.kt │ │ │ │ ├── Grid.kt │ │ │ │ ├── PaintEdit.kt │ │ │ │ ├── Preview.kt │ │ │ │ ├── TextEdit.kt │ │ │ │ └── TopBarItem.kt │ │ │ ├── data/ │ │ │ │ ├── QMUIBitmapRegion.kt │ │ │ │ ├── QMUIMediaDataProvider.kt │ │ │ │ ├── QMUIPhotoTransitionDelivery.kt │ │ │ │ └── QMUIPhotoTransitionInfo.kt │ │ │ ├── util/ │ │ │ │ ├── BitmapEx.kt │ │ │ │ ├── QMUIPhotoHelper.kt │ │ │ │ └── ViewEx.kt │ │ │ └── vm/ │ │ │ └── QMUIPhotoPickerViewModel.kt │ │ └── res/ │ │ └── anim/ │ │ ├── scale_enter.xml │ │ └── scale_exit.xml │ └── test/ │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── ExampleUnitTest.kt ├── photo-coil/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── qmuiteam/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── qmuiteam/ │ │ └── photo/ │ │ └── coil/ │ │ ├── QMUICoilImageDecoderFactory.kt │ │ ├── QMUICoilPhoto.kt │ │ └── QMUIMediaCoilPhotoProviderFactory.kt │ └── test/ │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── ExampleUnitTest.kt ├── photo-glide/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── qmuiteam/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── com/ │ │ └── qmuiteam/ │ │ └── photo/ │ │ └── glide/ │ │ ├── QMUIGlideModule.kt │ │ ├── QMUIGlidePhoto.kt │ │ └── QMUIMediaGlidePhotoProviderFactory.kt │ └── test/ │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── ExampleUnitTest.kt ├── plugin/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── settings.gradle.kts │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── qmuiteam/ │ └── plugin/ │ ├── Dep.kt │ ├── QMUIDepPlugin.kt │ └── QMUIPublish.kt ├── qmui/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── assets/ │ │ └── QMUIWebviewBridge.js │ ├── java/ │ │ └── com/ │ │ └── qmuiteam/ │ │ └── qmui/ │ │ ├── Beta.java │ │ ├── QMUIConfig.java │ │ ├── QMUIInterpolatorStaticHolder.java │ │ ├── QMUILog.java │ │ ├── alpha/ │ │ │ ├── QMUIAlphaButton.java │ │ │ ├── QMUIAlphaConstraintLayout.java │ │ │ ├── QMUIAlphaFrameLayout.java │ │ │ ├── QMUIAlphaImageButton.java │ │ │ ├── QMUIAlphaLinearLayout.java │ │ │ ├── QMUIAlphaRelativeLayout.java │ │ │ ├── QMUIAlphaTextView.java │ │ │ ├── QMUIAlphaViewHelper.java │ │ │ └── QMUIAlphaViewInf.java │ │ ├── exposure/ │ │ │ ├── Exposure.kt │ │ │ ├── ExposureChecker.kt │ │ │ ├── ExposureContainer.kt │ │ │ ├── ExposureEffect.kt │ │ │ └── ExposureEx.kt │ │ ├── kotlin/ │ │ │ ├── DimenKt.kt │ │ │ ├── LayoutParamKt.kt │ │ │ └── ViewKt.kt │ │ ├── layout/ │ │ │ ├── IQMUILayout.java │ │ │ ├── QMUIButton.java │ │ │ ├── QMUIConstraintLayout.java │ │ │ ├── QMUIFrameLayout.java │ │ │ ├── QMUILayoutHelper.java │ │ │ ├── QMUILinearLayout.java │ │ │ ├── QMUIPriorityLinearLayout.java │ │ │ └── QMUIRelativeLayout.java │ │ ├── link/ │ │ │ ├── ITouchableSpan.java │ │ │ ├── QMUILinkTouchDecorHelper.java │ │ │ ├── QMUILinkTouchMovementMethod.java │ │ │ ├── QMUILinkify.java │ │ │ └── QMUIScrollingMovementMethod.java │ │ ├── nestedScroll/ │ │ │ ├── IQMUIContinuousNestedBottomView.java │ │ │ ├── IQMUIContinuousNestedScrollCommon.java │ │ │ ├── IQMUIContinuousNestedTopView.java │ │ │ ├── QMUIContinuousNestedBottomAreaBehavior.java │ │ │ ├── QMUIContinuousNestedBottomDelegateLayout.java │ │ │ ├── QMUIContinuousNestedBottomRecyclerView.java │ │ │ ├── QMUIContinuousNestedScrollLayout.java │ │ │ ├── QMUIContinuousNestedTopAreaBehavior.java │ │ │ ├── QMUIContinuousNestedTopDelegateLayout.java │ │ │ ├── QMUIContinuousNestedTopLinearLayout.java │ │ │ ├── QMUIContinuousNestedTopRecyclerView.java │ │ │ ├── QMUIContinuousNestedTopWebView.java │ │ │ ├── QMUIDraggableScrollBar.java │ │ │ └── QMUIViewOffsetBehavior.java │ │ ├── qqface/ │ │ │ ├── IQMUIQQFaceManager.java │ │ │ ├── QMUINoQQFaceManager.java │ │ │ ├── QMUIQQFaceCompiler.java │ │ │ ├── QMUIQQFaceView.java │ │ │ └── QQFace.java │ │ ├── recyclerView/ │ │ │ ├── QMUIRVDraggableScrollBar.java │ │ │ ├── QMUIRVItemSwipeAction.java │ │ │ ├── QMUISwipeAction.java │ │ │ └── QMUISwipeViewHolder.java │ │ ├── skin/ │ │ │ ├── IQMUISkinApplyListener.java │ │ │ ├── IQMUISkinDispatchInterceptor.java │ │ │ ├── IQMUISkinHandlerDecoration.java │ │ │ ├── IQMUISkinHandlerSpan.java │ │ │ ├── IQMUISkinHandlerView.java │ │ │ ├── QMUISkinHelper.java │ │ │ ├── QMUISkinLayoutInflaterFactory.java │ │ │ ├── QMUISkinManager.java │ │ │ ├── QMUISkinValueBuilder.java │ │ │ ├── SkinWriter.java │ │ │ ├── annotation/ │ │ │ │ ├── QMUISkinChangeNotAdapted.java │ │ │ │ └── QMUISkinListenWithHierarchyChange.java │ │ │ ├── defaultAttr/ │ │ │ │ ├── IQMUISkinDefaultAttrProvider.java │ │ │ │ └── QMUISkinSimpleDefaultAttrProvider.java │ │ │ └── handler/ │ │ │ ├── IQMUISkinRuleHandler.java │ │ │ ├── QMUISkinRuleAlphaHandler.java │ │ │ ├── QMUISkinRuleBackgroundHandler.java │ │ │ ├── QMUISkinRuleBgTintColorHandler.java │ │ │ ├── QMUISkinRuleBorderHandler.java │ │ │ ├── QMUISkinRuleColorHandler.java │ │ │ ├── QMUISkinRuleColorStateListHandler.java │ │ │ ├── QMUISkinRuleDrawableHandler.java │ │ │ ├── QMUISkinRuleFloatHandler.java │ │ │ ├── QMUISkinRuleHintColorHandler.java │ │ │ ├── QMUISkinRuleMoreBgColorHandler.java │ │ │ ├── QMUISkinRuleMoreTextColorHandler.java │ │ │ ├── QMUISkinRuleProgressColorHandler.java │ │ │ ├── QMUISkinRuleSeparatorHandler.java │ │ │ ├── QMUISkinRuleSrcHandler.java │ │ │ ├── QMUISkinRuleTextColorHandler.java │ │ │ ├── QMUISkinRuleTextCompoundSrcHandler.java │ │ │ ├── QMUISkinRuleTextCompoundTintColorHandler.java │ │ │ ├── QMUISkinRuleTintColorHandler.java │ │ │ └── QMUISkinRuleUnderlineHandler.java │ │ ├── span/ │ │ │ ├── QMUIAlignMiddleImageSpan.java │ │ │ ├── QMUIBlockSpaceSpan.java │ │ │ ├── QMUICustomTypefaceSpan.java │ │ │ ├── QMUIMarginImageSpan.java │ │ │ ├── QMUIOnSpanClickListener.java │ │ │ ├── QMUITextSizeSpan.java │ │ │ └── QMUITouchableSpan.java │ │ ├── util/ │ │ │ ├── OnceReadValue.java │ │ │ ├── QMUIActivityLifecycleCallbacks.java │ │ │ ├── QMUICollapsingTextHelper.java │ │ │ ├── QMUIColorHelper.java │ │ │ ├── QMUIDeviceHelper.java │ │ │ ├── QMUIDirection.java │ │ │ ├── QMUIDisplayHelper.java │ │ │ ├── QMUIDrawableHelper.java │ │ │ ├── QMUIKeyboardHelper.java │ │ │ ├── QMUILangHelper.java │ │ │ ├── QMUINotchHelper.java │ │ │ ├── QMUIPackageHelper.java │ │ │ ├── QMUIReflectHelper.java │ │ │ ├── QMUIResHelper.java │ │ │ ├── QMUISpanHelper.java │ │ │ ├── QMUIStatusBarHelper.java │ │ │ ├── QMUIToastHelper.java │ │ │ ├── QMUIViewHelper.java │ │ │ ├── QMUIViewOffsetHelper.java │ │ │ ├── QMUIWindowHelper.java │ │ │ └── QMUIWindowInsetHelper.java │ │ └── widget/ │ │ ├── IBlankTouchDetector.java │ │ ├── IWindowInsetKeyboardConsumer.java │ │ ├── QMUIAnimationListView.java │ │ ├── QMUIAppBarLayout.java │ │ ├── QMUICollapsingTopBarLayout.java │ │ ├── QMUIEmptyView.java │ │ ├── QMUIFloatLayout.java │ │ ├── QMUIFontFitTextView.java │ │ ├── QMUIItemViewsAdapter.java │ │ ├── QMUILoadingView.java │ │ ├── QMUINotchConsumeLayout.java │ │ ├── QMUIObservableScrollView.java │ │ ├── QMUIPagerAdapter.java │ │ ├── QMUIProgressBar.java │ │ ├── QMUIRadiusImageView.java │ │ ├── QMUIRadiusImageView2.java │ │ ├── QMUISeekBar.java │ │ ├── QMUISlider.java │ │ ├── QMUITopBar.java │ │ ├── QMUITopBarLayout.java │ │ ├── QMUIVerticalTextView.java │ │ ├── QMUIViewPager.java │ │ ├── QMUIWindowInsetLayout.java │ │ ├── QMUIWindowInsetLayout2.java │ │ ├── QMUIWrapContentListView.java │ │ ├── QMUIWrapContentScrollView.java │ │ ├── dialog/ │ │ │ ├── QMUIBaseDialog.java │ │ │ ├── QMUIBottomSheet.java │ │ │ ├── QMUIBottomSheetBaseBuilder.java │ │ │ ├── QMUIBottomSheetBehavior.java │ │ │ ├── QMUIBottomSheetGridItemModel.java │ │ │ ├── QMUIBottomSheetGridItemView.java │ │ │ ├── QMUIBottomSheetGridLineLayout.java │ │ │ ├── QMUIBottomSheetListAdapter.java │ │ │ ├── QMUIBottomSheetListItemDecoration.java │ │ │ ├── QMUIBottomSheetListItemModel.java │ │ │ ├── QMUIBottomSheetListItemView.java │ │ │ ├── QMUIBottomSheetRootLayout.java │ │ │ ├── QMUIDialog.java │ │ │ ├── QMUIDialogAction.java │ │ │ ├── QMUIDialogBlockBuilder.java │ │ │ ├── QMUIDialogBuilder.java │ │ │ ├── QMUIDialogMenuItemView.java │ │ │ ├── QMUIDialogRootLayout.java │ │ │ ├── QMUIDialogView.java │ │ │ ├── QMUITipDialog.java │ │ │ └── QMUITipDialogView.java │ │ ├── grouplist/ │ │ │ ├── QMUICommonListItemView.java │ │ │ ├── QMUIGroupListSectionHeaderFooterView.java │ │ │ └── QMUIGroupListView.java │ │ ├── popup/ │ │ │ ├── QMUIBasePopup.java │ │ │ ├── QMUIFullScreenPopup.java │ │ │ ├── QMUINormalPopup.java │ │ │ ├── QMUIPopup.java │ │ │ ├── QMUIPopups.java │ │ │ └── QMUIQuickAction.java │ │ ├── pullLayout/ │ │ │ ├── QMUIAlwaysFollowOffsetCalculator.java │ │ │ ├── QMUICenterOffsetCalculator.java │ │ │ ├── QMUIFixToTargetOffsetCalculator.java │ │ │ ├── QMUIPullLayout.java │ │ │ ├── QMUIPullLoadMoreView.java │ │ │ └── QMUIPullRefreshView.java │ │ ├── pullRefreshLayout/ │ │ │ ├── QMUICenterGravityRefreshOffsetCalculator.java │ │ │ ├── QMUIDefaultRefreshOffsetCalculator.java │ │ │ ├── QMUIFollowRefreshOffsetCalculator.java │ │ │ └── QMUIPullRefreshLayout.java │ │ ├── roundwidget/ │ │ │ ├── QMUIRoundButton.java │ │ │ ├── QMUIRoundButtonDrawable.java │ │ │ ├── QMUIRoundFrameLayout.java │ │ │ ├── QMUIRoundLinearLayout.java │ │ │ └── QMUIRoundRelativeLayout.java │ │ ├── section/ │ │ │ ├── QMUIDefaultStickySectionAdapter.java │ │ │ ├── QMUISection.java │ │ │ ├── QMUISectionDiffCallback.java │ │ │ ├── QMUIStickySectionAdapter.java │ │ │ ├── QMUIStickySectionItemDecoration.java │ │ │ └── QMUIStickySectionLayout.java │ │ ├── tab/ │ │ │ ├── QMUIBasicTabSegment.java │ │ │ ├── QMUITab.java │ │ │ ├── QMUITabAdapter.java │ │ │ ├── QMUITabBuilder.java │ │ │ ├── QMUITabIcon.java │ │ │ ├── QMUITabIndicator.java │ │ │ ├── QMUITabSegment.java │ │ │ ├── QMUITabSegment2.java │ │ │ └── QMUITabView.java │ │ ├── textview/ │ │ │ ├── ISpanTouchFix.java │ │ │ ├── QMUILinkTextView.java │ │ │ └── QMUISpanTouchFixTextView.java │ │ └── webview/ │ │ ├── QMUIBridgeWebViewClient.java │ │ ├── QMUIWebView.java │ │ ├── QMUIWebViewBridgeHandler.java │ │ ├── QMUIWebViewClient.java │ │ └── QMUIWebViewContainer.java │ └── res/ │ ├── anim/ │ │ ├── decelerate_factor_interpolator.xml │ │ ├── decelerate_low_factor_interpolator.xml │ │ ├── grow_from_bottom.xml │ │ ├── grow_from_bottomleft_to_topright.xml │ │ ├── grow_from_bottomright_to_topleft.xml │ │ ├── grow_from_top.xml │ │ ├── grow_from_topleft_to_bottomright.xml │ │ ├── grow_from_topright_to_bottomleft.xml │ │ ├── scale_in_center.xml │ │ ├── scale_out_center.xml │ │ ├── shrink_from_bottom.xml │ │ ├── shrink_from_bottomleft_to_topright.xml │ │ ├── shrink_from_bottomright_to_topleft.xml │ │ ├── shrink_from_top.xml │ │ ├── shrink_from_topleft_to_bottomright.xml │ │ └── shrink_from_topright_to_bottomleft.xml │ ├── color/ │ │ ├── qmui_btn_blue_bg.xml │ │ ├── qmui_btn_blue_border.xml │ │ ├── qmui_btn_blue_text.xml │ │ ├── qmui_s_link_color.xml │ │ ├── qmui_s_list_item_text_color.xml │ │ ├── qmui_s_switch_text_color.xml │ │ ├── qmui_s_transparent.xml │ │ └── qmui_topbar_text_color.xml │ ├── drawable/ │ │ ├── qmui_divider_bottom_bitmap.xml │ │ ├── qmui_divider_top_bitmap.xml │ │ ├── qmui_icon_popup_close.xml │ │ ├── qmui_icon_popup_close_with_bg.xml │ │ ├── qmui_icon_pull_down.xml │ │ ├── qmui_icon_quick_action_more_arrow_left.xml │ │ ├── qmui_icon_quick_action_more_arrow_right.xml │ │ ├── qmui_icon_topbar_back.xml │ │ ├── qmui_s_checkbox.xml │ │ ├── qmui_s_icon_switch.xml │ │ ├── qmui_s_list_item_bg_1.xml │ │ ├── qmui_s_list_item_bg_2.xml │ │ ├── qmui_s_switch_thumb.xml │ │ ├── qmui_s_switch_track.xml │ │ ├── qmui_switch_thumb.xml │ │ ├── qmui_switch_thumb_checked.xml │ │ ├── qmui_switch_track.xml │ │ ├── qmui_switch_track_checked.xml │ │ └── qmui_tips_point.xml │ ├── drawable-v21/ │ │ └── qmui_s_list_item_bg_2.xml │ ├── layout/ │ │ ├── qmui_bottom_sheet_dialog.xml │ │ ├── qmui_common_list_item.xml │ │ ├── qmui_empty_view.xml │ │ └── qmui_group_list_section_layout.xml │ ├── values/ │ │ ├── config_colors.xml │ │ ├── qmui_attrs.xml │ │ ├── qmui_attrs_alpha.xml │ │ ├── qmui_attrs_base.xml │ │ ├── qmui_attrs_custom.xml │ │ ├── qmui_attrs_layout.xml │ │ ├── qmui_attrs_round.xml │ │ ├── qmui_colors.xml │ │ ├── qmui_dimens.xml │ │ ├── qmui_ids.xml │ │ ├── qmui_strings.xml │ │ ├── qmui_style_appearance.xml │ │ ├── qmui_style_widget.xml │ │ └── qmui_themes.xml │ └── values-v21/ │ └── qmui_themes.xml ├── qmuidemo/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── lint.xml │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── assets/ │ │ └── demo.html │ ├── java/ │ │ └── com/ │ │ └── qmuiteam/ │ │ └── qmuidemo/ │ │ ├── QDApplication.kt │ │ ├── QDMainActivity.java │ │ ├── QDQQFaceManager.java │ │ ├── activity/ │ │ │ ├── ArchTestActivity.java │ │ │ ├── LauncherActivity.kt │ │ │ ├── QDPhotoPickerActivity.kt │ │ │ ├── TestArchInViewPagerActivity.java │ │ │ └── TranslucentActivity.java │ │ ├── adaptor/ │ │ │ ├── QDRecyclerViewAdapter.java │ │ │ └── QDSimpleAdapter.java │ │ ├── base/ │ │ │ ├── BaseActivity.java │ │ │ ├── BaseFragment.java │ │ │ ├── BaseFragmentActivity.java │ │ │ ├── BaseRecyclerAdapter.java │ │ │ ├── ComposeBaseFragment.kt │ │ │ └── RecyclerViewHolder.java │ │ ├── decorator/ │ │ │ ├── DividerItemDecoration.java │ │ │ └── GridDividerItemDecoration.java │ │ ├── fragment/ │ │ │ ├── QDAboutFragment.kt │ │ │ ├── QDDialogFragment.kt │ │ │ ├── QDWebExplorerFragment.java │ │ │ ├── components/ │ │ │ │ ├── QDBottomSheetFragment.java │ │ │ │ ├── QDButtonFragment.kt │ │ │ │ ├── QDCollapsingTopBarLayoutFragment.java │ │ │ │ ├── QDEmptyViewFragment.java │ │ │ │ ├── QDFloatLayoutFragment.java │ │ │ │ ├── QDGroupListViewFragment.kt │ │ │ │ ├── QDLayoutFragment.java │ │ │ │ ├── QDLinkTextViewFragment.java │ │ │ │ ├── QDPopupFragment.java │ │ │ │ ├── QDPriorityLinearLayoutFragment.java │ │ │ │ ├── QDProgressBarFragment.java │ │ │ │ ├── QDPullRefreshFragment.kt │ │ │ │ ├── QDRadiusImageView2ScaleTypeFragment.java │ │ │ │ ├── QDRadiusImageView2UsageFragment.java │ │ │ │ ├── QDRadiusImageViewFragment.java │ │ │ │ ├── QDRadiusImageViewScaleTypeFragment.java │ │ │ │ ├── QDRadiusImageViewUsageFragment.java │ │ │ │ ├── QDRecyclerViewDraggableScrollBarFragment.java │ │ │ │ ├── QDSliderFragment.java │ │ │ │ ├── QDSpanTouchFixTextViewFragment.java │ │ │ │ ├── QDTabSegment2FixModeFragment.java │ │ │ │ ├── QDTabSegment2ScrollableModeFragment.java │ │ │ │ ├── QDTabSegmentFixModeFragment.java │ │ │ │ ├── QDTabSegmentFragment.java │ │ │ │ ├── QDTabSegmentScrollableModeFragment.java │ │ │ │ ├── QDTabSegmentSpaceWeightFragment.java │ │ │ │ ├── QDTipDialogFragment.java │ │ │ │ ├── QDVerticalTextViewFragment.java │ │ │ │ ├── SliderSchemeMatcher.java │ │ │ │ ├── pullLayout/ │ │ │ │ │ ├── QDPullFragment.java │ │ │ │ │ ├── QDPullHorizontalTestFragment.java │ │ │ │ │ ├── QDPullRefreshAndLoadMoreTestFragment.java │ │ │ │ │ └── QDPullVerticalTestFragment.java │ │ │ │ ├── qqface/ │ │ │ │ │ ├── QDQQFaceFragment.java │ │ │ │ │ ├── QDQQFacePerformanceTestFragment.java │ │ │ │ │ ├── QDQQFaceTestData.java │ │ │ │ │ ├── QDQQFaceUsageFragment.kt │ │ │ │ │ ├── emojicon/ │ │ │ │ │ │ ├── EmojiCache.java │ │ │ │ │ │ ├── EmojiconHandler.java │ │ │ │ │ │ ├── EmojiconSpan.java │ │ │ │ │ │ ├── EmojiconTextView.java │ │ │ │ │ │ └── emoji/ │ │ │ │ │ │ ├── Emojicon.java │ │ │ │ │ │ ├── Nature.java │ │ │ │ │ │ ├── Objects.java │ │ │ │ │ │ ├── People.java │ │ │ │ │ │ ├── Places.java │ │ │ │ │ │ └── Symbols.java │ │ │ │ │ └── pageView/ │ │ │ │ │ ├── QDEmojiconPagerView.java │ │ │ │ │ ├── QDQQFaceBasePagerView.java │ │ │ │ │ └── QDQQFacePagerView.java │ │ │ │ ├── section/ │ │ │ │ │ ├── QDBaseSectionLayoutFragment.java │ │ │ │ │ ├── QDGridSectionAdapter.java │ │ │ │ │ ├── QDGridSectionLayoutFragment.java │ │ │ │ │ ├── QDListSectionAdapter.java │ │ │ │ │ ├── QDListSectionLayoutFragment.java │ │ │ │ │ ├── QDListWithDecorationSectionAdapter.java │ │ │ │ │ ├── QDListWithDecorationSectionLayoutFragment.java │ │ │ │ │ └── QDSectionLayoutFragment.java │ │ │ │ ├── swipeAction/ │ │ │ │ │ ├── QDRVSwipeActionFragment.java │ │ │ │ │ ├── QDRVSwipeDeleteWithNoActionFragment.java │ │ │ │ │ ├── QDRVSwipeMutiActionFragment.java │ │ │ │ │ ├── QDRVSwipeMutiActionOnlyIconFragment.java │ │ │ │ │ ├── QDRVSwipeMutiActionWithIconFragment.java │ │ │ │ │ ├── QDRVSwipeSingleDeleteActionFragment.java │ │ │ │ │ └── QDRVSwipeUpDeleteFragment.java │ │ │ │ └── viewpager/ │ │ │ │ ├── CardTransformer.java │ │ │ │ ├── QDFitSystemWindowViewPagerFragment.java │ │ │ │ ├── QDLoopViewPagerFragment.java │ │ │ │ └── QDViewPagerFragment.java │ │ │ ├── home/ │ │ │ │ ├── HomeComponentsController.java │ │ │ │ ├── HomeController.java │ │ │ │ ├── HomeFragment.java │ │ │ │ ├── HomeLabController.java │ │ │ │ └── HomeUtilController.java │ │ │ ├── lab/ │ │ │ │ ├── QDAnimationListViewFragment.java │ │ │ │ ├── QDArchNavFragment.java │ │ │ │ ├── QDArchSurfaceTestFragment.java │ │ │ │ ├── QDArchTestFragment.java │ │ │ │ ├── QDArchWebViewTestFragment.java │ │ │ │ ├── QDComposeTipFragment.kt │ │ │ │ ├── QDContinuousBottomView.java │ │ │ │ ├── QDContinuousNestedScroll1Fragment.java │ │ │ │ ├── QDContinuousNestedScroll2Fragment.java │ │ │ │ ├── QDContinuousNestedScroll3Fragment.java │ │ │ │ ├── QDContinuousNestedScroll4Fragment.java │ │ │ │ ├── QDContinuousNestedScroll5Fragment.java │ │ │ │ ├── QDContinuousNestedScroll6Fragment.java │ │ │ │ ├── QDContinuousNestedScroll7Fragment.java │ │ │ │ ├── QDContinuousNestedScroll8Fragment.java │ │ │ │ ├── QDContinuousNestedScrollBaseFragment.java │ │ │ │ ├── QDContinuousNestedScrollFragment.java │ │ │ │ ├── QDEditorFragment.kt │ │ │ │ ├── QDEmojiInputFragment.kt │ │ │ │ ├── QDPhotoClipFragment.kt │ │ │ │ ├── QDPhotoFragment.kt │ │ │ │ ├── QDSchemeFragment.java │ │ │ │ ├── QDSnapHelperFragment.java │ │ │ │ ├── QDSwipeDeleteListViewFragment.java │ │ │ │ ├── QDWebViewBridgeFragment.java │ │ │ │ ├── QDWebViewFixFragment.java │ │ │ │ └── QDWebViewFragment.java │ │ │ └── util/ │ │ │ ├── QDColorHelperFragment.java │ │ │ ├── QDDeviceHelperFragment.java │ │ │ ├── QDDrawableHelperFragment.java │ │ │ ├── QDNotchHelperFragment.java │ │ │ ├── QDSpanFragment.java │ │ │ ├── QDStatusBarHelperFragment.java │ │ │ ├── QDViewHelperAnimationFadeFragment.java │ │ │ ├── QDViewHelperAnimationSlideFragment.java │ │ │ ├── QDViewHelperBackgroundAnimationBlinkFragment.java │ │ │ ├── QDViewHelperBackgroundAnimationFullFragment.java │ │ │ └── QDViewHelperFragment.java │ │ ├── manager/ │ │ │ ├── QDAppGlideModule.kt │ │ │ ├── QDDataManager.java │ │ │ ├── QDPreferenceManager.java │ │ │ ├── QDSchemeManager.kt │ │ │ ├── QDSkinManager.java │ │ │ ├── QDUpgradeManager.java │ │ │ ├── UpgradeTask.java │ │ │ └── UpgradeTipTask.java │ │ ├── model/ │ │ │ ├── CustomEffect.java │ │ │ ├── QDItemDescription.java │ │ │ ├── SectionHeader.java │ │ │ └── SectionItem.java │ │ └── view/ │ │ ├── QDLoadingItemView.java │ │ ├── QDSectionHeaderView.java │ │ ├── QDShadowAdjustLayout.java │ │ └── QDWebView.java │ └── res/ │ ├── color/ │ │ ├── s_app_color_blue_2.xml │ │ ├── s_app_color_blue_3.xml │ │ ├── s_app_color_blue_to_red.xml │ │ ├── s_app_color_gray.xml │ │ ├── s_app_color_gray_dark.xml │ │ ├── s_btn_blue.xml │ │ ├── s_btn_gray.xml │ │ └── s_topbar_btn_color.xml │ ├── drawable/ │ │ ├── icon_popup_close_dark.xml │ │ ├── icon_popup_close_with_bg_dark.xml │ │ ├── icon_quick_action_copy.xml │ │ ├── icon_quick_action_delete_line.xml │ │ ├── icon_quick_action_dict.xml │ │ ├── icon_quick_action_line.xml │ │ ├── icon_quick_action_share.xml │ │ ├── launcher_bg.xml │ │ ├── pager_layout_item_bg.xml │ │ ├── s_app_touch_fix_area_bg.xml │ │ ├── s_list_item_bg_dark_1.xml │ │ ├── s_list_item_bg_dark_2.xml │ │ ├── tab_panel_bg.xml │ │ └── web_explorer_progress.xml │ ├── drawable-night/ │ │ └── launcher_bg.xml │ ├── layout/ │ │ ├── activity_arch_test.xml │ │ ├── activity_translucent.xml │ │ ├── drawablehelper_createfromview.xml │ │ ├── fragment_about.xml │ │ ├── fragment_animation_listview.xml │ │ ├── fragment_arch_test.xml │ │ ├── fragment_button.xml │ │ ├── fragment_collapsing_topbar_layout.xml │ │ ├── fragment_colorhelper.xml │ │ ├── fragment_continuous_nested_scroll.xml │ │ ├── fragment_drawablehelper.xml │ │ ├── fragment_emptyview.xml │ │ ├── fragment_floatlayout.xml │ │ ├── fragment_fsw_viewpager.xml │ │ ├── fragment_grouplistview.xml │ │ ├── fragment_home.xml │ │ ├── fragment_layout.xml │ │ ├── fragment_link_texview_layout.xml │ │ ├── fragment_listview.xml │ │ ├── fragment_loop_viewpager.xml │ │ ├── fragment_notch.xml │ │ ├── fragment_pagerlayoutmanager.xml │ │ ├── fragment_popup.xml │ │ ├── fragment_priority_linear_layout.xml │ │ ├── fragment_progressbar.xml │ │ ├── fragment_pull_horizontal_test_layout.xml │ │ ├── fragment_pull_refresh_and_load_more_test_layout.xml │ │ ├── fragment_pull_refresh_listview.xml │ │ ├── fragment_pull_vertical_test_layout.xml │ │ ├── fragment_qqface_layout.xml │ │ ├── fragment_radius_imageview.xml │ │ ├── fragment_radius_imageview2.xml │ │ ├── fragment_radius_imageview2_scale_type.xml │ │ ├── fragment_radius_imageview_scale_type.xml │ │ ├── fragment_scheme.xml │ │ ├── fragment_section_layout.xml │ │ ├── fragment_slider.xml │ │ ├── fragment_spanhelper.xml │ │ ├── fragment_surface_test.xml │ │ ├── fragment_swipe_delete_listview.xml │ │ ├── fragment_tab_viewpager2_layout.xml │ │ ├── fragment_tab_viewpager_layout.xml │ │ ├── fragment_touch_span_fix_layout.xml │ │ ├── fragment_verticaltextview.xml │ │ ├── fragment_viewhelper_animation_show_and_hide.xml │ │ ├── fragment_viewhelper_background_animation.xml │ │ ├── fragment_webview_explorer.xml │ │ ├── home_item_layout.xml │ │ ├── home_layout.xml │ │ ├── recycler_linear_layout_simple_item.xml │ │ ├── recycler_view_item.xml │ │ ├── simple_list_item.xml │ │ ├── simple_list_item_1.xml │ │ └── tipdialog_custom.xml │ ├── values/ │ │ ├── attr.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── ids.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ └── theme.xml │ └── xml/ │ └── network_security_config.xml ├── settings.gradle.kts └── type/ ├── .gitignore ├── build.gradle.kts └── src/ └── main/ ├── AndroidManifest.xml └── java/ └── com/ └── qmuiteam/ └── qmui/ └── type/ ├── EnvironmentUpdater.kt ├── Line.kt ├── LineIndentHandler.kt ├── LineLayout.kt ├── TypeEnvironment.kt ├── TypeModel.kt ├── element/ │ ├── BreakWordLineElement.kt │ ├── DrawableElement.kt │ ├── Element.kt │ ├── EmojiElement.kt │ ├── IgnoreEffectElement.kt │ ├── NextParagraphElement.kt │ └── TextElement.kt ├── emoji/ │ ├── EmojiModel.kt │ └── EmojiSpan.kt ├── parser/ │ ├── EmojiResourceProvider.kt │ ├── EmojiTextParser.kt │ ├── ParserHelper.kt │ ├── PlainTextParser.kt │ └── TextParser.kt └── view/ ├── BaseTypeView.kt ├── EmojiEditText.kt ├── LineTypeView.kt └── MarqueeTypeView.kt