├── .gitignore ├── LICENSE ├── README.md ├── annotation ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── hyh │ └── annotation │ ├── Builder.java │ └── InjectFragment.java ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── sky │ │ └── hyh │ │ └── customviewsamples │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── HYQiHei-55S.ttf │ │ ├── HYTangMeiRenJ-2.ttf │ │ └── camera_addtext_font_jimu.ttf │ ├── java │ │ └── com │ │ │ └── sky │ │ │ └── hyh │ │ │ └── customviewsamples │ │ │ ├── MainActivity.java │ │ │ ├── NestedChild.java │ │ │ ├── NestedChildHelper.java │ │ │ ├── NestedParent.java │ │ │ ├── User.java │ │ │ ├── adapter │ │ │ └── ContactListAdapter.java │ │ │ ├── constant │ │ │ └── FlexTypeValue.java │ │ │ ├── customview │ │ │ ├── ArcGraphicView.java │ │ │ ├── BaseSplitGridView.java │ │ │ ├── ColorMatrixView.java │ │ │ ├── ConLimitedLinesEditText.java │ │ │ ├── CustomEmojiPanel.java │ │ │ ├── DivideEqualLayout.java │ │ │ ├── DyLimitedLinesEditText.java │ │ │ ├── DynamicRoundTextView.java │ │ │ ├── HappyNewYear2019.java │ │ │ ├── HollowTextView.java │ │ │ ├── HollowTextViewV2.java │ │ │ ├── RoundMaskView.java │ │ │ ├── SpanLineEditText.java │ │ │ ├── StrokeTextView.java │ │ │ ├── StrokeTextViewSimple.java │ │ │ ├── automaitcEditText │ │ │ │ ├── AutoEditText.java │ │ │ │ ├── AutoProcessor.java │ │ │ │ ├── LayoutHelper.java │ │ │ │ └── TextSizeAdjustHelper.java │ │ │ ├── coordinatelayout │ │ │ │ ├── AppBarLayoutBehavior.java │ │ │ │ ├── BaseAppBarLayout.java │ │ │ │ ├── CoordinatePagerAdapter.java │ │ │ │ ├── CustomCoordinateLayout.java │ │ │ │ ├── CustomCoordinateLayout2.java │ │ │ │ ├── CustomRecyclerView.java │ │ │ │ ├── MyAppBarLayout.java │ │ │ │ ├── NestedParentView.java │ │ │ │ ├── RecyclerPagerItem.java │ │ │ │ ├── RootLayout.java │ │ │ │ ├── TabLayoutContainer.java │ │ │ │ └── WhlBehavior.java │ │ │ ├── customviewpager │ │ │ │ ├── CustomViewPager.java │ │ │ │ ├── GraduleTitleViewpager.java │ │ │ │ ├── GraduleTitleViewpagerV2.java │ │ │ │ ├── HorizontalTitleBar.java │ │ │ │ ├── IndicatorLineUtil.java │ │ │ │ ├── PagerItemView.java │ │ │ │ ├── ScrollTabView.java │ │ │ │ └── ViewPagerAdapter.java │ │ │ ├── maskguide │ │ │ │ ├── CircleAnimView.java │ │ │ │ ├── GestureAnimGuideView.java │ │ │ │ └── MaskGuideView.java │ │ │ ├── ratinggridbar │ │ │ │ └── RatingGridView.java │ │ │ └── wrappedContainer │ │ │ │ ├── ContainerView.java │ │ │ │ ├── CustomDrawable.java │ │ │ │ ├── WrappedContainer.java │ │ │ │ └── WrappedContainer2.java │ │ │ ├── danmu │ │ │ ├── BarrageDispatch.java │ │ │ ├── BarrageView.java │ │ │ ├── BarrageViewFactory.java │ │ │ └── BarrageWay.java │ │ │ ├── entity │ │ │ ├── CatAdapter.java │ │ │ ├── CatViewHolder.java │ │ │ ├── FlexAdapter.java │ │ │ ├── FlexModel.java │ │ │ ├── FlexViewHolder.java │ │ │ ├── MobileContactObserver.java │ │ │ ├── MobileContactSingleton.java │ │ │ └── PhoneInfo.java │ │ │ ├── fans │ │ │ └── FpSpan.java │ │ │ ├── fragment │ │ │ └── impl │ │ │ │ ├── AutomaticEditTextFragment.java │ │ │ │ ├── ClipChildrenFragment.java │ │ │ │ ├── ColorMatrixFragment.java │ │ │ │ ├── ConLimitedEditTextFragment.java │ │ │ │ ├── ContactFragment.java │ │ │ │ ├── CoordinatorLayoutFragment.java │ │ │ │ ├── CustomEmojiPanelFragment.java │ │ │ │ ├── DanMuFragment.java │ │ │ │ ├── DyLimitedEditTextFragment.java │ │ │ │ ├── DynamicProxyFragment.java │ │ │ │ ├── DynamicRoundTextViewFragment.java │ │ │ │ ├── FlexBoxLayoutManagerFragment.java │ │ │ │ ├── FpFragment.java │ │ │ │ ├── GraduleTitleViewPagerFragment.java │ │ │ │ ├── HappyNewYear2019Fragment.java │ │ │ │ ├── HollowTextViewFragment.java │ │ │ │ ├── InputFragment.java │ │ │ │ ├── ItemAnimFragment.java │ │ │ │ ├── MaskGuideViewFragment.java │ │ │ │ ├── ProgressFragment.java │ │ │ │ ├── RatingGridViewFragment.java │ │ │ │ ├── RoundMaskViewFragment.java │ │ │ │ ├── ShineTextFragment.java │ │ │ │ ├── SpanFragment.java │ │ │ │ ├── SpanLineEditTextFragment.java │ │ │ │ ├── StrokeTextViewFragment.java │ │ │ │ ├── SwayableLayoutFragment.java │ │ │ │ └── WrappedContainerFragment.java │ │ │ ├── practices │ │ │ └── CustomLifeCircle.java │ │ │ ├── proxy │ │ │ ├── CachedProxy.java │ │ │ ├── ConsumeProxy.java │ │ │ ├── RealSubject.java │ │ │ ├── Subject.java │ │ │ └── ViewClickProxy.java │ │ │ ├── recyclerviewdemo │ │ │ ├── ItemAnimatorAdapter.java │ │ │ └── itemanim │ │ │ │ ├── BaseItemAnimator.java │ │ │ │ ├── FadeItemAnimator.java │ │ │ │ ├── RotateItemAnimator.java │ │ │ │ ├── ScaleItemAnimator.java │ │ │ │ └── SlideItemAnimator.java │ │ │ ├── span │ │ │ ├── CustomTextSpan.java │ │ │ ├── TypeConfig.java │ │ │ └── spandata │ │ │ │ ├── BaseSpanData.java │ │ │ │ └── CustomSpanData.java │ │ │ └── utils │ │ │ ├── ContactUtil.java │ │ │ ├── LongClickHelper.java │ │ │ └── SwayTwoLayoutAnimHolder.java │ └── res │ │ ├── drawable-v24 │ │ ├── ic_launcher_foreground.xml │ │ └── p2.png │ │ ├── drawable-xhdpi │ │ ├── lighting_1.png │ │ ├── lighting_10.png │ │ ├── lighting_11.png │ │ ├── lighting_12.png │ │ ├── lighting_13.png │ │ ├── lighting_14.png │ │ ├── lighting_15.png │ │ ├── lighting_16.png │ │ ├── lighting_17.png │ │ ├── lighting_18.png │ │ ├── lighting_19.png │ │ ├── lighting_2.png │ │ ├── lighting_20.png │ │ ├── lighting_21.png │ │ ├── lighting_22.png │ │ ├── lighting_23.png │ │ ├── lighting_24.png │ │ ├── lighting_25.png │ │ ├── lighting_26.png │ │ ├── lighting_27.png │ │ ├── lighting_28.png │ │ ├── lighting_29.png │ │ ├── lighting_3.png │ │ ├── lighting_30.png │ │ ├── lighting_31.png │ │ ├── lighting_32.png │ │ ├── lighting_33.png │ │ ├── lighting_34.png │ │ ├── lighting_35.png │ │ ├── lighting_36.png │ │ ├── lighting_37.png │ │ ├── lighting_38.png │ │ ├── lighting_39.png │ │ ├── lighting_4.png │ │ ├── lighting_40.png │ │ ├── lighting_41.png │ │ ├── lighting_42.png │ │ ├── lighting_43.png │ │ ├── lighting_44.png │ │ ├── lighting_45.png │ │ ├── lighting_46.png │ │ ├── lighting_47.png │ │ ├── lighting_48.png │ │ ├── lighting_49.png │ │ ├── lighting_5.png │ │ ├── lighting_50.png │ │ ├── lighting_51.png │ │ ├── lighting_52.png │ │ ├── lighting_53.png │ │ ├── lighting_54.png │ │ ├── lighting_55.png │ │ ├── lighting_56.png │ │ ├── lighting_57.png │ │ ├── lighting_58.png │ │ ├── lighting_59.png │ │ ├── lighting_6.png │ │ ├── lighting_60.png │ │ ├── lighting_61.png │ │ ├── lighting_62.png │ │ ├── lighting_63.png │ │ ├── lighting_64.png │ │ ├── lighting_65.png │ │ ├── lighting_66.png │ │ ├── lighting_67.png │ │ ├── lighting_68.png │ │ ├── lighting_69.png │ │ ├── lighting_7.png │ │ ├── lighting_70.png │ │ ├── lighting_71.png │ │ ├── lighting_72.png │ │ ├── lighting_73.png │ │ ├── lighting_74.png │ │ ├── lighting_75.png │ │ ├── lighting_76.png │ │ ├── lighting_77.png │ │ ├── lighting_8.png │ │ └── lighting_9.png │ │ ├── drawable-xxhdpi │ │ ├── fx_ic_star_grey.png │ │ ├── fx_ic_star_light.png │ │ └── fx_pub_img_pointer.png │ │ ├── drawable │ │ ├── bg_1.png │ │ ├── bg_warm.jpg │ │ ├── btn_more.png │ │ ├── cat_1.jpg │ │ ├── cat_10.jpg │ │ ├── cat_11.jpg │ │ ├── cat_12.jpg │ │ ├── cat_13.jpg │ │ ├── cat_14.jpg │ │ ├── cat_15.jpg │ │ ├── cat_16.jpg │ │ ├── cat_17.jpg │ │ ├── cat_18.jpg │ │ ├── cat_19.jpg │ │ ├── cat_2.jpg │ │ ├── cat_3.jpg │ │ ├── cat_4.jpg │ │ ├── cat_5.jpg │ │ ├── cat_6.jpg │ │ ├── cat_7.jpg │ │ ├── cat_8.jpg │ │ ├── cat_9.jpg │ │ ├── dynamic_round_bg_selector.xml │ │ ├── flower.jpg │ │ ├── ic_launcher_background.xml │ │ ├── image_1.png │ │ ├── input_edittext_bg_selector.xml │ │ ├── p1.png │ │ ├── progress1.png │ │ ├── progressbar_bg1.xml │ │ ├── progressbar_bg2.xml │ │ ├── round_bg.xml │ │ └── stroke_circle_bg.xml │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── adapter_item_animator.xml │ │ ├── container_coordinate_layout.xml │ │ ├── container_coordinate_layout_2.xml │ │ ├── container_nested_parent_layout.xml │ │ ├── container_tab_layout.xml │ │ ├── fragment_automatic_edittext.xml │ │ ├── fragment_clipchildren.xml │ │ ├── fragment_colormatrix.xml │ │ ├── fragment_con_limited_edittext.xml │ │ ├── fragment_contact.xml │ │ ├── fragment_coordinatorlayout.xml │ │ ├── fragment_custom_emoji_panel.xml │ │ ├── fragment_danmu.xml │ │ ├── fragment_dy_limited_edittext.xml │ │ ├── fragment_dynamic_proxy.xml │ │ ├── fragment_dynamic_round_textview.xml │ │ ├── fragment_f.xml │ │ ├── fragment_flexboxlayout_manager.xml │ │ ├── fragment_gesture_anim_guide_view.xml │ │ ├── fragment_gradule_title_view_pager.xml │ │ ├── fragment_happy_new_2019.xml │ │ ├── fragment_hollow_textview.xml │ │ ├── fragment_input.xml │ │ ├── fragment_item_animator.xml │ │ ├── fragment_maskguideview.xml │ │ ├── fragment_progress.xml │ │ ├── fragment_rating_grid_view.xml │ │ ├── fragment_round_mask_view.xml │ │ ├── fragment_shine_text.xml │ │ ├── fragment_span.xml │ │ ├── fragment_spanline_edittext.xml │ │ ├── fragment_stroke_text_view.xml │ │ ├── fragment_swayable_layout.xml │ │ ├── fragment_wrapped_container.xml │ │ ├── gradule_title_view_pager_layout.xml │ │ ├── gradule_title_view_pager_layout_v2.xml │ │ ├── item_contact.xml │ │ ├── item_danmu.xml │ │ ├── layout_appbarlayout_container.xml │ │ ├── layout_recycler_pager_item.xml │ │ ├── stag_item_tail.xml │ │ ├── staggerd_layout_1.xml │ │ ├── staggerd_layout_2.xml │ │ ├── staggerd_layout_3.xml │ │ └── viewholder_cat.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── sky │ └── hyh │ └── customviewsamples │ └── ExampleUnitTest.java ├── base_lib ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── hyh │ │ └── base_lib │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── hyh │ │ │ └── base_lib │ │ │ ├── BaseFragment.java │ │ │ ├── BaseFragmentFactory.java │ │ │ ├── MyApplication.java │ │ │ ├── adapter │ │ │ ├── BaseViewHolder.java │ │ │ └── DataListAdapter.java │ │ │ ├── annotation │ │ │ └── FindViewByIdAno.java │ │ │ └── utils │ │ │ ├── ColorUtils.java │ │ │ ├── InjectUtil.java │ │ │ ├── RectUtil.java │ │ │ ├── SizeUtils.java │ │ │ └── TransformUtils.java │ └── res │ │ ├── layout │ │ └── item_layout.xml │ │ └── values │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── hyh │ └── base_lib │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── img-folder ├── ConLimitedLinesEditText.gif ├── DynamicRoundTextView.gif ├── HappyNewYear2019-1.gif ├── HappyNewYear2019-2.gif ├── HappyNewYear2019-3.gif ├── LimitedEditText2.gif ├── QQ图片20181207231008.gif ├── Screenshot_20180918-234447_customview-samples.jpg ├── auto.gif ├── cordinator.gif ├── graduletitleviewpager.gif ├── hollowview2.jpg ├── limitedEditText1.gif ├── mask.gif ├── maskview.jpg ├── strokeTextView.jpg ├── videotogif_2018.09.18_23.49.53.gif └── videotogif_2018.09.24_01.06.20.gif ├── ioc_compile ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── hyh │ └── ioc_compile │ └── processor │ ├── BuilderProcessor.java │ ├── Helper.java │ └── InjectProcessor.java └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # IntelliJ 36 | *.iml 37 | .idea/workspace.xml 38 | .idea/tasks.xml 39 | .idea/gradle.xml 40 | .idea/assetWizardSettings.xml 41 | .idea/dictionaries 42 | .idea/libraries 43 | .idea/caches 44 | 45 | # Keystore files 46 | # Uncomment the following line if you do not want to check your keystore files in. 47 | #*.jks 48 | 49 | # External native build folder generated in Android Studio 2.2 and later 50 | .externalNativeBuild 51 | 52 | # Google Services (e.g. APIs or Firebase) 53 | google-services.json 54 | 55 | # Freeline 56 | freeline.py 57 | freeline/ 58 | freeline_project_description.json 59 | 60 | # fastlane 61 | fastlane/report.xml 62 | fastlane/Preview.html 63 | fastlane/screenshots 64 | fastlane/test_output 65 | fastlane/readme.md 66 | 67 | .idea/ 68 | target/ 69 | -------------------------------------------------------------------------------- /annotation/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /annotation/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java-library' 2 | 3 | dependencies { 4 | implementation fileTree(dir: 'libs', include: ['*.jar']) 5 | } 6 | 7 | sourceCompatibility = "7" 8 | targetCompatibility = "7" 9 | -------------------------------------------------------------------------------- /annotation/src/main/java/com/hyh/annotation/Builder.java: -------------------------------------------------------------------------------- 1 | package com.hyh.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.TYPE) 9 | @Retention(RetentionPolicy.SOURCE) 10 | public @interface Builder { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /annotation/src/main/java/com/hyh/annotation/InjectFragment.java: -------------------------------------------------------------------------------- 1 | package com.hyh.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.TYPE) 9 | @Retention(RetentionPolicy.CLASS) 10 | public @interface InjectFragment { 11 | } 12 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion rootProject.ext.vcompileSdkVersion 5 | defaultConfig { 6 | applicationId "com.lmy.hyh.customviewdemo" 7 | minSdkVersion rootProject.ext.vminSdkVersion 8 | targetSdkVersion rootProject.ext.vtargetSdkVersion 9 | versionCode rootProject.ext.versionCode 10 | versionName rootProject.ext.versionName 11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 12 | } 13 | 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | 21 | compileOptions { 22 | sourceCompatibility JavaVersion.VERSION_1_8 23 | targetCompatibility JavaVersion.VERSION_1_8 24 | } 25 | } 26 | 27 | dependencies { 28 | implementation fileTree(include: ['*.jar'], dir: 'libs') 29 | implementation 'com.android.support.constraint:constraint-layout:1.1.3' 30 | testImplementation 'junit:junit:4.12' 31 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 32 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 33 | implementation 'com.facebook.rebound:rebound:0.3.8' 34 | implementation 'com.googlecode.libphonenumber:libphonenumber:8.2.0' 35 | implementation 'com.android.support:design:26.0.0' 36 | implementation 'com.google.android:flexbox:1.0.0' 37 | api project(path: ':base_lib') 38 | implementation project(':annotation') 39 | annotationProcessor project(':ioc_compile') 40 | } 41 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/sky/hyh/customviewsamples/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.lmy.hyh.customviewdemo", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/assets/HYQiHei-55S.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/assets/HYQiHei-55S.ttf -------------------------------------------------------------------------------- /app/src/main/assets/HYTangMeiRenJ-2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/assets/HYTangMeiRenJ-2.ttf -------------------------------------------------------------------------------- /app/src/main/assets/camera_addtext_font_jimu.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/assets/camera_addtext_font_jimu.ttf -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/User.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples; 2 | 3 | import com.hyh.annotation.Builder; 4 | 5 | /** 6 | * Created by zhuhean on 02/11/2017. 7 | */ 8 | 9 | @Builder 10 | public class User { 11 | 12 | String firstName; 13 | String lastName; 14 | String nickName; 15 | int age; 16 | 17 | public String getFirstName() { 18 | return firstName; 19 | } 20 | 21 | public String getLastName() { 22 | return lastName; 23 | } 24 | 25 | public String getNickName() { 26 | return nickName; 27 | } 28 | 29 | public int getAge() { 30 | return age; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/constant/FlexTypeValue.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.constant; 2 | 3 | /** 4 | * created by hyh on 2019/4/3 5 | */ 6 | public class FlexTypeValue { 7 | public static final int ITEM_TYPE_1 = 0; 8 | public static final int ITEM_TYPE_2 = 1; 9 | public static final int ITEM_TYPE_3 = 2; 10 | public static final int ITEM_TYPE_4 = 3; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/customview/ConLimitedLinesEditText.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.customview; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.AppCompatEditText; 5 | import android.text.Editable; 6 | import android.text.TextWatcher; 7 | import android.util.AttributeSet; 8 | 9 | /** 10 | * 可以限制最大输入行数的EditText,文本宽度固定 11 | * 当输入的文字大于最大行数时会自动截断多余的文字, 12 | * 截断过程不会触发视图重绘,用户无感知,达到完美体验 13 | */ 14 | public class ConLimitedLinesEditText extends AppCompatEditText { 15 | public static final int MAX_INPUT_LINES = 3; 16 | 17 | public ConLimitedLinesEditText(Context context) { 18 | this(context,null); 19 | } 20 | 21 | public ConLimitedLinesEditText(Context context, AttributeSet attrs) { 22 | super(context, attrs); 23 | initViews(); 24 | initListeners(); 25 | } 26 | 27 | private void initViews() { 28 | requestFocus(); 29 | } 30 | 31 | private void initListeners() { 32 | addTextChangedListener(new TextWatcher() { 33 | @Override 34 | public void beforeTextChanged(CharSequence s, int start, int count, int after) { 35 | 36 | } 37 | 38 | @Override 39 | public void onTextChanged(CharSequence s, int start, int before, int count) { 40 | int lineCount = getLineCount(); 41 | if (lineCount > MAX_INPUT_LINES) { 42 | //发现输入的内容大于最大行数,则删除多余的内容 43 | deleteExtra(); 44 | } 45 | } 46 | 47 | @Override 48 | public void afterTextChanged(Editable s) { 49 | 50 | } 51 | }); 52 | } 53 | 54 | private void deleteExtra() { 55 | String str = getText().toString(); 56 | str = str.substring(0, str.length() - 1); 57 | setText(str); 58 | setSelection(getText().length()); 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/customview/DivideEqualLayout.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.customview; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.Nullable; 5 | import android.util.AttributeSet; 6 | import android.util.Log; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.FrameLayout; 10 | 11 | /** 12 | * created by curdyhuang on 2021/11/22 13 | * 平分子视图 14 | */ 15 | public class DivideEqualLayout extends FrameLayout { 16 | 17 | public DivideEqualLayout(Context context) { 18 | this(context,null); 19 | } 20 | 21 | public DivideEqualLayout(Context context, @Nullable AttributeSet attrs) { 22 | super(context, attrs); 23 | } 24 | 25 | @Override 26 | protected void onSizeChanged(int w, int h, int oldw, int oldh) { 27 | Log.d("hyh","DivideEqualLayout: onSizeChanged: "); 28 | if (oldw!=w||oldh!=h){ 29 | //不加post的话setLayoutParams没有效果 30 | post(new Runnable() { 31 | @Override 32 | public void run() { 33 | divideLayout(w,h); 34 | } 35 | }); 36 | } 37 | } 38 | 39 | private void divideLayout(int width, int height){ 40 | Log.d("hyh","DivideEqualLayout: divideLayout: width="+width+" ,height="+height); 41 | int count = getChildCount(); 42 | int childW = (int) (width*1f/count); 43 | for (int i=0;i mDataList; 16 | 17 | public ViewPagerAdapter(Context context, List dataList){ 18 | mContext=context; 19 | mDataList = dataList; 20 | } 21 | 22 | @Override 23 | public int getCount() { 24 | if(mDataList == null){ 25 | return 0; 26 | } 27 | return mDataList.size(); 28 | } 29 | 30 | @Override 31 | public boolean isViewFromObject(@NonNull View view, @NonNull Object o) { 32 | return view==o; 33 | } 34 | 35 | @NonNull 36 | @Override 37 | public View instantiateItem(@NonNull ViewGroup container, int position) { 38 | PagerItemView pagerItemView = new PagerItemView(mContext); 39 | String color = mDataList.get(position); 40 | pagerItemView.setBackgroundColor(Color.parseColor(color)); 41 | container.addView(pagerItemView,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 42 | ViewGroup.LayoutParams.MATCH_PARENT)); 43 | return pagerItemView; 44 | } 45 | 46 | @Override 47 | public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { 48 | PagerItemView itemView = (PagerItemView) object; 49 | container.removeView(itemView); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/customview/wrappedContainer/ContainerView.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.customview.wrappedContainer; 2 | 3 | import android.content.Context; 4 | import android.graphics.Canvas; 5 | import android.support.annotation.Nullable; 6 | import android.util.AttributeSet; 7 | import android.view.View; 8 | import com.hyh.base_lib.utils.SizeUtils; 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | 12 | /** 13 | * Created by hyh on 2019/3/18 14:30 14 | * E-Mail Address:fjnuhyh122@gmail.com 15 | */ 16 | public class ContainerView extends View { 17 | private List mDrawableList; 18 | 19 | public ContainerView(Context context) { 20 | this(context,null); 21 | } 22 | 23 | public ContainerView(Context context, @Nullable AttributeSet attrs) { 24 | super(context, attrs); 25 | init(); 26 | } 27 | 28 | private void init(){ 29 | mDrawableList = new ArrayList<>(); 30 | } 31 | 32 | @Override 33 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 34 | super.onMeasure(widthMeasureSpec, heightMeasureSpec); 35 | } 36 | 37 | @Override 38 | protected void onDraw(Canvas canvas) { 39 | for(CustomDrawable customDrawable: mDrawableList){ 40 | customDrawable.draw(canvas); 41 | } 42 | } 43 | 44 | public List getDrawableList() { 45 | return mDrawableList; 46 | } 47 | 48 | public void setCurTouchDrawable(CustomDrawable curTouchDrawable) { 49 | mDrawableList.remove(curTouchDrawable); 50 | mDrawableList.add(curTouchDrawable); 51 | } 52 | 53 | public void addDrawable(){ 54 | CustomDrawable customDrawable = new CustomDrawable(getContext()); 55 | customDrawable.setX(SizeUtils.dp2px(200)); 56 | customDrawable.setY(SizeUtils.dp2px(200)); 57 | mDrawableList.add(customDrawable); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/customview/wrappedContainer/CustomDrawable.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.customview.wrappedContainer; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.graphics.BitmapFactory; 6 | import android.graphics.Canvas; 7 | import android.graphics.ColorFilter; 8 | import android.graphics.Paint; 9 | import android.graphics.PixelFormat; 10 | import android.graphics.Rect; 11 | import android.graphics.drawable.Drawable; 12 | import android.support.annotation.NonNull; 13 | import android.support.annotation.Nullable; 14 | import com.sky.hyh.customviewsamples.R; 15 | 16 | /** 17 | * Created by hyh on 2019/3/18 14:59 18 | * E-Mail Address:fjnuhyh122@gmail.com 19 | */ 20 | public class CustomDrawable extends Drawable { 21 | private int mX; 22 | private int mY; 23 | private final Rect mDstRect = new Rect(); 24 | private Paint mPaint; 25 | private Bitmap mBitmap; 26 | private Context mContext; 27 | 28 | public CustomDrawable(Context context) { 29 | mContext = context; 30 | mBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.p1); 31 | mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 32 | } 33 | 34 | @Override 35 | public void draw(@NonNull Canvas canvas) { 36 | updateDstRect(); 37 | canvas.drawBitmap(mBitmap, null, mDstRect, mPaint); 38 | } 39 | 40 | @Override 41 | public void setAlpha(int alpha) { 42 | 43 | } 44 | 45 | @Override 46 | public void setColorFilter(@Nullable ColorFilter colorFilter) { 47 | 48 | } 49 | 50 | @Override 51 | public int getOpacity() { 52 | return PixelFormat.TRANSLUCENT; 53 | } 54 | 55 | public int getX() { 56 | return mX; 57 | } 58 | 59 | public void setX(int x) { 60 | mX = x; 61 | setBounds(mX,mY,mX+getIntrinsicWidth(),mY+getIntrinsicHeight()); 62 | } 63 | 64 | public int getY() { 65 | return mY; 66 | } 67 | 68 | public void setY(int y) { 69 | mY = y; 70 | setBounds(mX,mY,mX+getIntrinsicWidth(),mY+getIntrinsicHeight()); 71 | } 72 | 73 | @Override 74 | public int getIntrinsicWidth() { 75 | return mBitmap.getWidth(); 76 | } 77 | 78 | @Override 79 | public int getIntrinsicHeight() { 80 | return mBitmap.getHeight(); 81 | } 82 | 83 | private void updateDstRect(){ 84 | copyBounds(mDstRect); 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/danmu/BarrageDispatch.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.danmu; 2 | 3 | import android.content.Context; 4 | import android.view.ViewGroup; 5 | import android.widget.FrameLayout; 6 | 7 | import com.sky.hyh.customviewsamples.R; 8 | 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | 12 | /** 13 | * 弹幕分发器,用于控制弹幕该发往哪个弹道 14 | */ 15 | public class BarrageDispatch { 16 | private int mIndex = -1; 17 | private List mBarrageWayList = new ArrayList<>(); 18 | private BarrageViewFactory mFactory;//弹幕工厂 19 | 20 | public BarrageDispatch(Context context) { 21 | mFactory = new BarrageViewFactory(context); 22 | } 23 | 24 | /** 25 | * 添加弹道 26 | */ 27 | public void addBarrageWay(ViewGroup group){ 28 | mBarrageWayList.add(new BarrageWay(group,mFactory)); 29 | } 30 | 31 | /** 32 | * 弹幕分发 33 | */ 34 | public void dispatch(BarrageWay.BarrageItem item){ 35 | if(item == null||mBarrageWayList.size()<=0){ 36 | return; 37 | } 38 | mIndex++; 39 | int size = mBarrageWayList.size(); 40 | BarrageWay way = mBarrageWayList.get(mIndex%size); 41 | way.addBarrage(item); 42 | } 43 | 44 | public void clear(){ 45 | for (BarrageWay way: mBarrageWayList){ 46 | way.clear(); 47 | } 48 | mFactory.clear(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/danmu/BarrageView.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.danmu; 2 | 3 | import android.content.Context; 4 | import android.text.TextUtils; 5 | import android.util.AttributeSet; 6 | import android.widget.ImageView; 7 | import android.widget.RelativeLayout; 8 | import android.widget.TextView; 9 | 10 | import com.hyh.base_lib.utils.SizeUtils; 11 | import com.sky.hyh.customviewsamples.R; 12 | 13 | /** 14 | * created by curdyhuang on 2020/11/24 15 | * 弹幕控件 16 | */ 17 | public class BarrageView extends RelativeLayout { 18 | public static final int RES_ID = R.layout.item_danmu; 19 | private ImageView mIvHead; 20 | private TextView mTvContent; 21 | 22 | public BarrageView(Context context) { 23 | this(context,null); 24 | } 25 | 26 | public BarrageView(Context context, AttributeSet attrs) { 27 | super(context, attrs); 28 | } 29 | 30 | @Override 31 | protected void onFinishInflate() { 32 | super.onFinishInflate(); 33 | initViews(); 34 | } 35 | 36 | private void initViews(){ 37 | mIvHead = findViewById(R.id.iv_head); 38 | mTvContent = findViewById(R.id.tv_content); 39 | } 40 | 41 | public void setData(BarrageWay.BarrageItem item){ 42 | if(item == null){ 43 | return; 44 | } 45 | int dp35 = SizeUtils.dp2px(35); 46 | int dp8 = SizeUtils.dp2px(8); 47 | mTvContent.setText(item.getContent()); 48 | if(TextUtils.isEmpty(item.getIcon())){ 49 | mIvHead.setVisibility(GONE); 50 | mTvContent.setPadding(dp8,getPaddingTop(),dp8,getPaddingBottom()); 51 | }else{ 52 | mIvHead.setVisibility(VISIBLE); 53 | mTvContent.setPadding(dp35,getPaddingTop(),dp8,getPaddingBottom()); 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/entity/CatAdapter.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.entity; 2 | 3 | import android.support.annotation.NonNull; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | 9 | import com.sky.hyh.customviewsamples.R; 10 | 11 | import java.util.ArrayList; 12 | import java.util.List; 13 | 14 | /** 15 | * created by hyh on 2019/4/3 16 | */ 17 | public class CatAdapter extends RecyclerView.Adapter { 18 | private List mDataList = new ArrayList<>(); 19 | // private int[] CAT_IMAGE_IDS = new int[]{ 20 | // R.drawable.cat_1, 21 | // R.drawable.cat_2, 22 | // R.drawable.cat_3, 23 | // R.drawable.cat_4, 24 | // R.drawable.cat_5, 25 | // R.drawable.cat_6, 26 | // R.drawable.cat_7, 27 | // R.drawable.cat_8, 28 | // R.drawable.cat_9, 29 | // R.drawable.cat_10, 30 | // R.drawable.cat_11, 31 | // R.drawable.cat_12, 32 | // R.drawable.cat_13, 33 | // R.drawable.cat_14, 34 | // R.drawable.cat_15, 35 | // R.drawable.cat_16, 36 | // R.drawable.cat_17, 37 | // R.drawable.cat_18, 38 | // R.drawable.cat_19 39 | // }; 40 | 41 | 42 | public CatAdapter(List mDataList) { 43 | this.mDataList = mDataList; 44 | } 45 | 46 | public CatAdapter() { 47 | } 48 | 49 | @NonNull 50 | @Override 51 | public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { 52 | View view = LayoutInflater.from(viewGroup.getContext()) 53 | .inflate(R.layout.viewholder_cat, viewGroup, false); 54 | return new CatViewHolder(view); 55 | } 56 | 57 | @Override 58 | public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) { 59 | ((CatViewHolder)viewHolder).setData(mDataList.get(i)); 60 | } 61 | 62 | @Override 63 | public int getItemCount() { 64 | return mDataList.size(); 65 | } 66 | 67 | public void setDataList(List mDataList) { 68 | this.mDataList = mDataList; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/entity/CatViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.entity; 2 | 3 | import android.support.annotation.NonNull; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.ImageView; 8 | 9 | import com.google.android.flexbox.FlexboxLayoutManager; 10 | import com.sky.hyh.customviewsamples.R; 11 | 12 | /** 13 | * created by hyh on 2019/4/3 14 | */ 15 | public class CatViewHolder extends RecyclerView.ViewHolder { 16 | private ImageView mIvImg; 17 | 18 | public CatViewHolder(@NonNull View itemView) { 19 | super(itemView); 20 | mIvImg = (ImageView) itemView; 21 | mIvImg = itemView.findViewById(R.id.imageview); 22 | } 23 | 24 | public void setData(int drawableId){ 25 | mIvImg.setImageResource(drawableId); 26 | ViewGroup.LayoutParams layoutParams = mIvImg.getLayoutParams(); 27 | if(layoutParams instanceof FlexboxLayoutManager.LayoutParams){ 28 | ((FlexboxLayoutManager.LayoutParams) layoutParams).setFlexGrow(1); 29 | } 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/entity/FlexModel.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.entity; 2 | 3 | /** 4 | * created by hyh on 2019/4/3 5 | */ 6 | public class FlexModel { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/entity/FlexViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.entity; 2 | 3 | import android.support.annotation.NonNull; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.View; 6 | 7 | /** 8 | * created by hyh on 2019/4/3 9 | */ 10 | public class FlexViewHolder extends RecyclerView.ViewHolder { 11 | 12 | public FlexViewHolder(@NonNull View itemView) { 13 | super(itemView); 14 | } 15 | 16 | public void setData(FlexModel flexModel,int itemType){ 17 | 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/entity/MobileContactObserver.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.entity; 2 | 3 | import android.database.ContentObserver; 4 | import android.os.Handler; 5 | import android.util.Log; 6 | import java.util.List; 7 | 8 | /** 9 | * Created by hyh on 2019/1/3 17:14 10 | * E-Mail Address:fjnuhyh122@gmail.com 11 | */ 12 | public class MobileContactObserver extends ContentObserver { 13 | /** 14 | * Creates a content observer. 15 | * 16 | * @param handler The handler to run {@link #onChange} on, or null if none. 17 | */ 18 | public MobileContactObserver(Handler handler) { 19 | super(handler); 20 | } 21 | 22 | @Override 23 | public void onChange(boolean selfChange) { 24 | //通讯录改变,获取改变的数据 25 | List phoneInfoList = MobileContactSingleton.getInstance().getMobileContactIncremental(); 26 | for(PhoneInfo phoneInfo: phoneInfoList){ 27 | Log.d("hyh", "MobileContactObserver: onChange: phoneInfo="+phoneInfo.toString()); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/entity/PhoneInfo.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.entity; 2 | 3 | /** 4 | * Created by hyh on 2019/1/2 16:31 5 | * E-Mail Address:fjnuhyh122@gmail.com 6 | */ 7 | public class PhoneInfo { 8 | private String mContactId; 9 | /** 10 | * 联系人版本,联系人信息更改版本也会改变,根据该字段来判断联系人信息是否更新 11 | */ 12 | private String mVersion; 13 | private String mName; 14 | private String mPhoneNum; 15 | public boolean mChanged; 16 | 17 | public PhoneInfo(String version, String phoneNum) { 18 | mVersion = version; 19 | mPhoneNum = phoneNum; 20 | } 21 | 22 | public PhoneInfo(String contactId, String version, String name, String phoneNum) { 23 | mContactId = contactId; 24 | mVersion = version; 25 | mName = name; 26 | mPhoneNum = phoneNum; 27 | } 28 | 29 | public String getName() { 30 | return mName; 31 | } 32 | 33 | public void setName(String name) { 34 | mName = name; 35 | } 36 | 37 | public String getPhoneNum() { 38 | return mPhoneNum; 39 | } 40 | 41 | public void setPhoneNum(String phoneNum) { 42 | mPhoneNum = phoneNum; 43 | } 44 | 45 | public String getContactId() { 46 | return mContactId; 47 | } 48 | 49 | public void setContactId(String contactId) { 50 | mContactId = contactId; 51 | } 52 | 53 | public String getVersion() { 54 | return mVersion; 55 | } 56 | 57 | public void setVersion(String version) { 58 | mVersion = version; 59 | } 60 | 61 | @Override 62 | public String toString() { 63 | return "PhoneInfo{" + 64 | "mContactId='" + mContactId + '\'' + 65 | ", mVersion='" + mVersion + '\'' + 66 | ", mName='" + mName + '\'' + 67 | ", mPhoneNum='" + mPhoneNum + '\'' + 68 | ", mChanged=" + mChanged + 69 | '}'; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/fragment/impl/AutomaticEditTextFragment.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.fragment.impl; 2 | 3 | import android.view.View; 4 | 5 | import com.hyh.annotation.InjectFragment; 6 | import com.hyh.base_lib.annotation.FindViewByIdAno; 7 | import com.hyh.base_lib.BaseFragment; 8 | import com.sky.hyh.customviewsamples.R; 9 | import com.sky.hyh.customviewsamples.customview.automaitcEditText.AutoEditText; 10 | 11 | /** 12 | * Created by hyh on 2019/2/26 15:49 13 | * E-Mail Address:fjnuhyh122@gmail.com 14 | */ 15 | @InjectFragment() 16 | public class AutomaticEditTextFragment extends BaseFragment { 17 | @FindViewByIdAno(R.id.aet_input) 18 | private AutoEditText mAutomaticEditText; 19 | 20 | @Override 21 | protected int getResId() { 22 | return R.layout.fragment_automatic_edittext; 23 | } 24 | 25 | @Override 26 | protected void initViews(View rootView) { 27 | mAutomaticEditText.requestFocus(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/fragment/impl/ClipChildrenFragment.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.fragment.impl; 2 | 3 | import android.view.View; 4 | 5 | import com.hyh.base_lib.BaseFragment; 6 | import com.sky.hyh.customviewsamples.R; 7 | 8 | /** 9 | * 1.android:clipChildren必须设置在祖父布局上,也就是要想让某个view在该view的父布局外显示,那么clipChildren需要在该view的父布局的父布局设置,也就是他的祖父布局上。 10 | * 2.android:clipChildren只有在祖父布局为其父布局有留下足够的显示空间才能生效。比如某个view的父布局高度是50dp,他的祖父布局高度也是50dp,那么设置android:clipChildren属性后 11 | * 也是没办法让该veiw在父布局之外显示的,因为其父布局之外已经没有其他空间了。 12 | */ 13 | public class ClipChildrenFragment extends BaseFragment { 14 | @Override 15 | protected int getResId() { 16 | return R.layout.fragment_clipchildren; 17 | } 18 | 19 | @Override 20 | protected void initViews(View rootView) { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/fragment/impl/ConLimitedEditTextFragment.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.fragment.impl; 2 | 3 | import android.view.View; 4 | 5 | import com.hyh.annotation.InjectFragment; 6 | import com.hyh.base_lib.BaseFragment; 7 | import com.sky.hyh.customviewsamples.R; 8 | @InjectFragment() 9 | public class ConLimitedEditTextFragment extends BaseFragment { 10 | @Override 11 | protected int getResId() { 12 | return R.layout.fragment_con_limited_edittext; 13 | } 14 | 15 | @Override 16 | protected void initViews(View rootView) { 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/fragment/impl/CoordinatorLayoutFragment.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.fragment.impl; 2 | 3 | import android.view.View; 4 | import android.widget.Button; 5 | 6 | import com.hyh.annotation.InjectFragment; 7 | import com.hyh.base_lib.BaseFragment; 8 | import com.sky.hyh.customviewsamples.R; 9 | import com.sky.hyh.customviewsamples.customview.coordinatelayout.RootLayout; 10 | 11 | /** 12 | * created by hyh on 2019/4/4 13 | */ 14 | @InjectFragment() 15 | public class CoordinatorLayoutFragment extends BaseFragment { 16 | private RootLayout mRootLayout; 17 | private Button mBtnSwitch; 18 | 19 | @Override 20 | protected int getResId() { 21 | return R.layout.fragment_coordinatorlayout; 22 | } 23 | 24 | @Override 25 | protected void initViews(View rootView) { 26 | mRootLayout = rootView.findViewById(R.id.root); 27 | mBtnSwitch = findViewById(R.id.btn_switch); 28 | mBtnSwitch.setOnClickListener(new View.OnClickListener() { 29 | @Override 30 | public void onClick(View v) { 31 | mRootLayout.updateView(!mRootLayout.isHaveList()); 32 | } 33 | }); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/fragment/impl/CustomEmojiPanelFragment.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.fragment.impl; 2 | 3 | import android.content.Context; 4 | import android.os.Bundle; 5 | import android.support.annotation.Nullable; 6 | import android.util.Log; 7 | import android.view.View; 8 | 9 | import com.hyh.annotation.InjectFragment; 10 | import com.hyh.base_lib.BaseFragment; 11 | import com.sky.hyh.customviewsamples.R; 12 | @InjectFragment() 13 | public class CustomEmojiPanelFragment extends BaseFragment { 14 | public static final int RES_ID = R.layout.fragment_custom_emoji_panel; 15 | @Override 16 | public void onAttach(Context context) { 17 | super.onAttach(context); 18 | Log.d("hyh", "CustomEmojiPanelFragment: onAttach"); 19 | } 20 | 21 | @Override 22 | public void onCreate(@Nullable Bundle savedInstanceState) { 23 | super.onCreate(savedInstanceState); 24 | Log.d("hyh", "CustomEmojiPanelFragment: onCreate"); 25 | } 26 | 27 | @Override 28 | protected int getResId() { 29 | return RES_ID; 30 | } 31 | 32 | @Override 33 | protected void initViews(View rootView) { 34 | 35 | } 36 | 37 | @Override 38 | public void onActivityCreated(@Nullable Bundle savedInstanceState) { 39 | super.onActivityCreated(savedInstanceState); 40 | Log.d("hyh", "CustomEmojiPanelFragment: onActivityCreated "); 41 | } 42 | 43 | @Override 44 | public void onStart() { 45 | super.onStart(); 46 | Log.d("hyh", "CustomEmojiPanelFragment: onStart "); 47 | } 48 | 49 | @Override 50 | public void onResume() { 51 | super.onResume(); 52 | Log.d("hyh", "CustomEmojiPanelFragment: onResume "); 53 | } 54 | 55 | @Override 56 | public void onPause() { 57 | super.onPause(); 58 | Log.d("hyh", "CustomEmojiPanelFragment: onPause "); 59 | } 60 | 61 | @Override 62 | public void onStop() { 63 | super.onStop(); 64 | Log.d("hyh", "CustomEmojiPanelFragment: onStop "); 65 | } 66 | 67 | @Override 68 | public void onDestroyView() { 69 | super.onDestroyView(); 70 | Log.d("hyh", "CustomEmojiPanelFragment: onDestroyView "); 71 | } 72 | 73 | @Override 74 | public void onDestroy() { 75 | super.onDestroy(); 76 | Log.d("hyh", "CustomEmojiPanelFragment: onDestroy "); 77 | } 78 | 79 | @Override 80 | public void onDetach() { 81 | super.onDetach(); 82 | Log.d("hyh", "CustomEmojiPanelFragment: onDetach "); 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/fragment/impl/DanMuFragment.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.fragment.impl; 2 | 3 | import android.view.View; 4 | import android.widget.FrameLayout; 5 | 6 | import com.hyh.annotation.InjectFragment; 7 | import com.hyh.base_lib.BaseFragment; 8 | import com.sky.hyh.customviewsamples.R; 9 | import com.sky.hyh.customviewsamples.danmu.BarrageDispatch; 10 | import com.sky.hyh.customviewsamples.danmu.BarrageWay; 11 | 12 | @InjectFragment() 13 | public class DanMuFragment extends BaseFragment { 14 | BarrageDispatch mDispatch; 15 | 16 | @Override 17 | protected int getResId() { 18 | return R.layout.fragment_danmu; 19 | } 20 | 21 | @Override 22 | protected void initViews(View rootView) { 23 | FrameLayout way1 = rootView.findViewById(R.id.fl_barrage_way_1); 24 | FrameLayout way2 = rootView.findViewById(R.id.fl_barrage_way_2); 25 | FrameLayout way3 = rootView.findViewById(R.id.fl_barrage_way_3); 26 | 27 | mDispatch = new BarrageDispatch(getContext()); 28 | mDispatch.addBarrageWay(way1); 29 | mDispatch.addBarrageWay(way2); 30 | mDispatch.addBarrageWay(way3); 31 | 32 | rootView.findViewById(R.id.btn_add_danmu1).setOnClickListener(new View.OnClickListener() { 33 | @Override 34 | public void onClick(View v) { 35 | BarrageWay.BarrageItem item = new BarrageWay.BarrageItem("小姐姐哈哈哈thyth是而VR我VG如果热个反而服务",""); 36 | mDispatch.dispatch(item); 37 | } 38 | }); 39 | 40 | rootView.findViewById(R.id.btn_add_danmu2).setOnClickListener(new View.OnClickListener() { 41 | @Override 42 | public void onClick(View v) { 43 | BarrageWay.BarrageItem item = new BarrageWay.BarrageItem("小姐姐哈哈哈","1111"); 44 | mDispatch.dispatch(item); 45 | } 46 | }); 47 | } 48 | 49 | @Override 50 | public void onDestroy() { 51 | super.onDestroy(); 52 | mDispatch.clear(); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/fragment/impl/DyLimitedEditTextFragment.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.fragment.impl; 2 | 3 | import android.view.View; 4 | 5 | import com.hyh.annotation.InjectFragment; 6 | import com.hyh.base_lib.BaseFragment; 7 | import com.sky.hyh.customviewsamples.R; 8 | @InjectFragment() 9 | public class DyLimitedEditTextFragment extends BaseFragment { 10 | @Override 11 | protected int getResId() { 12 | return R.layout.fragment_dy_limited_edittext; 13 | } 14 | 15 | @Override 16 | protected void initViews(View rootView) { 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/fragment/impl/DynamicProxyFragment.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.fragment.impl; 2 | 3 | import android.util.Log; 4 | import android.view.View; 5 | import android.widget.TextView; 6 | 7 | import com.hyh.base_lib.BaseFragment; 8 | import com.hyh.base_lib.annotation.FindViewByIdAno; 9 | import com.sky.hyh.customviewsamples.R; 10 | import com.sky.hyh.customviewsamples.proxy.CachedProxy; 11 | import com.sky.hyh.customviewsamples.proxy.ConsumeProxy; 12 | import com.sky.hyh.customviewsamples.proxy.RealSubject; 13 | import com.sky.hyh.customviewsamples.proxy.Subject; 14 | import com.sky.hyh.customviewsamples.proxy.ViewClickProxy; 15 | 16 | public class DynamicProxyFragment extends BaseFragment{ 17 | @FindViewByIdAno(R.id.proxy_a) 18 | private TextView mTvProxyA; 19 | @FindViewByIdAno(R.id.proxy_b) 20 | private TextView mTvProxyB; 21 | private View.OnClickListener mClickListener = new View.OnClickListener() { 22 | @Override 23 | public void onClick(View v) { 24 | //缓存代理 25 | CachedProxy proxy = new CachedProxy(); 26 | Subject subject = (Subject) proxy.bind(new RealSubject()); 27 | Log.e("Shawn", subject.operationA()); 28 | Log.e("Shawn", subject.operationB()); 29 | Log.e("Shawn", subject.operationC()); 30 | 31 | //计算耗时代理 32 | ConsumeProxy consumeProxy = new ConsumeProxy(); 33 | subject = (Subject) consumeProxy.bind(new RealSubject()); 34 | Log.e("Shawn", subject.operationA()); 35 | Log.e("Shawn", subject.operationB()); 36 | Log.e("Shawn", subject.operationC()); 37 | } 38 | }; 39 | 40 | @Override 41 | protected int getResId() { 42 | return R.layout.fragment_dynamic_proxy; 43 | } 44 | 45 | @Override 46 | protected void initViews(View rootView) { 47 | //点击事件代理 48 | ViewClickProxy viewClickProxy = new ViewClickProxy(); 49 | View.OnClickListener clickListener = (View.OnClickListener) viewClickProxy.bind(mClickListener); 50 | 51 | mTvProxyA.setOnClickListener(clickListener); 52 | mTvProxyB.setOnClickListener(clickListener); 53 | 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/fragment/impl/DynamicRoundTextViewFragment.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.fragment.impl; 2 | 3 | import android.view.View; 4 | import android.widget.TextView; 5 | 6 | import com.hyh.annotation.InjectFragment; 7 | import com.hyh.base_lib.BaseFragment; 8 | import com.hyh.base_lib.annotation.FindViewByIdAno; 9 | import com.sky.hyh.customviewsamples.R; 10 | import com.sky.hyh.customviewsamples.customview.DynamicRoundTextView; 11 | @InjectFragment() 12 | public class DynamicRoundTextViewFragment extends BaseFragment implements View.OnClickListener{ 13 | @FindViewByIdAno(R.id.drt_round) 14 | DynamicRoundTextView mDynamicRoundTextView; 15 | 16 | @Override 17 | protected int getResId() { 18 | return R.layout.fragment_dynamic_round_textview; 19 | } 20 | 21 | @Override 22 | protected void initViews(View rootView) { 23 | TextView tvSpread = rootView.findViewById(R.id.tv_click_spread); 24 | tvSpread.setOnClickListener(this); 25 | TextView tvClose = rootView.findViewById(R.id.tv_click_close); 26 | tvClose.setOnClickListener(this); 27 | TextView tvAppear = rootView.findViewById(R.id.tv_click_appear); 28 | tvAppear.setOnClickListener(this); 29 | 30 | mDynamicRoundTextView.setUnReadCount(1); 31 | mDynamicRoundTextView.setTips("1条新提示"); 32 | } 33 | 34 | @Override 35 | public void onClick(View v) { 36 | switch (v.getId()){ 37 | case R.id.tv_click_spread: 38 | mDynamicRoundTextView.spread(); 39 | break; 40 | case R.id.tv_click_close: 41 | mDynamicRoundTextView.close(); 42 | break; 43 | case R.id.tv_click_appear: 44 | mDynamicRoundTextView.appear(null); 45 | break; 46 | 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/fragment/impl/FlexBoxLayoutManagerFragment.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.fragment.impl; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.support.v7.widget.StaggeredGridLayoutManager; 5 | import android.view.View; 6 | 7 | import com.hyh.annotation.InjectFragment; 8 | import com.hyh.base_lib.BaseFragment; 9 | import com.hyh.base_lib.annotation.FindViewByIdAno; 10 | import com.sky.hyh.customviewsamples.R; 11 | import com.sky.hyh.customviewsamples.entity.FlexAdapter; 12 | import com.sky.hyh.customviewsamples.entity.FlexModel; 13 | 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | 17 | /** 18 | * created by hyh on 2019/4/3 19 | */ 20 | @InjectFragment() 21 | public class FlexBoxLayoutManagerFragment extends BaseFragment { 22 | @FindViewByIdAno(R.id.rv_list) 23 | private RecyclerView mRvList; 24 | 25 | @Override 26 | protected int getResId() { 27 | return R.layout.fragment_flexboxlayout_manager; 28 | } 29 | 30 | @Override 31 | protected void initViews(View rootView) { 32 | StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); 33 | mRvList.setLayoutManager(layoutManager); 34 | mRvList.setHasFixedSize(true); 35 | List dataList = new ArrayList<>(); 36 | dataList.add(new FlexModel()); 37 | dataList.add(new FlexModel()); 38 | dataList.add(new FlexModel()); 39 | dataList.add(new FlexModel()); 40 | dataList.add(new FlexModel()); 41 | dataList.add(new FlexModel()); 42 | dataList.add(new FlexModel()); 43 | dataList.add(new FlexModel()); 44 | dataList.add(new FlexModel()); 45 | dataList.add(new FlexModel()); 46 | dataList.add(new FlexModel()); 47 | dataList.add(new FlexModel()); 48 | dataList.add(new FlexModel()); 49 | dataList.add(new FlexModel()); 50 | //dataList.add(new FlexModel()); 51 | mRvList.setAdapter(new FlexAdapter(dataList)); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/fragment/impl/GraduleTitleViewPagerFragment.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.fragment.impl; 2 | 3 | import android.view.View; 4 | 5 | import com.hyh.annotation.InjectFragment; 6 | import com.hyh.base_lib.BaseFragment; 7 | import com.hyh.base_lib.annotation.FindViewByIdAno; 8 | import com.sky.hyh.customviewsamples.R; 9 | import com.sky.hyh.customviewsamples.customview.customviewpager.GraduleTitleViewpagerV2; 10 | import com.sky.hyh.customviewsamples.customview.customviewpager.ViewPagerAdapter; 11 | 12 | import java.util.ArrayList; 13 | import java.util.List; 14 | @InjectFragment() 15 | public class GraduleTitleViewPagerFragment extends BaseFragment { 16 | @FindViewByIdAno(R.id.gtv_view_pager) 17 | private GraduleTitleViewpagerV2 mGraduleTitleViewpager; 18 | 19 | @Override 20 | protected int getResId() { 21 | return R.layout.fragment_gradule_title_view_pager; 22 | } 23 | 24 | @Override 25 | protected void initViews(View rootView) { 26 | //准备数据源 27 | List datas=new ArrayList<>(); 28 | datas.add("#990000"); 29 | datas.add("#271309"); 30 | datas.add("#213456"); 31 | datas.add("#016716"); 32 | datas.add("#170456"); 33 | datas.add("#ff11ff"); 34 | datas.add("#016755"); 35 | datas.add("#170111"); 36 | datas.add("#3001ff"); 37 | 38 | String[] titleContents = new String[datas.size()]; 39 | for(int i=0;i{ 21 | private final Context mContext; 22 | private List mData=new ArrayList<>(); 23 | 24 | public ItemAnimatorAdapter(Context context,List data){ 25 | this.mContext=context; 26 | this.mData=data; 27 | } 28 | 29 | @Override 30 | public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 31 | return new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.adapter_item_animator,parent,false)); 32 | } 33 | 34 | @Override 35 | public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 36 | ((MyViewHolder)holder).tv.setText(position+":"+mData.get(position)); 37 | } 38 | 39 | @Override 40 | public int getItemCount() { 41 | return mData.size(); 42 | } 43 | 44 | class MyViewHolder extends RecyclerView.ViewHolder{ 45 | public TextView tv; 46 | public MyViewHolder(View itemView) { 47 | super(itemView); 48 | tv= (TextView) itemView.findViewById(R.id.tv); 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/recyclerviewdemo/itemanim/SlideItemAnimator.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.recyclerviewdemo.itemanim; 2 | 3 | import android.support.v4.view.ViewCompat; 4 | import android.support.v4.view.ViewPropertyAnimatorCompat; 5 | import android.support.v7.widget.RecyclerView; 6 | 7 | import com.sky.hyh.customviewsamples.recyclerviewdemo.itemanim.BaseItemAnimator; 8 | 9 | /** 10 | * Created by ivy on 2017/3/21. 11 | * Description: 12 | */ 13 | 14 | public class SlideItemAnimator extends BaseItemAnimator { 15 | 16 | @Override 17 | public void setRemoveAnimation(RecyclerView.ViewHolder holder, ViewPropertyAnimatorCompat animator) { 18 | animator.translationX(-holder.itemView.getWidth()); 19 | } 20 | 21 | @Override 22 | public void removeAnimationEnd(RecyclerView.ViewHolder holder) { 23 | ViewCompat.setTranslationX(holder.itemView,0); 24 | } 25 | 26 | @Override 27 | public void addAnimationInit(RecyclerView.ViewHolder holder) { 28 | ViewCompat.setTranslationX(holder.itemView,-holder.itemView.getWidth()); 29 | } 30 | 31 | @Override 32 | public void setAddAnimation(RecyclerView.ViewHolder holder, ViewPropertyAnimatorCompat animator) { 33 | animator.translationX(0); 34 | } 35 | 36 | @Override 37 | public void addAnimationCancel(RecyclerView.ViewHolder holder) { 38 | ViewCompat.setTranslationX(holder.itemView,0); 39 | } 40 | 41 | @Override 42 | public void setOldChangeAnimation(RecyclerView.ViewHolder holder, ViewPropertyAnimatorCompat animator) { 43 | animator.translationX(-holder.itemView.getWidth()); 44 | } 45 | 46 | @Override 47 | public void oldChangeAnimationEnd(RecyclerView.ViewHolder holder) { 48 | ViewCompat.setTranslationX(holder.itemView,0); 49 | } 50 | 51 | @Override 52 | public void newChangeAnimationInit(RecyclerView.ViewHolder holder) { 53 | ViewCompat.setTranslationX(holder.itemView,holder.itemView.getWidth()); 54 | } 55 | 56 | @Override 57 | public void setNewChangeAnimation(RecyclerView.ViewHolder holder, ViewPropertyAnimatorCompat animator) { 58 | animator.translationX(0); 59 | } 60 | 61 | @Override 62 | public void newChangeAnimationEnd(RecyclerView.ViewHolder holder) { 63 | ViewCompat.setTranslationX(holder.itemView,0); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/span/TypeConfig.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.span; 2 | 3 | import android.support.annotation.IntDef; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | 7 | /** 8 | * Created by hyh on 2019/3/6 22:18 9 | * E-Mail Address:fjnuhyh122@gmail.com 10 | */ 11 | public class TypeConfig { 12 | public static final int UNIT_SP = 0; 13 | public static final int UNIT_PX = 1; 14 | @IntDef({UNIT_SP,UNIT_PX}) 15 | @Retention(RetentionPolicy.SOURCE) 16 | public @interface Unit{}; 17 | 18 | public static final int TYPE_CUSTOM_TEXT_SPAN = 0;//自定义文本span -> CustomTextSpan 19 | public static final int TYPE_ABS_SIZE_SPAN = 1;//固定字体大小span -> AbsoluteSizeSpan 20 | @IntDef({TYPE_CUSTOM_TEXT_SPAN,TYPE_ABS_SIZE_SPAN}) 21 | @Retention(RetentionPolicy.SOURCE) 22 | public @interface SpanType{}; 23 | 24 | public static final int ALIGN_BOTTOM = 0; 25 | public static final int ALIGN_CENTER = 1; 26 | public static final int ALIGN_TOP = 2; 27 | @IntDef({ALIGN_BOTTOM,ALIGN_CENTER,ALIGN_TOP}) 28 | @Retention(RetentionPolicy.SOURCE) 29 | public @interface AlignType{}; 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/sky/hyh/customviewsamples/span/spandata/BaseSpanData.java: -------------------------------------------------------------------------------- 1 | package com.sky.hyh.customviewsamples.span.spandata; 2 | 3 | import android.text.style.CharacterStyle; 4 | 5 | /** 6 | * Created by hyh on 2018/12/18 16:17 7 | * E-Mail Address:fjnuhyh122@gmail.com 8 | */ 9 | public abstract class BaseSpanData { 10 | public abstract CharacterStyle onCreateSpan(); 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/p2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-v24/p2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_11.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_13.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_14.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_15.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_16.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_17.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_18.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_19.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_20.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_21.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_22.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_23.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_25.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_26.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_27.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_28.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_29.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_30.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_31.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_32.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_33.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_34.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_35.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_36.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_37.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_38.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_39.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_40.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_41.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_42.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_43.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_44.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_45.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_46.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_47.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_49.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_50.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_51.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_52.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_53.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_54.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_55.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_56.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_57.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_58.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_59.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_60.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_61.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_62.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_63.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_64.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_65.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_66.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_67.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_68.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_69.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_70.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_71.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_71.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_72.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_73.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_74.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_75.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_76.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_77.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_77.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lighting_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xhdpi/lighting_9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/fx_ic_star_grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xxhdpi/fx_ic_star_grey.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/fx_ic_star_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xxhdpi/fx_ic_star_light.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/fx_pub_img_pointer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable-xxhdpi/fx_pub_img_pointer.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/bg_1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_warm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/bg_warm.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/btn_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/btn_more.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_1.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_10.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_11.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_12.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_13.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_14.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_15.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_16.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_17.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_18.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_19.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_2.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_3.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_4.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_5.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_6.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_7.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_8.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/cat_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/cat_9.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/dynamic_round_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/flower.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/flower.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/image_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/image_1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/input_edittext_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/p1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/progress1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyhdy/customview-samples/9eff527d6a78bd96e7330308e6eb90310b93a0ab/app/src/main/res/drawable/progress1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/progressbar_bg1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/progressbar_bg2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/stroke_circle_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 19 | 20 | 21 | 22 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/layout/adapter_item_animator.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/container_coordinate_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 10 | 11 | 12 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/container_coordinate_layout_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 12 | 13 | 14 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/layout/container_tab_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 14 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_automatic_edittext.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_colormatrix.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 10 | 11 | 17 | 18 | 22 | 23 | 29 | 30 | 34 | 35 | 41 | 42 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_con_limited_edittext.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_contact.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_coordinatorlayout.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 15 |