├── .github └── stale.yml ├── .gitignore ├── .gitmodules ├── .travis.yml ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── annotation ├── .gitignore ├── build.gradle ├── compiler │ ├── .gitignore │ ├── build.gradle │ ├── gradle.properties │ ├── libs │ │ └── jarjar-1.4.jar │ ├── proguard.pro │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── bumptech │ │ │ │ └── glide │ │ │ │ └── annotation │ │ │ │ └── compiler │ │ │ │ ├── AppModuleGenerator.java │ │ │ │ ├── AppModuleProcessor.java │ │ │ │ ├── ExtensionProcessor.java │ │ │ │ ├── GlideAnnotationProcessor.java │ │ │ │ ├── GlideExtensionValidator.java │ │ │ │ ├── GlideGenerator.java │ │ │ │ ├── IndexerGenerator.java │ │ │ │ ├── LibraryModuleProcessor.java │ │ │ │ ├── ProcessorUtil.java │ │ │ │ ├── RequestBuilderGenerator.java │ │ │ │ ├── RequestManagerFactoryGenerator.java │ │ │ │ ├── RequestManagerGenerator.java │ │ │ │ ├── RequestOptionsExtensionGenerator.java │ │ │ │ ├── RequestOptionsGenerator.java │ │ │ │ └── RequestOptionsOverrideGenerator.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── gradle │ │ │ └── incremental.annotation.processors │ └── test │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src │ │ └── test │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── annotation │ │ │ └── compiler │ │ │ ├── AppGlideModuleWithExcludesTest.java │ │ │ ├── AppGlideModuleWithLibraryInPackageTest.java │ │ │ ├── AppGlideModuleWithMultipleExcludesTest.java │ │ │ ├── EmptyAppAndLibraryGlideModulesTest.java │ │ │ ├── EmptyAppGlideModuleTest.java │ │ │ ├── EmptyLibraryGlideModuleTest.java │ │ │ ├── GlideExtensionOptionsTest.java │ │ │ ├── GlideExtensionWithOptionTest.java │ │ │ ├── GlideExtensionWithTypeTest.java │ │ │ ├── InvalidAppGlideModuleWithExcludesTest.java │ │ │ ├── InvalidGlideExtensionTest.java │ │ │ ├── InvalidGlideOptionsExtensionTest.java │ │ │ ├── InvalidGlideTypeExtensionTest.java │ │ │ ├── MultipleAppGlideModuleTest.java │ │ │ ├── MultipleEmptyLibraryGlideModuleTest.java │ │ │ └── test │ │ │ ├── ReferencedResource.java │ │ │ ├── RegenerateResourcesRule.java │ │ │ ├── SubDirectory.java │ │ │ ├── TestDescription.java │ │ │ └── Util.java │ │ └── resources │ │ ├── AppGlideModuleWithExcludesTest │ │ ├── AppModuleWithExcludes.java │ │ └── GeneratedAppGlideModuleImpl.java │ │ ├── AppGlideModuleWithLibraryInPackageTest │ │ ├── AppModuleWithLibraryInPackage.java │ │ ├── GeneratedAppGlideModuleImpl.java │ │ └── LibraryModuleInPackage.java │ │ ├── AppGlideModuleWithMultipleExcludesTest │ │ ├── AppModuleWithMultipleExcludes.java │ │ ├── EmptyLibraryModule1.java │ │ ├── EmptyLibraryModule2.java │ │ └── GeneratedAppGlideModuleImpl.java │ │ ├── EmptyAppAndLibraryGlideModulesTest │ │ └── GeneratedAppGlideModuleImpl.java │ │ ├── EmptyAppGlideModuleTest │ │ ├── EmptyAppModule.java │ │ ├── GeneratedAppGlideModuleImpl.java │ │ ├── GeneratedRequestManagerFactory.java │ │ ├── GlideApp.java │ │ ├── GlideOptions.java │ │ ├── GlideRequest.java │ │ └── GlideRequests.java │ │ ├── EmptyLibraryGlideModuleTest │ │ ├── EmptyLibraryModule.java │ │ └── GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule.java │ │ ├── GlideExtensionOptionsTest │ │ ├── MemoizeStaticMethod │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ ├── OverrideExtend │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ ├── OverrideExtendMultipleArguments │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ ├── OverrideReplace │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ ├── SkipStaticMethod │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ └── StaticMethodName │ │ │ ├── Extension.java │ │ │ ├── GlideOptions.java │ │ │ └── GlideRequest.java │ │ ├── GlideExtensionWithOptionTest │ │ ├── ExtensionWithOption.java │ │ ├── GlideOptions.java │ │ └── GlideRequest.java │ │ ├── GlideExtensionWithTypeTest │ │ ├── ExtensionWithType.java │ │ ├── GlideOptions.java │ │ └── GlideRequests.java │ │ ├── MultipleAppGlideModuleTest │ │ ├── EmptyAppModule1.java │ │ └── EmptyAppModule2.java │ │ └── MultipleEmptyLibraryGlideModuleTest │ │ ├── EmptyLibraryModule1.java │ │ ├── EmptyLibraryModule2.java │ │ └── GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule1_com_bumptech_glide_test_EmptyLibraryModule2.java ├── gradle.properties └── src │ └── main │ └── java │ └── com │ └── bumptech │ └── glide │ └── annotation │ ├── Excludes.java │ ├── GlideExtension.java │ ├── GlideModule.java │ ├── GlideOption.java │ ├── GlideType.java │ └── compiler │ └── Index.java ├── build.gradle ├── checkstyle.xml ├── checkstyle_suppressions.xml ├── gcloud-bumptech.json.enc ├── gcloud-sjudd.json.enc ├── glide ├── build.gradle └── gradle.properties ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── instrumentation ├── build.gradle └── src │ ├── androidTest │ ├── AndroidManifest.xml │ └── java │ │ ├── android │ │ └── support │ │ │ └── test │ │ │ └── InstrumentationRegistry.java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ ├── AsBytesTest.java │ │ ├── AsFileTest.java │ │ ├── CachingTest.java │ │ ├── CenterCropRegressionTest.java │ │ ├── CenterInsideRegressionTest.java │ │ ├── CircleCropRegressionTest.java │ │ ├── DataUriTest.java │ │ ├── DownsampleVideoTest.java │ │ ├── DrawableTransformationTest.java │ │ ├── ErrorHandlingTest.java │ │ ├── ExternallyClearedDiskCacheTest.java │ │ ├── FitCenterRegressionTest.java │ │ ├── LoadBitmapTest.java │ │ ├── LoadBytesTest.java │ │ ├── LoadDrawableTest.java │ │ ├── LoadResourcesWithDownsamplerTest.java │ │ ├── LoadVideoResourceTest.java │ │ ├── NonBitmapDrawableResourcesTest.java │ │ ├── PausedRequestsTest.java │ │ ├── RequestManagerTest.java │ │ ├── RequestTest.java │ │ ├── RoundedCornersRegressionTest.java │ │ ├── WideGamutTest.java │ │ ├── load │ │ ├── engine │ │ │ └── executor │ │ │ │ └── MockGlideExecutor.java │ │ └── resource │ │ │ ├── bitmap │ │ │ └── DownsamplerEmulatorTest.java │ │ │ └── gif │ │ │ └── GifDrawableTest.java │ │ └── test │ │ ├── BitmapRegressionTester.java │ │ ├── BitmapSubject.java │ │ ├── CanonicalBitmap.java │ │ ├── ConcurrencyHelper.java │ │ ├── Matchers.java │ │ ├── MockModelLoader.java │ │ ├── RegressionTest.java │ │ ├── ResourceIds.java │ │ ├── SplitByCpu.java │ │ ├── SplitBySdk.java │ │ ├── TearDownGlide.java │ │ └── WaitModelLoader.java │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── bumptech │ │ └── glide │ │ └── test │ │ └── InstrumentationAppGlideModule.java │ └── res │ ├── drawable │ ├── bitmap_alias.xml │ ├── googlelogo_color_120x44dp.9.png │ ├── shape_drawable.xml │ ├── state_list_drawable.xml │ └── vector_drawable.xml │ ├── raw │ ├── canonical.jpg │ ├── canonical_png.png │ ├── canonical_transparent_png.png │ ├── ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png │ ├── ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_x86.png │ ├── ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png │ ├── ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_x86.png │ ├── ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_24_x86.png │ ├── ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_armeabi_v7a.png │ ├── ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_x86.png │ ├── ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_armeabi_v7a.png │ ├── ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_x86.png │ ├── ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_24_x86.png │ ├── ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png │ ├── ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_x86.png │ ├── ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png │ ├── ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_x86.png │ ├── ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_24_x86.png │ ├── ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_armeabi_v7a.png │ ├── ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_x86.png │ ├── ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_armeabi_v7a.png │ ├── ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_x86.png │ ├── ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_24_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_16_armeabi_v7a.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_16_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_18_armeabi_v7a.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_18_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_21_armeabi_v7a.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_21_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_23_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_24_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_cropswithin_26_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_26_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_26_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_23_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_24_x86.png │ ├── ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_26_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_16_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_18_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_21_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_23_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_24_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_26_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_armeabi_v7a.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_23_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_24_x86.png │ ├── ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_26_x86.png │ ├── cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png │ ├── cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png │ ├── cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png │ ├── cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png │ ├── cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_armeabi_v7a.png │ ├── cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_x86.png │ ├── cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_armeabi_v7a.png │ ├── cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_x86.png │ ├── cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_24_x86.png │ ├── cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png │ ├── cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png │ ├── cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png │ ├── cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png │ ├── cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png │ ├── dl_world_anim.gif │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_x86.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png │ ├── fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png │ ├── fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_23_x86.png │ ├── fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_24_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_23_x86.png │ ├── fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png │ ├── interlaced_transparent_gif.gif │ ├── opaque_gif.gif │ ├── opaque_interlaced_gif.gif │ ├── rcrt_testroundedcorners_16_armeabi_v7a.png │ ├── rcrt_testroundedcorners_16_x86.png │ ├── rcrt_testroundedcorners_18_armeabi_v7a.png │ ├── rcrt_testroundedcorners_18_x86.png │ ├── rcrt_testroundedcorners_19_armeabi_v7a.png │ ├── rcrt_testroundedcorners_19_x86.png │ ├── rcrt_testroundedcorners_21_armeabi_v7a.png │ ├── rcrt_testroundedcorners_21_x86.png │ ├── rcrt_testroundedcorners_23_x86.png │ ├── rcrt_testroundedcorners_24_x86.png │ ├── rcrt_testroundedcorners_26_x86.png │ ├── rcrt_testroundedcorners_overrounded_16_armeabi_v7a.png │ ├── rcrt_testroundedcorners_overrounded_16_x86.png │ ├── rcrt_testroundedcorners_overrounded_18_armeabi_v7a.png │ ├── rcrt_testroundedcorners_overrounded_18_x86.png │ ├── rcrt_testroundedcorners_overrounded_19_armeabi_v7a.png │ ├── rcrt_testroundedcorners_overrounded_19_x86.png │ ├── rcrt_testroundedcorners_overrounded_21_armeabi_v7a.png │ ├── rcrt_testroundedcorners_overrounded_21_x86.png │ ├── rcrt_testroundedcorners_overrounded_23_x86.png │ ├── rcrt_testroundedcorners_overrounded_24_x86.png │ ├── rcrt_testroundedcorners_overrounded_26_x86.png │ ├── rcrt_testroundedcorners_usepool_16_armeabi_v7a.png │ ├── rcrt_testroundedcorners_usepool_16_x86.png │ ├── rcrt_testroundedcorners_usepool_18_armeabi_v7a.png │ ├── rcrt_testroundedcorners_usepool_18_x86.png │ ├── rcrt_testroundedcorners_usepool_19_armeabi_v7a.png │ ├── rcrt_testroundedcorners_usepool_19_x86.png │ ├── rcrt_testroundedcorners_usepool_21_armeabi_v7a.png │ ├── rcrt_testroundedcorners_usepool_21_x86.png │ ├── rcrt_testroundedcorners_usepool_23_x86.png │ ├── rcrt_testroundedcorners_usepool_24_x86.png │ ├── rcrt_testroundedcorners_usepool_26_x86.png │ ├── transparent_gif.gif │ ├── video.mp4 │ └── webkit_logo_p3.png │ └── values │ └── strings.xml ├── integration ├── build.gradle ├── gifencoder │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ ├── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── integration │ │ │ └── gifencoder │ │ │ └── ReEncodingGifResourceEncoder.java │ │ └── test │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── gifencoder │ │ └── ReEncodingGifResourceEncoderTest.java ├── gradle.properties ├── okhttp │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── okhttp │ │ ├── OkHttpGlideModule.java │ │ ├── OkHttpLibraryGlideModule.java │ │ ├── OkHttpStreamFetcher.java │ │ └── OkHttpUrlLoader.java ├── okhttp3 │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── okhttp3 │ │ ├── OkHttpGlideModule.java │ │ ├── OkHttpLibraryGlideModule.java │ │ ├── OkHttpStreamFetcher.java │ │ └── OkHttpUrlLoader.java ├── recyclerview │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── recyclerview │ │ ├── RecyclerToListViewScrollListener.java │ │ └── RecyclerViewPreloader.java └── volley │ ├── build.gradle │ ├── gradle.properties │ ├── lint.xml │ └── src │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── integration │ │ └── volley │ │ ├── VolleyGlideModule.java │ │ ├── VolleyLibraryGlideModule.java │ │ ├── VolleyRequestFactory.java │ │ ├── VolleyStreamFetcher.java │ │ └── VolleyUrlLoader.java │ └── test │ └── java │ └── com │ └── bumptech │ └── glide │ └── integration │ └── volley │ └── VolleyStreamFetcherServerTest.java ├── library ├── build.gradle ├── findbugs-exclude.xml ├── findbugs │ └── build.gradle ├── gradle.properties ├── lint.xml ├── pmd-ruleset.xml ├── pmd │ └── build.gradle ├── proguard-rules.txt ├── src │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── bumptech │ │ │ │ └── glide │ │ │ │ ├── GeneratedAppGlideModule.java │ │ │ │ ├── GenericTransitionOptions.java │ │ │ │ ├── Glide.java │ │ │ │ ├── GlideBuilder.java │ │ │ │ ├── GlideContext.java │ │ │ │ ├── ListPreloader.java │ │ │ │ ├── MemoryCategory.java │ │ │ │ ├── ModelTypes.java │ │ │ │ ├── Priority.java │ │ │ │ ├── Registry.java │ │ │ │ ├── RequestBuilder.java │ │ │ │ ├── RequestManager.java │ │ │ │ ├── TransitionOptions.java │ │ │ │ ├── load │ │ │ │ ├── DataSource.java │ │ │ │ ├── DecodeFormat.java │ │ │ │ ├── EncodeStrategy.java │ │ │ │ ├── Encoder.java │ │ │ │ ├── HttpException.java │ │ │ │ ├── ImageHeaderParser.java │ │ │ │ ├── ImageHeaderParserUtils.java │ │ │ │ ├── Key.java │ │ │ │ ├── MultiTransformation.java │ │ │ │ ├── Option.java │ │ │ │ ├── Options.java │ │ │ │ ├── ResourceDecoder.java │ │ │ │ ├── ResourceEncoder.java │ │ │ │ ├── Transformation.java │ │ │ │ ├── data │ │ │ │ │ ├── AssetFileDescriptorLocalUriFetcher.java │ │ │ │ │ ├── AssetPathFetcher.java │ │ │ │ │ ├── BufferedOutputStream.java │ │ │ │ │ ├── DataFetcher.java │ │ │ │ │ ├── DataRewinder.java │ │ │ │ │ ├── DataRewinderRegistry.java │ │ │ │ │ ├── ExifOrientationStream.java │ │ │ │ │ ├── FileDescriptorAssetPathFetcher.java │ │ │ │ │ ├── FileDescriptorLocalUriFetcher.java │ │ │ │ │ ├── HttpUrlFetcher.java │ │ │ │ │ ├── InputStreamRewinder.java │ │ │ │ │ ├── LocalUriFetcher.java │ │ │ │ │ ├── StreamAssetPathFetcher.java │ │ │ │ │ ├── StreamLocalUriFetcher.java │ │ │ │ │ └── mediastore │ │ │ │ │ │ ├── FileService.java │ │ │ │ │ │ ├── MediaStoreUtil.java │ │ │ │ │ │ ├── ThumbFetcher.java │ │ │ │ │ │ ├── ThumbnailQuery.java │ │ │ │ │ │ └── ThumbnailStreamOpener.java │ │ │ │ ├── engine │ │ │ │ │ ├── ActiveResources.java │ │ │ │ │ ├── CallbackException.java │ │ │ │ │ ├── DataCacheGenerator.java │ │ │ │ │ ├── DataCacheKey.java │ │ │ │ │ ├── DataCacheWriter.java │ │ │ │ │ ├── DataFetcherGenerator.java │ │ │ │ │ ├── DecodeHelper.java │ │ │ │ │ ├── DecodeJob.java │ │ │ │ │ ├── DecodePath.java │ │ │ │ │ ├── DiskCacheStrategy.java │ │ │ │ │ ├── Engine.java │ │ │ │ │ ├── EngineJob.java │ │ │ │ │ ├── EngineJobListener.java │ │ │ │ │ ├── EngineKey.java │ │ │ │ │ ├── EngineKeyFactory.java │ │ │ │ │ ├── EngineResource.java │ │ │ │ │ ├── GlideException.java │ │ │ │ │ ├── Initializable.java │ │ │ │ │ ├── Jobs.java │ │ │ │ │ ├── LoadPath.java │ │ │ │ │ ├── LockedResource.java │ │ │ │ │ ├── Resource.java │ │ │ │ │ ├── ResourceCacheGenerator.java │ │ │ │ │ ├── ResourceCacheKey.java │ │ │ │ │ ├── ResourceRecycler.java │ │ │ │ │ ├── SourceGenerator.java │ │ │ │ │ ├── bitmap_recycle │ │ │ │ │ │ ├── ArrayAdapterInterface.java │ │ │ │ │ │ ├── ArrayPool.java │ │ │ │ │ │ ├── AttributeStrategy.java │ │ │ │ │ │ ├── BaseKeyPool.java │ │ │ │ │ │ ├── BitmapPool.java │ │ │ │ │ │ ├── BitmapPoolAdapter.java │ │ │ │ │ │ ├── ByteArrayAdapter.java │ │ │ │ │ │ ├── GroupedLinkedMap.java │ │ │ │ │ │ ├── IntegerArrayAdapter.java │ │ │ │ │ │ ├── LruArrayPool.java │ │ │ │ │ │ ├── LruBitmapPool.java │ │ │ │ │ │ ├── LruPoolStrategy.java │ │ │ │ │ │ ├── Poolable.java │ │ │ │ │ │ ├── PrettyPrintTreeMap.java │ │ │ │ │ │ ├── SizeConfigStrategy.java │ │ │ │ │ │ └── SizeStrategy.java │ │ │ │ │ ├── cache │ │ │ │ │ │ ├── DiskCache.java │ │ │ │ │ │ ├── DiskCacheAdapter.java │ │ │ │ │ │ ├── DiskCacheWriteLocker.java │ │ │ │ │ │ ├── DiskLruCacheFactory.java │ │ │ │ │ │ ├── DiskLruCacheWrapper.java │ │ │ │ │ │ ├── ExternalCacheDiskCacheFactory.java │ │ │ │ │ │ ├── ExternalPreferredCacheDiskCacheFactory.java │ │ │ │ │ │ ├── InternalCacheDiskCacheFactory.java │ │ │ │ │ │ ├── LruResourceCache.java │ │ │ │ │ │ ├── MemoryCache.java │ │ │ │ │ │ ├── MemoryCacheAdapter.java │ │ │ │ │ │ ├── MemorySizeCalculator.java │ │ │ │ │ │ └── SafeKeyGenerator.java │ │ │ │ │ ├── executor │ │ │ │ │ │ ├── GlideExecutor.java │ │ │ │ │ │ └── RuntimeCompat.java │ │ │ │ │ └── prefill │ │ │ │ │ │ ├── BitmapPreFillRunner.java │ │ │ │ │ │ ├── BitmapPreFiller.java │ │ │ │ │ │ ├── PreFillQueue.java │ │ │ │ │ │ └── PreFillType.java │ │ │ │ ├── model │ │ │ │ │ ├── AssetUriLoader.java │ │ │ │ │ ├── ByteArrayLoader.java │ │ │ │ │ ├── ByteBufferEncoder.java │ │ │ │ │ ├── ByteBufferFileLoader.java │ │ │ │ │ ├── DataUrlLoader.java │ │ │ │ │ ├── FileLoader.java │ │ │ │ │ ├── GlideUrl.java │ │ │ │ │ ├── Headers.java │ │ │ │ │ ├── LazyHeaderFactory.java │ │ │ │ │ ├── LazyHeaders.java │ │ │ │ │ ├── MediaStoreFileLoader.java │ │ │ │ │ ├── Model.java │ │ │ │ │ ├── ModelCache.java │ │ │ │ │ ├── ModelLoader.java │ │ │ │ │ ├── ModelLoaderFactory.java │ │ │ │ │ ├── ModelLoaderRegistry.java │ │ │ │ │ ├── MultiModelLoader.java │ │ │ │ │ ├── MultiModelLoaderFactory.java │ │ │ │ │ ├── ResourceLoader.java │ │ │ │ │ ├── StreamEncoder.java │ │ │ │ │ ├── StringLoader.java │ │ │ │ │ ├── UnitModelLoader.java │ │ │ │ │ ├── UriLoader.java │ │ │ │ │ ├── UrlUriLoader.java │ │ │ │ │ └── stream │ │ │ │ │ │ ├── BaseGlideUrlLoader.java │ │ │ │ │ │ ├── HttpGlideUrlLoader.java │ │ │ │ │ │ ├── HttpUriLoader.java │ │ │ │ │ │ ├── MediaStoreImageThumbLoader.java │ │ │ │ │ │ ├── MediaStoreVideoThumbLoader.java │ │ │ │ │ │ └── UrlLoader.java │ │ │ │ └── resource │ │ │ │ │ ├── SimpleResource.java │ │ │ │ │ ├── UnitTransformation.java │ │ │ │ │ ├── bitmap │ │ │ │ │ ├── BitmapDrawableDecoder.java │ │ │ │ │ ├── BitmapDrawableEncoder.java │ │ │ │ │ ├── BitmapDrawableResource.java │ │ │ │ │ ├── BitmapDrawableTransformation.java │ │ │ │ │ ├── BitmapEncoder.java │ │ │ │ │ ├── BitmapResource.java │ │ │ │ │ ├── BitmapTransformation.java │ │ │ │ │ ├── BitmapTransitionOptions.java │ │ │ │ │ ├── ByteBufferBitmapDecoder.java │ │ │ │ │ ├── CenterCrop.java │ │ │ │ │ ├── CenterInside.java │ │ │ │ │ ├── CircleCrop.java │ │ │ │ │ ├── DefaultImageHeaderParser.java │ │ │ │ │ ├── DownsampleStrategy.java │ │ │ │ │ ├── Downsampler.java │ │ │ │ │ ├── DrawableToBitmapConverter.java │ │ │ │ │ ├── DrawableTransformation.java │ │ │ │ │ ├── ExifInterfaceImageHeaderParser.java │ │ │ │ │ ├── FitCenter.java │ │ │ │ │ ├── HardwareConfigState.java │ │ │ │ │ ├── LazyBitmapDrawableResource.java │ │ │ │ │ ├── RecyclableBufferedInputStream.java │ │ │ │ │ ├── ResourceBitmapDecoder.java │ │ │ │ │ ├── Rotate.java │ │ │ │ │ ├── RoundedCorners.java │ │ │ │ │ ├── StreamBitmapDecoder.java │ │ │ │ │ ├── TransformationUtils.java │ │ │ │ │ ├── UnitBitmapDecoder.java │ │ │ │ │ ├── VideoBitmapDecoder.java │ │ │ │ │ └── VideoDecoder.java │ │ │ │ │ ├── bytes │ │ │ │ │ ├── ByteBufferRewinder.java │ │ │ │ │ └── BytesResource.java │ │ │ │ │ ├── drawable │ │ │ │ │ ├── DrawableDecoderCompat.java │ │ │ │ │ ├── DrawableResource.java │ │ │ │ │ ├── DrawableTransitionOptions.java │ │ │ │ │ ├── NonOwnedDrawableResource.java │ │ │ │ │ ├── ResourceDrawableDecoder.java │ │ │ │ │ └── UnitDrawableDecoder.java │ │ │ │ │ ├── file │ │ │ │ │ ├── FileDecoder.java │ │ │ │ │ └── FileResource.java │ │ │ │ │ ├── gif │ │ │ │ │ ├── ByteBufferGifDecoder.java │ │ │ │ │ ├── GifBitmapProvider.java │ │ │ │ │ ├── GifDrawable.java │ │ │ │ │ ├── GifDrawableEncoder.java │ │ │ │ │ ├── GifDrawableResource.java │ │ │ │ │ ├── GifDrawableTransformation.java │ │ │ │ │ ├── GifFrameLoader.java │ │ │ │ │ ├── GifFrameResourceDecoder.java │ │ │ │ │ ├── GifOptions.java │ │ │ │ │ └── StreamGifDecoder.java │ │ │ │ │ └── transcode │ │ │ │ │ ├── BitmapBytesTranscoder.java │ │ │ │ │ ├── BitmapDrawableTranscoder.java │ │ │ │ │ ├── DrawableBytesTranscoder.java │ │ │ │ │ ├── GifDrawableBytesTranscoder.java │ │ │ │ │ ├── ResourceTranscoder.java │ │ │ │ │ ├── TranscoderRegistry.java │ │ │ │ │ └── UnitTranscoder.java │ │ │ │ ├── manager │ │ │ │ ├── ActivityFragmentLifecycle.java │ │ │ │ ├── ApplicationLifecycle.java │ │ │ │ ├── ConnectivityMonitor.java │ │ │ │ ├── ConnectivityMonitorFactory.java │ │ │ │ ├── DefaultConnectivityMonitor.java │ │ │ │ ├── DefaultConnectivityMonitorFactory.java │ │ │ │ ├── EmptyRequestManagerTreeNode.java │ │ │ │ ├── Lifecycle.java │ │ │ │ ├── LifecycleListener.java │ │ │ │ ├── NullConnectivityMonitor.java │ │ │ │ ├── RequestManagerFragment.java │ │ │ │ ├── RequestManagerRetriever.java │ │ │ │ ├── RequestManagerTreeNode.java │ │ │ │ ├── RequestTracker.java │ │ │ │ ├── SupportRequestManagerFragment.java │ │ │ │ └── TargetTracker.java │ │ │ │ ├── module │ │ │ │ ├── AppGlideModule.java │ │ │ │ ├── AppliesOptions.java │ │ │ │ ├── GlideModule.java │ │ │ │ ├── LibraryGlideModule.java │ │ │ │ ├── ManifestParser.java │ │ │ │ └── RegistersComponents.java │ │ │ │ ├── provider │ │ │ │ ├── EncoderRegistry.java │ │ │ │ ├── ImageHeaderParserRegistry.java │ │ │ │ ├── LoadPathCache.java │ │ │ │ ├── ModelToResourceClassCache.java │ │ │ │ ├── ResourceDecoderRegistry.java │ │ │ │ └── ResourceEncoderRegistry.java │ │ │ │ ├── request │ │ │ │ ├── BaseRequestOptions.java │ │ │ │ ├── ErrorRequestCoordinator.java │ │ │ │ ├── FutureTarget.java │ │ │ │ ├── Request.java │ │ │ │ ├── RequestCoordinator.java │ │ │ │ ├── RequestFutureTarget.java │ │ │ │ ├── RequestListener.java │ │ │ │ ├── RequestOptions.java │ │ │ │ ├── ResourceCallback.java │ │ │ │ ├── SingleRequest.java │ │ │ │ ├── ThumbnailRequestCoordinator.java │ │ │ │ ├── target │ │ │ │ │ ├── AppWidgetTarget.java │ │ │ │ │ ├── BaseTarget.java │ │ │ │ │ ├── BitmapImageViewTarget.java │ │ │ │ │ ├── BitmapThumbnailImageViewTarget.java │ │ │ │ │ ├── CustomTarget.java │ │ │ │ │ ├── CustomViewTarget.java │ │ │ │ │ ├── DrawableImageViewTarget.java │ │ │ │ │ ├── DrawableThumbnailImageViewTarget.java │ │ │ │ │ ├── FixedSizeDrawable.java │ │ │ │ │ ├── ImageViewTarget.java │ │ │ │ │ ├── ImageViewTargetFactory.java │ │ │ │ │ ├── NotificationTarget.java │ │ │ │ │ ├── PreloadTarget.java │ │ │ │ │ ├── SimpleTarget.java │ │ │ │ │ ├── SizeReadyCallback.java │ │ │ │ │ ├── Target.java │ │ │ │ │ ├── ThumbnailImageViewTarget.java │ │ │ │ │ └── ViewTarget.java │ │ │ │ └── transition │ │ │ │ │ ├── BitmapContainerTransitionFactory.java │ │ │ │ │ ├── BitmapTransitionFactory.java │ │ │ │ │ ├── DrawableCrossFadeFactory.java │ │ │ │ │ ├── DrawableCrossFadeTransition.java │ │ │ │ │ ├── NoTransition.java │ │ │ │ │ ├── Transition.java │ │ │ │ │ ├── TransitionFactory.java │ │ │ │ │ ├── ViewAnimationFactory.java │ │ │ │ │ ├── ViewPropertyAnimationFactory.java │ │ │ │ │ ├── ViewPropertyTransition.java │ │ │ │ │ └── ViewTransition.java │ │ │ │ ├── signature │ │ │ │ ├── ApplicationVersionSignature.java │ │ │ │ ├── EmptySignature.java │ │ │ │ ├── MediaStoreSignature.java │ │ │ │ └── ObjectKey.java │ │ │ │ └── util │ │ │ │ ├── AnalysisUtil.java │ │ │ │ ├── ByteBufferUtil.java │ │ │ │ ├── CachedHashCodeArrayMap.java │ │ │ │ ├── ContentLengthInputStream.java │ │ │ │ ├── ExceptionCatchingInputStream.java │ │ │ │ ├── Executors.java │ │ │ │ ├── FixedPreloadSizeProvider.java │ │ │ │ ├── LogTime.java │ │ │ │ ├── LruCache.java │ │ │ │ ├── MarkEnforcingInputStream.java │ │ │ │ ├── MultiClassKey.java │ │ │ │ ├── Preconditions.java │ │ │ │ ├── Synthetic.java │ │ │ │ ├── Util.java │ │ │ │ ├── ViewPreloadSizeProvider.java │ │ │ │ └── pool │ │ │ │ ├── FactoryPools.java │ │ │ │ ├── GlideTrace.java │ │ │ │ └── StateVerifier.java │ │ └── res │ │ │ └── values │ │ │ └── ids.xml │ └── test │ │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── request │ │ └── target │ │ └── CustomViewTargetTest.java └── test │ ├── build.gradle │ └── src │ ├── main │ └── AndroidManifest.xml │ └── test │ ├── java │ ├── com │ │ └── bumptech │ │ │ └── glide │ │ │ ├── GlideContextTest.java │ │ │ ├── GlideTest.java │ │ │ ├── ListPreloaderTest.java │ │ │ ├── RegistryTest.java │ │ │ ├── RequestBuilderTest.java │ │ │ ├── RequestManagerTest.java │ │ │ ├── load │ │ │ ├── MultiTransformationTest.java │ │ │ ├── OptionsTest.java │ │ │ ├── data │ │ │ │ ├── BufferedOutputStreamFuzzTest.java │ │ │ │ ├── BufferedOutputStreamTest.java │ │ │ │ ├── ExifOrientationStreamTest.java │ │ │ │ ├── FileDescriptorAssetPathFetcherTest.java │ │ │ │ ├── HttpUrlFetcherServerTest.java │ │ │ │ ├── HttpUrlFetcherTest.java │ │ │ │ ├── LocalUriFetcherTest.java │ │ │ │ ├── StreamAssetPathFetcherTest.java │ │ │ │ ├── mediastore │ │ │ │ │ ├── ThumbFetcherTest.java │ │ │ │ │ └── ThumbnailStreamOpenerTest.java │ │ │ │ └── resource │ │ │ │ │ ├── FileDescriptorLocalUriFetcherTest.java │ │ │ │ │ └── StreamLocalUriFetcherTest.java │ │ │ ├── engine │ │ │ │ ├── ActiveResourcesTest.java │ │ │ │ ├── DataCacheKeyTest.java │ │ │ │ ├── EngineJobTest.java │ │ │ │ ├── EngineKeyTest.java │ │ │ │ ├── EngineResourceTest.java │ │ │ │ ├── EngineTest.java │ │ │ │ ├── ResourceCacheKeyTest.java │ │ │ │ ├── ResourceRecyclerTest.java │ │ │ │ ├── bitmap_recycle │ │ │ │ │ ├── AttributeStrategyKeyTest.java │ │ │ │ │ ├── AttributeStrategyTest.java │ │ │ │ │ ├── GroupedLinkedMapTest.java │ │ │ │ │ ├── LruArrayPoolTest.java │ │ │ │ │ ├── LruBitmapPoolTest.java │ │ │ │ │ ├── SizeConfigStrategyTest.java │ │ │ │ │ └── SizeStrategyKeyTest.java │ │ │ │ ├── cache │ │ │ │ │ ├── DiskLruCacheWrapperTest.java │ │ │ │ │ ├── LruCacheTest.java │ │ │ │ │ ├── LruResourceCacheTest.java │ │ │ │ │ ├── MemorySizeCalculatorTest.java │ │ │ │ │ └── SafeKeyGeneratorTest.java │ │ │ │ ├── executor │ │ │ │ │ ├── GlideExecutorTest.java │ │ │ │ │ └── MockGlideExecutor.java │ │ │ │ └── prefill │ │ │ │ │ ├── BitmapPreFillRunnerTest.java │ │ │ │ │ ├── BitmapPreFillerTest.java │ │ │ │ │ └── PreFillTypeTest.java │ │ │ ├── model │ │ │ │ ├── AssetUriLoaderTest.java │ │ │ │ ├── ByteArrayLoaderTest.java │ │ │ │ ├── DataUrlLoaderTest.java │ │ │ │ ├── GlideUrlTest.java │ │ │ │ ├── LazyHeadersTest.java │ │ │ │ ├── ModelCacheTest.java │ │ │ │ ├── MultiModelLoaderFactoryTest.java │ │ │ │ ├── ResourceLoaderTest.java │ │ │ │ ├── StreamEncoderTest.java │ │ │ │ ├── StringLoaderTest.java │ │ │ │ ├── UriLoaderTest.java │ │ │ │ └── stream │ │ │ │ │ ├── BaseGlideUrlLoaderTest.java │ │ │ │ │ ├── HttpGlideUrlLoaderTest.java │ │ │ │ │ └── HttpUriLoaderTest.java │ │ │ └── resource │ │ │ │ ├── SimpleResourceTest.java │ │ │ │ ├── UnitTransformationTest.java │ │ │ │ ├── bitmap │ │ │ │ ├── BitmapDrawableResourceTest.java │ │ │ │ ├── BitmapDrawableTransformationTest.java │ │ │ │ ├── BitmapEncoderTest.java │ │ │ │ ├── BitmapResourceTest.java │ │ │ │ ├── BitmapTransformationTest.java │ │ │ │ ├── CenterCropTest.java │ │ │ │ ├── CenterInsideTest.java │ │ │ │ ├── CircleCropTest.java │ │ │ │ ├── DefaultImageHeaderParserTest.java │ │ │ │ ├── DownsampleStrategyTest.java │ │ │ │ ├── DrawableTransformationTest.java │ │ │ │ ├── FitCenterTest.java │ │ │ │ ├── LazyBitmapDrawableResourceTest.java │ │ │ │ ├── RecyclableBufferedInputStreamTest.java │ │ │ │ ├── TransformationUtilsTest.java │ │ │ │ └── VideoDecoderTest.java │ │ │ │ ├── bytes │ │ │ │ └── BytesResourceTest.java │ │ │ │ ├── drawable │ │ │ │ └── DrawableResourceTest.java │ │ │ │ ├── file │ │ │ │ ├── FileDecoderTest.java │ │ │ │ └── FileResourceTest.java │ │ │ │ ├── gif │ │ │ │ ├── ByteBufferGifDecoderTest.java │ │ │ │ ├── GifDrawableResourceTest.java │ │ │ │ ├── GifDrawableTest.java │ │ │ │ ├── GifDrawableTransformationTest.java │ │ │ │ ├── GifFrameLoaderTest.java │ │ │ │ ├── GifFrameResourceDecoderTest.java │ │ │ │ └── StreamGifDecoderTest.java │ │ │ │ └── transcode │ │ │ │ ├── BitmapBytesTranscoderTest.java │ │ │ │ ├── BitmapDrawableTranscoderTest.java │ │ │ │ ├── GifDrawableBytesTranscoderTest.java │ │ │ │ ├── TranscoderRegistryTest.java │ │ │ │ └── UnitTranscoderTest.java │ │ │ ├── manager │ │ │ ├── DefaultConnectivityMonitorFactoryTest.java │ │ │ ├── DefaultConnectivityMonitorTest.java │ │ │ ├── Issue117Activity.java │ │ │ ├── LifecycleTest.java │ │ │ ├── RequestManagerFragmentTest.java │ │ │ ├── RequestManagerRetrieverTest.java │ │ │ └── RequestTrackerTest.java │ │ │ ├── module │ │ │ └── ManifestParserTest.java │ │ │ ├── request │ │ │ ├── ErrorRequestCoordinatorTest.java │ │ │ ├── RequestFutureTargetTest.java │ │ │ ├── RequestOptionsTest.java │ │ │ ├── SingleRequestTest.java │ │ │ ├── ThumbnailRequestCoordinatorTest.java │ │ │ ├── target │ │ │ │ ├── AppWidgetTargetTest.java │ │ │ │ ├── BitmapImageViewTargetTest.java │ │ │ │ ├── ImageViewTargetFactoryTest.java │ │ │ │ ├── ImageViewTargetTest.java │ │ │ │ ├── NotificationTargetTest.java │ │ │ │ ├── PreloadTargetTest.java │ │ │ │ ├── SimpleTargetTest.java │ │ │ │ └── ViewTargetTest.java │ │ │ └── transition │ │ │ │ ├── DrawableCrossFadeFactoryTest.java │ │ │ │ ├── DrawableCrossFadeViewAnimationTest.java │ │ │ │ ├── ViewAnimationTest.java │ │ │ │ ├── ViewPropertyAnimationTest.java │ │ │ │ ├── ViewPropertyViewTransitionAnimationFactoryTest.java │ │ │ │ └── ViewTransitionAnimationFactoryTest.java │ │ │ ├── resize │ │ │ └── load │ │ │ │ └── ExifTest.java │ │ │ ├── signature │ │ │ ├── ApplicationVersionSignatureTest.java │ │ │ ├── EmptySignatureTest.java │ │ │ ├── MediaStoreSignatureTest.java │ │ │ └── ObjectKeyTest.java │ │ │ ├── tests │ │ │ ├── BackgroundUtil.java │ │ │ ├── ContentResolverShadow.java │ │ │ ├── GlideShadowLog.java │ │ │ ├── GlideShadowLooper.java │ │ │ ├── KeyTester.java │ │ │ ├── TearDownGlide.java │ │ │ └── Util.java │ │ │ └── util │ │ │ ├── ByteBufferUtilTest.java │ │ │ ├── ContentLengthInputStreamTest.java │ │ │ ├── ExceptionCatchingInputStreamTest.java │ │ │ ├── FixedPreloadSizeProviderTest.java │ │ │ ├── MarkEnforcingInputStreamTest.java │ │ │ ├── UtilTest.java │ │ │ └── ViewPreloadSizeProviderTest.java │ └── opengles │ │ └── GL.java │ └── resources │ ├── exif-orientation-examples │ ├── .gitignore │ ├── LICENSE │ ├── Landscape_1.jpg │ ├── Landscape_2.jpg │ ├── Landscape_3.jpg │ ├── Landscape_4.jpg │ ├── Landscape_5.jpg │ ├── Landscape_6.jpg │ ├── Landscape_7.jpg │ ├── Landscape_8.jpg │ ├── Makefile │ ├── Portrait_1.jpg │ ├── Portrait_2.jpg │ ├── Portrait_3.jpg │ ├── Portrait_4.jpg │ ├── Portrait_5.jpg │ ├── Portrait_6.jpg │ ├── Portrait_7.jpg │ ├── Portrait_8.jpg │ ├── README.markdown │ ├── VERSION │ └── generator │ │ ├── Gemfile │ │ └── generate.rb │ ├── issue387_rotated_jpeg.jpg │ ├── org.robolectric.Config.properties │ ├── short_exif_sample.jpg │ └── test.gif ├── samples ├── contacturi │ ├── build.gradle │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── samples │ │ │ └── contacturi │ │ │ ├── ContactUriModule.java │ │ │ └── MainActivity.java │ │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ └── values │ │ ├── dimens.xml │ │ └── strings.xml ├── flickr │ ├── build.gradle │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── samples │ │ │ └── flickr │ │ │ ├── FlickrGlideExtension.java │ │ │ ├── FlickrGlideModule.java │ │ │ ├── FlickrModelLoader.java │ │ │ ├── FlickrPhotoGrid.java │ │ │ ├── FlickrPhotoList.java │ │ │ ├── FlickrSearchActivity.java │ │ │ ├── FullscreenActivity.java │ │ │ ├── PhotoViewer.java │ │ │ ├── SquareImageView.java │ │ │ ├── TestActivity.java │ │ │ └── api │ │ │ ├── Api.java │ │ │ ├── FlickrQueryResponseListener.java │ │ │ ├── Photo.java │ │ │ ├── PhotoJsonStringParser.java │ │ │ ├── Query.java │ │ │ ├── RecentQuery.java │ │ │ └── SearchQuery.java │ │ └── res │ │ ├── layout │ │ ├── activity_test.xml │ │ ├── flickr_photo_grid.xml │ │ ├── flickr_photo_grid_item.xml │ │ ├── flickr_photo_list.xml │ │ ├── flickr_photo_list_item.xml │ │ ├── flickr_search_activity.xml │ │ └── fullscreen_activity.xml │ │ ├── menu │ │ └── search_activity.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ └── strings.xml ├── gallery │ ├── build.gradle │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── samples │ │ │ └── gallery │ │ │ ├── GalleryModule.java │ │ │ ├── HorizontalGalleryFragment.java │ │ │ ├── MainActivity.java │ │ │ ├── MediaStoreData.java │ │ │ ├── MediaStoreDataLoader.java │ │ │ └── RecyclerAdapter.java │ │ └── res │ │ ├── layout │ │ ├── main_activity.xml │ │ ├── recycler_item.xml │ │ └── recycler_view.xml │ │ └── values │ │ ├── ids.xml │ │ └── strings.xml ├── giphy │ ├── build.gradle │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── samples │ │ │ └── giphy │ │ │ ├── Api.java │ │ │ ├── FullscreenActivity.java │ │ │ ├── GiphyGlideModule.java │ │ │ ├── GiphyModelLoader.java │ │ │ └── MainActivity.java │ │ └── res │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── fullscreen_activity.xml │ │ └── gif_list_item.xml │ │ ├── raw │ │ └── large_giphy_logo.gif │ │ └── values │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml ├── imgur │ ├── .gitignore │ ├── build.gradle │ ├── lint.xml │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── bumptech │ │ │ └── glide │ │ │ └── samples │ │ │ └── imgur │ │ │ ├── ApplicationModule.java │ │ │ ├── ImgurApplication.java │ │ │ ├── ImgurApplicationComponent.java │ │ │ ├── ImgurGlideModule.java │ │ │ ├── MainActivity.java │ │ │ ├── MainActivityModule.java │ │ │ └── api │ │ │ ├── ApiModule.java │ │ │ ├── Gallery.java │ │ │ ├── Image.java │ │ │ ├── ImgurObservables.java │ │ │ └── ImgurService.java │ │ └── res │ │ ├── layout │ │ ├── activity_main.xml │ │ └── image_card.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 │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml └── svg │ ├── build.gradle │ ├── lint.xml │ └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── bumptech │ │ └── glide │ │ └── samples │ │ └── svg │ │ ├── MainActivity.java │ │ ├── SvgDecoder.java │ │ ├── SvgDrawableTranscoder.java │ │ ├── SvgModule.java │ │ └── SvgSoftwareLayerSetter.java │ └── res │ ├── drawable │ ├── dot_dot_dot.xml │ ├── image_error.xml │ └── image_loading.xml │ ├── layout │ └── activity_main.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── raw │ └── android_toy_h.svg │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── dimens.xml │ └── strings.xml ├── scripts ├── android-wait-for-emulator.sh ├── install_firebase.sh ├── regenerate_resources.sh ├── release_checks.sh ├── run_instrumentation_tests.sh ├── run_sample_robo_tests.sh ├── split_by_sdk.sh ├── travis_after_success.sh ├── travis_before_script.sh ├── travis_create_emulator.sh ├── travis_firebase.sh ├── travis_instrumentation.sh ├── travis_samples.sh ├── travis_script.sh ├── travis_sonatype_publish.sh ├── travis_unit.sh ├── update_javadocs.sh └── upload.gradle ├── settings.gradle ├── static ├── cache_porcess.png ├── code_statistic.png ├── disk_cache_file_list.png ├── glide_logo.png ├── glide_overview.png ├── glide_package.png ├── glide_process.png ├── grouped_linked_map.png ├── journal.png ├── load_package.png ├── qrcode_for_account.jpg ├── qrcode_for_gsubscription.jpg └── request_method.png ├── testutil ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── bumptech │ └── glide │ └── testutil │ ├── TestResourceUtil.java │ └── TestUtil.java └── third_party ├── disklrucache ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── LICENSE.txt ├── README.md ├── README.third_party ├── build.gradle ├── checkstyle.xml ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew └── src │ ├── main │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── disklrucache │ │ ├── DiskLruCache.java │ │ ├── StrictLineReader.java │ │ └── Util.java │ └── test │ └── java │ └── com │ └── bumptech │ └── glide │ └── disklrucache │ ├── DiskLruCacheTest.java │ └── StrictLineReaderTest.java ├── gif_decoder ├── LICENSE ├── README.third_party ├── build.gradle ├── gradle.properties ├── lint.xml └── src │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── bumptech │ │ └── glide │ │ └── gifdecoder │ │ ├── GifDecoder.java │ │ ├── GifFrame.java │ │ ├── GifHeader.java │ │ ├── GifHeaderParser.java │ │ └── StandardGifDecoder.java │ └── test │ ├── java │ └── com │ │ └── bumptech │ │ └── glide │ │ └── gifdecoder │ │ ├── GifDecoderTest.java │ │ ├── GifHeaderParserTest.java │ │ └── test │ │ ├── GifBytesTestUtil.java │ │ └── GifBytesTestUtilTest.java │ └── resources │ ├── gif_netscape_iteration_0.gif │ ├── gif_netscape_iteration_1.gif │ ├── gif_netscape_iteration_255.gif │ ├── gif_netscape_iteration_256.gif │ ├── gif_netscape_iteration_65535.gif │ ├── gif_without_graphical_control_extension.gif │ ├── gif_without_netscape_iteration.gif │ ├── partial_gif_decode.gif │ ├── transparent_disposal_background.gif │ ├── transparent_disposal_none.gif │ └── white_black_row.gif ├── gif_encoder ├── LICENSE ├── README.third_party ├── lint.xml └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── bumptech │ └── glide │ └── gifencoder │ ├── AnimatedGifEncoder.java │ ├── LZWEncoder.java │ └── NeuQuant.java └── gradle.properties /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 7 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 7 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - bug 8 | - enhancement 9 | - feature 10 | - documentation 11 | - build stability 12 | # Label to use when marking an issue as stale 13 | staleLabel: stale 14 | # Comment to post when marking an issue as stale. Set to `false` to disable 15 | markComment: > 16 | This issue has been automatically marked as stale because it has not had 17 | activity in the last seven days. It will be closed if no further activity 18 | occurs within the next seven days. Thank you for your contributions. 19 | # Comment to post when closing a stale issue. Set to `false` to disable 20 | closeComment: false 21 | unmarkComment: false 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Android 2 | local.properties 3 | *.keystore 4 | *.DS_Store 5 | 6 | # Gradle 7 | .gradle 8 | build 9 | jacoco.exec 10 | 11 | # gh-pages 12 | doc/** 13 | _site/* 14 | _pages/* 15 | docs/**/* 16 | 17 | # Vim 18 | *.swp 19 | *.swo 20 | 21 | # sed 22 | *.bak 23 | 24 | # Intellij 25 | *.iml 26 | *.ipr 27 | *.iws 28 | .idea/** 29 | !.idea/codeStyleSettings.xml 30 | !.idea/inspectionProfiles 31 | !.idea/inspectionProfiles/Project_Default.xml 32 | 33 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "third_party/disklrucache"] 2 | path = third_party/disklrucache 3 | url = https://github.com/sjudd/DiskLruCache.git 4 | [submodule "library/test/src/test/resources/exif-orientation-examples"] 5 | path = library/test/src/test/resources/exif-orientation-examples 6 | url = https://github.com/recurser/exif-orientation-examples.git 7 | -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | ## Description 7 | 8 | 9 | 10 | ## Motivation and Context 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /annotation/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /annotation/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | 3 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" -------------------------------------------------------------------------------- /annotation/compiler/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /annotation/compiler/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Annotation processor 2 | POM_ARTIFACT_ID=compiler 3 | POM_PACKAGING=jar 4 | POM_DESCRIPTION=Glide's anntation processor. Should be included in all Applications and in all libraries that use Glide's modules for configuration. 5 | -------------------------------------------------------------------------------- /annotation/compiler/libs/jarjar-1.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/annotation/compiler/libs/jarjar-1.4.jar -------------------------------------------------------------------------------- /annotation/compiler/src/main/resources/META-INF/gradle/incremental.annotation.processors: -------------------------------------------------------------------------------- 1 | com.bumptech.glide.annotation.compiler.GlideAnnotationProcessor,aggregating 2 | -------------------------------------------------------------------------------- /annotation/compiler/test/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/java/com/bumptech/glide/annotation/compiler/test/SubDirectory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.compiler.test; 2 | 3 | 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | /** 10 | * Indicates the subdirectory for a particular test that contains the test resource(s) used for the 11 | * method. 12 | * 13 | *

Used both by tests to extract the correct subdirectory and by the 14 | * {@link RegenerateResourcesRule} for the same purpose. 15 | */ 16 | @Target(ElementType.METHOD) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | public @interface SubDirectory { 19 | String value(); 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/java/com/bumptech/glide/annotation/compiler/test/TestDescription.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.compiler.test; 2 | 3 | import org.junit.rules.TestWatcher; 4 | import org.junit.runner.Description; 5 | 6 | /** 7 | * Exposes the {@link Description} for the current test, similar to 8 | * {@link org.junit.rules.TestName}. 9 | */ 10 | public final class TestDescription extends TestWatcher { 11 | private Description description; 12 | @Override 13 | protected void starting(Description description) { 14 | this.description = description; 15 | } 16 | 17 | public Description getDescription() { 18 | return description; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithExcludesTest/AppModuleWithExcludes.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.Excludes; 4 | import com.bumptech.glide.annotation.GlideModule; 5 | import com.bumptech.glide.module.AppGlideModule; 6 | 7 | @GlideModule 8 | @Excludes(EmptyLibraryModule.class) 9 | public final class AppModuleWithExcludes extends AppGlideModule {} -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithLibraryInPackageTest/AppModuleWithLibraryInPackage.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.Excludes; 4 | import com.bumptech.glide.annotation.GlideModule; 5 | import com.bumptech.glide.module.AppGlideModule; 6 | import com.bumptech.glide.test._package.LibraryModuleInPackage; 7 | 8 | @GlideModule 9 | @Excludes(LibraryModuleInPackage.class) 10 | public final class AppModuleWithLibraryInPackage extends AppGlideModule {} 11 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithLibraryInPackageTest/LibraryModuleInPackage.java: -------------------------------------------------------------------------------- 1 | // _ in the name is important otherwise everything would work 2 | package com.bumptech.glide.test._package; 3 | 4 | import com.bumptech.glide.annotation.GlideModule; 5 | import com.bumptech.glide.module.LibraryGlideModule; 6 | 7 | @GlideModule 8 | public final class LibraryModuleInPackage extends LibraryGlideModule {} 9 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithMultipleExcludesTest/AppModuleWithMultipleExcludes.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.Excludes; 4 | import com.bumptech.glide.annotation.GlideModule; 5 | import com.bumptech.glide.module.AppGlideModule; 6 | 7 | @GlideModule 8 | @Excludes({EmptyLibraryModule1.class, EmptyLibraryModule2.class}) 9 | public final class AppModuleWithMultipleExcludes extends AppGlideModule {} -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithMultipleExcludesTest/EmptyLibraryModule1.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.LibraryGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyLibraryModule1 extends LibraryGlideModule {} 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/AppGlideModuleWithMultipleExcludesTest/EmptyLibraryModule2.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.LibraryGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyLibraryModule2 extends LibraryGlideModule {} 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/EmptyAppModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyAppModule extends AppGlideModule {} -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/EmptyAppGlideModuleTest/GeneratedRequestManagerFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.NonNull; 5 | import com.bumptech.glide.manager.Lifecycle; 6 | import com.bumptech.glide.manager.RequestManagerRetriever; 7 | import com.bumptech.glide.manager.RequestManagerTreeNode; 8 | import com.bumptech.glide.test.GlideRequests; 9 | import java.lang.Override; 10 | 11 | /** 12 | * Generated code, do not modify 13 | */ 14 | final class GeneratedRequestManagerFactory implements RequestManagerRetriever.RequestManagerFactory { 15 | @Override 16 | @NonNull 17 | public RequestManager build(@NonNull Glide glide, @NonNull Lifecycle lifecycle, 18 | @NonNull RequestManagerTreeNode treeNode, @NonNull Context context) { 19 | return new GlideRequests(glide, lifecycle, treeNode, context); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/EmptyLibraryGlideModuleTest/EmptyLibraryModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.LibraryGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyLibraryModule extends LibraryGlideModule {} 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/EmptyLibraryGlideModuleTest/GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.compiler; 2 | 3 | @Index( 4 | modules = "com.bumptech.glide.test.EmptyLibraryModule" 5 | ) 6 | public class GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule { 7 | } 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/MemoizeStaticMethod/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(memoizeStaticMethod = true) 17 | public static BaseRequestOptions test(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtend/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(override = GlideOption.OVERRIDE_EXTEND) 17 | public static BaseRequestOptions centerCrop(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideExtendMultipleArguments/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(override = GlideOption.OVERRIDE_EXTEND) 17 | public static BaseRequestOptions override(BaseRequestOptions requestOptions, int width, int height) { 18 | return requestOptions 19 | .override(width, height) 20 | .centerCrop(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/OverrideReplace/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(override = GlideOption.OVERRIDE_REPLACE) 17 | public static BaseRequestOptions centerCrop(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/SkipStaticMethod/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(skipStaticMethod = true) 17 | public static BaseRequestOptions test(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionOptionsTest/StaticMethodName/Extension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class Extension { 10 | 11 | private Extension() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption(staticMethodName = "testSomething") 17 | public static BaseRequestOptions test(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionWithOptionTest/ExtensionWithOption.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.annotation.GlideExtension; 5 | import com.bumptech.glide.annotation.GlideOption; 6 | import com.bumptech.glide.request.BaseRequestOptions; 7 | 8 | @GlideExtension 9 | public final class ExtensionWithOption { 10 | 11 | private ExtensionWithOption() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideOption 17 | public static BaseRequestOptions squareThumb(BaseRequestOptions requestOptions) { 18 | return requestOptions.centerCrop(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/GlideExtensionWithTypeTest/ExtensionWithType.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.RequestBuilder; 5 | import com.bumptech.glide.annotation.GlideExtension; 6 | import com.bumptech.glide.annotation.GlideType; 7 | 8 | @GlideExtension 9 | public final class ExtensionWithType { 10 | 11 | private ExtensionWithType() { 12 | // Utility class. 13 | } 14 | 15 | @NonNull 16 | @GlideType(Number.class) 17 | public static RequestBuilder asNumber(RequestBuilder builder) { 18 | return builder; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/MultipleAppGlideModuleTest/EmptyAppModule1.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyAppModule1 extends AppGlideModule {} -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/MultipleAppGlideModuleTest/EmptyAppModule2.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyAppModule2 extends AppGlideModule {} -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/MultipleEmptyLibraryGlideModuleTest/EmptyLibraryModule1.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.LibraryGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyLibraryModule1 extends LibraryGlideModule {} 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/MultipleEmptyLibraryGlideModuleTest/EmptyLibraryModule2.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.LibraryGlideModule; 5 | 6 | @GlideModule 7 | public final class EmptyLibraryModule2 extends LibraryGlideModule {} 8 | -------------------------------------------------------------------------------- /annotation/compiler/test/src/test/resources/MultipleEmptyLibraryGlideModuleTest/GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule1_com_bumptech_glide_test_EmptyLibraryModule2.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.compiler; 2 | 3 | @Index( 4 | modules = { 5 | "com.bumptech.glide.test.EmptyLibraryModule1", 6 | "com.bumptech.glide.test.EmptyLibraryModule2" 7 | } 8 | ) 9 | public class GlideIndexer_GlideModule_com_bumptech_glide_test_EmptyLibraryModule1_com_bumptech_glide_test_EmptyLibraryModule2 { 10 | } 11 | -------------------------------------------------------------------------------- /annotation/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Annotations 2 | POM_ARTIFACT_ID=annotations 3 | POM_PACKAGING=jar 4 | POM_DESCRIPTION=A set of annotations for configuring Glide. 5 | -------------------------------------------------------------------------------- /annotation/src/main/java/com/bumptech/glide/annotation/Excludes.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.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 | /** 9 | * Specifies a set of GlideModule and/or LibraryGlideModule classes that should be excluded 10 | * from an application. 11 | * 12 | *

Used only on AppGlideModules. Adding this annotation to other classes will have no affect. 13 | * 14 | *

Cannot be used to exclude AppGlideModules (there must be at most one per Application anyway). 15 | */ 16 | @Target(ElementType.TYPE) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | public @interface Excludes { 19 | Class[] value(); 20 | } 21 | -------------------------------------------------------------------------------- /annotation/src/main/java/com/bumptech/glide/annotation/GlideExtension.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.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 | /** 9 | * Indicate a class that extends Glide's public API. 10 | * 11 | * @see GlideOption 12 | */ 13 | @Target(ElementType.TYPE) 14 | @Retention(RetentionPolicy.CLASS) 15 | public @interface GlideExtension { } 16 | -------------------------------------------------------------------------------- /annotation/src/main/java/com/bumptech/glide/annotation/GlideModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.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 | /** 9 | * Identifies AppGlideModules and LibraryGlideModules for Glide's annotation processor to merge at 10 | * compile time. 11 | * 12 | *

Replaces tags in AndroidManifest.xml. 13 | */ 14 | @Target(ElementType.TYPE) 15 | @Retention(RetentionPolicy.CLASS) 16 | public @interface GlideModule { 17 | /** 18 | * Returns the name of the class that will be used as a replacement for 19 | * {@code com.bumptech.glide.Glide} in Applications that depend on Glide's generated code. 20 | */ 21 | String glideName() default "GlideApp"; 22 | } 23 | -------------------------------------------------------------------------------- /annotation/src/main/java/com/bumptech/glide/annotation/compiler/Index.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.annotation.compiler; 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 | /** 9 | * Used to retrieve LibraryGlideModule and GlideExtension classes in our annotation processor from 10 | * libraries and applications. 11 | * 12 | *

Part of the internals of Glide's annotation processor and not for public use. 13 | */ 14 | @Target(ElementType.TYPE) 15 | // Needs to be parsed from class files in JAR. 16 | @Retention(RetentionPolicy.CLASS) 17 | @interface Index { 18 | String[] modules() default {}; 19 | String[] extensions() default {}; 20 | } 21 | -------------------------------------------------------------------------------- /gcloud-bumptech.json.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/gcloud-bumptech.json.enc -------------------------------------------------------------------------------- /gcloud-sjudd.json.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/gcloud-sjudd.json.enc -------------------------------------------------------------------------------- /glide/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Full 2 | POM_ARTIFACT_ID=glide-full 3 | POM_PACKAGING=jar 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /instrumentation/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /instrumentation/src/androidTest/java/android/support/test/InstrumentationRegistry.java: -------------------------------------------------------------------------------- 1 | package android.support.test; 2 | 3 | import android.content.Context; 4 | 5 | // Workaround for https://github.com/mockito/mockito/issues/1472. 6 | public final class InstrumentationRegistry { 7 | public static Context getTargetContext() { 8 | return androidx.test.InstrumentationRegistry.getTargetContext(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /instrumentation/src/androidTest/java/com/bumptech/glide/test/RegressionTest.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | /** 10 | * Indicates that a test is a regression test that relies on comparing a newly transformed image to 11 | * a previously generated copy of the same image to detect changes. 12 | */ 13 | @Target(ElementType.TYPE) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface RegressionTest { 16 | // Intentionally empty. 17 | } 18 | -------------------------------------------------------------------------------- /instrumentation/src/androidTest/java/com/bumptech/glide/test/SplitByCpu.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 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 | /** 9 | * Indicates that the test relies on transformations or operations that may produce different 10 | * outputs on different CPUs. 11 | */ 12 | @Target(ElementType.TYPE) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface SplitByCpu { 15 | } 16 | -------------------------------------------------------------------------------- /instrumentation/src/androidTest/java/com/bumptech/glide/test/SplitBySdk.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 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 | /** 9 | * Used by {@link BitmapRegressionTester} to generate SDK specific resources to account for 10 | * differences in Android's image decoding APIs across versions. 11 | */ 12 | @Target({ ElementType.METHOD, ElementType.TYPE }) 13 | @Retention(RetentionPolicy.RUNTIME) 14 | public @interface SplitBySdk { 15 | int[] value(); 16 | } 17 | -------------------------------------------------------------------------------- /instrumentation/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /instrumentation/src/main/java/com/bumptech/glide/test/InstrumentationAppGlideModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.test; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | @GlideModule 7 | public class InstrumentationAppGlideModule extends AppGlideModule { 8 | // Intentionally empty. 9 | } 10 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/drawable/bitmap_alias.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/drawable/googlelogo_color_120x44dp.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/drawable/googlelogo_color_120x44dp.9.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/drawable/shape_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/drawable/state_list_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/canonical.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/canonical.jpg -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/canonical_png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/canonical_png.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/canonical_transparent_png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/canonical_transparent_png.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglelargerthanimage_returnsupscaledrectangularimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withrectanglesmallerthanimage_returnsrectangularimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withsquarelargerthanimage_returnsupscaledrectangularimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_centercrop_withsquaresmallerthanimage_returnssquareimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_cropswithin_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withnarrowrectangle_fitswithinmaintainingaspectratio_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withshortrectangle_fitswithinmaintainingaspectratio_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquarelargerthanimage_returnsupscaledfitimage_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_retunsimagefitwithinsquare_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/ccrt_circlecrop_withsquaresmallerthanimage_returnssquaredimage_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withsquarelargerthanimage_returnsoriginalimage_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/cirt_centerinside_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/dl_world_anim.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/dl_world_anim.gif -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withnarrowrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withshortrectangle_fitswithinmaintainingaspectratio_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquarelargerthanimage_returnsupscaledsquare_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/fcrt_fitcenter_withsquaresmallerthanimage_returnsimagefitwithinsquare_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/interlaced_transparent_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/interlaced_transparent_gif.gif -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/opaque_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/opaque_gif.gif -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/opaque_interlaced_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/opaque_interlaced_gif.gif -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_overrounded_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_16_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_16_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_16_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_16_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_18_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_18_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_18_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_18_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_19_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_19_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_19_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_19_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_21_armeabi_v7a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_21_armeabi_v7a.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_21_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_21_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_23_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_23_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_24_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_24_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_26_x86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/rcrt_testroundedcorners_usepool_26_x86.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/transparent_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/transparent_gif.gif -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/video.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/video.mp4 -------------------------------------------------------------------------------- /instrumentation/src/main/res/raw/webkit_logo_p3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/instrumentation/src/main/res/raw/webkit_logo_p3.png -------------------------------------------------------------------------------- /instrumentation/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /integration/build.gradle: -------------------------------------------------------------------------------- 1 | // keep an empty file to make sure Gradle recognizes the properties 2 | -------------------------------------------------------------------------------- /integration/gifencoder/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide GifEncoder Integration 2 | POM_ARTIFACT_ID=gifencoder-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library allowing users to re-encode or create animated GIFs 5 | -------------------------------------------------------------------------------- /integration/gifencoder/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /integration/gifencoder/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /integration/gradle.properties: -------------------------------------------------------------------------------- 1 | # Prefix and postfix for source and javadoc jars. 2 | JAR_PREFIX=glide- 3 | JAR_POSTFIX=-integration 4 | -------------------------------------------------------------------------------- /integration/okhttp/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | dependencies { 4 | implementation project(':library') 5 | annotationProcessor project(':annotation:compiler') 6 | 7 | api "com.squareup.okhttp:okhttp:2.7.5" 8 | api "com.android.support:support-annotations:${ANDROID_SUPPORT_VERSION}" 9 | } 10 | 11 | android { 12 | compileSdkVersion COMPILE_SDK_VERSION as int 13 | 14 | defaultConfig { 15 | minSdkVersion MIN_SDK_VERSION as int 16 | targetSdkVersion TARGET_SDK_VERSION as int 17 | 18 | versionName VERSION_NAME as String 19 | } 20 | 21 | compileOptions { 22 | sourceCompatibility JavaVersion.VERSION_1_7 23 | targetCompatibility JavaVersion.VERSION_1_7 24 | } 25 | } 26 | 27 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 28 | -------------------------------------------------------------------------------- /integration/okhttp/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide OkHttp Integration 2 | POM_ARTIFACT_ID=okhttp-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to use OkHttp 2.x to fetch data over http/https in Glide 5 | -------------------------------------------------------------------------------- /integration/okhttp/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /integration/okhttp/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /integration/okhttp3/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | dependencies { 4 | implementation project(':library') 5 | annotationProcessor project(':annotation:compiler') 6 | 7 | api "com.squareup.okhttp3:okhttp:${OK_HTTP_VERSION}" 8 | api "com.android.support:support-annotations:${ANDROID_SUPPORT_VERSION}" 9 | } 10 | 11 | android { 12 | compileSdkVersion COMPILE_SDK_VERSION as int 13 | 14 | defaultConfig { 15 | minSdkVersion MIN_SDK_VERSION as int 16 | targetSdkVersion TARGET_SDK_VERSION as int 17 | 18 | versionName VERSION_NAME as String 19 | } 20 | 21 | compileOptions { 22 | sourceCompatibility JavaVersion.VERSION_1_7 23 | targetCompatibility JavaVersion.VERSION_1_7 24 | } 25 | } 26 | 27 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 28 | -------------------------------------------------------------------------------- /integration/okhttp3/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide OkHttp 3.x Integration 2 | POM_ARTIFACT_ID=okhttp3-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to use OkHttp 3.x to fetch data over http/https in Glide 5 | -------------------------------------------------------------------------------- /integration/okhttp3/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /integration/okhttp3/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /integration/recyclerview/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | dependencies { 4 | implementation project(':library') 5 | compileOnly "com.android.support:recyclerview-v7:${ANDROID_SUPPORT_VERSION}" 6 | compileOnly "com.android.support:support-fragment:${ANDROID_SUPPORT_VERSION}" 7 | } 8 | 9 | android { 10 | compileSdkVersion COMPILE_SDK_VERSION as int 11 | 12 | defaultConfig { 13 | minSdkVersion MIN_SDK_VERSION as int 14 | targetSdkVersion TARGET_SDK_VERSION as int 15 | 16 | versionName VERSION_NAME as String 17 | } 18 | 19 | compileOptions { 20 | sourceCompatibility JavaVersion.VERSION_1_7 21 | targetCompatibility JavaVersion.VERSION_1_7 22 | } 23 | } 24 | 25 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 26 | -------------------------------------------------------------------------------- /integration/recyclerview/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide RecyclerView Integration 2 | POM_ARTIFACT_ID=recyclerview-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to display images in RecyclerView. 5 | -------------------------------------------------------------------------------- /integration/recyclerview/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /integration/recyclerview/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /integration/volley/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Volley Integration 2 | POM_ARTIFACT_ID=volley-integration 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=An integration library to use Volley to fetch data over http/https in Glide 5 | -------------------------------------------------------------------------------- /integration/volley/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /integration/volley/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /integration/volley/src/main/java/com/bumptech/glide/integration/volley/VolleyRequestFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.integration.volley; 2 | 3 | import com.android.volley.Request; 4 | import com.android.volley.Request.Priority; 5 | import com.bumptech.glide.load.data.DataFetcher.DataCallback; 6 | import java.io.InputStream; 7 | import java.util.Map; 8 | 9 | /** 10 | * Used to construct a custom Volley request, such as for authentication header decoration. 11 | */ 12 | public interface VolleyRequestFactory { 13 | 14 | /** 15 | * Returns a Volley request for the given image url. The given future should be put as a 16 | * listener or called when the request completes. 17 | */ 18 | 19 | Request create(String url, DataCallback callback, 20 | Priority priority, Map headers); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /library/findbugs/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'findbugs' 2 | 3 | findbugs { 4 | toolVersion FINDBUGS_VERSION 5 | } 6 | 7 | def library = project(':library') 8 | 9 | tasks.create('findbugs', FindBugs) { 10 | dependsOn library.tasks.compileDebugJavaWithJavac 11 | 12 | description 'Run findbugs' 13 | group 'verification' 14 | 15 | classes = fileTree(library.tasks.compileDebugJavaWithJavac.destinationDir) 16 | source library.android.sourceSets.main.java.srcDirs 17 | classpath = files() 18 | doFirst { 19 | classpath += library.classPathForQuality() 20 | } 21 | effort = 'max' 22 | excludeFilter = file("${library.projectDir}/findbugs-exclude.xml") 23 | 24 | // Failures are caught and printed by the violations plugin. 25 | ignoreFailures = true 26 | 27 | reports { 28 | xml.enabled = true 29 | html.enabled = false 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /library/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide 2 | POM_ARTIFACT_ID=glide 3 | POM_PACKAGING=aar 4 | 5 | # Prefix and postfix for source and javadoc jars. 6 | JAR_PREFIX=glide- 7 | JAR_POSTFIX= 8 | -------------------------------------------------------------------------------- /library/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /library/proguard-rules.txt: -------------------------------------------------------------------------------- 1 | -keep public class * implements com.bumptech.glide.module.GlideModule 2 | -keep public class * extends com.bumptech.glide.module.AppGlideModule 3 | -keep public enum com.bumptech.glide.load.ImageHeaderParser$** { 4 | **[] $VALUES; 5 | public *; 6 | } 7 | 8 | # Uncomment for DexGuard only 9 | #-keepresourcexmlelements manifest/application/meta-data@value=GlideModule -------------------------------------------------------------------------------- /library/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/Priority.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide; 2 | 3 | /** 4 | * Priorities for completing loads. If more than one load is queued at a time, the load with the 5 | * higher priority will be started first. Priorities are considered best effort, there are no 6 | * guarantees about the order in which loads will start or finish. 7 | */ 8 | public enum Priority { 9 | IMMEDIATE, 10 | HIGH, 11 | NORMAL, 12 | LOW, 13 | } 14 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/DataSource.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load; 2 | 3 | /** 4 | * Indicates the origin of some retrieved data. 5 | */ 6 | public enum DataSource { 7 | /** 8 | * Indicates data was probably retrieved locally from the device, although it may have been 9 | * obtained through a content provider that may have obtained the data from a remote source. 10 | */ 11 | LOCAL, 12 | /** 13 | * Indicates data was retrieved from a remote source other than the device. 14 | */ 15 | REMOTE, 16 | /** 17 | * Indicates data was retrieved unmodified from the on device cache. 18 | */ 19 | DATA_DISK_CACHE, 20 | /** 21 | * Indicates data was retrieved from modified content in the on device cache. 22 | */ 23 | RESOURCE_DISK_CACHE, 24 | /** 25 | * Indicates data was retrieved from the in memory cache. 26 | */ 27 | MEMORY_CACHE, 28 | } 29 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/EncodeStrategy.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load; 2 | 3 | /** 4 | * Details how an {@link com.bumptech.glide.load.ResourceEncoder} will encode a resource to cache. 5 | */ 6 | public enum EncodeStrategy { 7 | /** 8 | * Writes the original unmodified data for the resource to disk, not include downsampling or 9 | * transformations. 10 | */ 11 | SOURCE, 12 | 13 | /** 14 | * Writes the decoded, downsampled and transformed data for the resource to disk. 15 | */ 16 | TRANSFORMED, 17 | 18 | /** 19 | * Will write no data. 20 | */ 21 | NONE, 22 | } 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/Encoder.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | import java.io.File; 6 | 7 | /** 8 | * An interface for writing data to some persistent data store (i.e. a local File cache). 9 | * 10 | * @param The type of the data that will be written. 11 | */ 12 | public interface Encoder { 13 | /** 14 | * Writes the given data to the given output stream and returns True if the write completed 15 | * successfully and should be committed. 16 | * 17 | * @param data The data to write. 18 | * @param file The File to write the data to. 19 | * @param options The put of options to apply when encoding. 20 | */ 21 | boolean encode(@NonNull T data, @NonNull File file, @NonNull Options options); 22 | } 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/ResourceEncoder.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.load.engine.Resource; 5 | 6 | /** 7 | * An interface for writing data from a resource to some persistent data store (i.e. a local File 8 | * cache). 9 | * 10 | * @param The type of the data contained by the resource. 11 | */ 12 | public interface ResourceEncoder extends Encoder> { 13 | // specializing the generic arguments 14 | @NonNull 15 | EncodeStrategy getEncodeStrategy(@NonNull Options options); 16 | } 17 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/data/mediastore/FileService.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.data.mediastore; 2 | 3 | import java.io.File; 4 | 5 | class FileService { 6 | public boolean exists(File file) { 7 | return file.exists(); 8 | } 9 | 10 | public long length(File file) { 11 | return file.length(); 12 | } 13 | 14 | public File get(String path) { 15 | return new File(path); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/data/mediastore/ThumbnailQuery.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.data.mediastore; 2 | 3 | import android.database.Cursor; 4 | import android.net.Uri; 5 | 6 | interface ThumbnailQuery { 7 | Cursor query(Uri uri); 8 | } 9 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/CallbackException.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine; 2 | 3 | /** 4 | * An exception indicating that code outside of Glide threw an unexpected exception. 5 | * 6 | *

This is useful to allow us to distinguish developer errors on the part of users of Glide from 7 | * developer errors on the part of developers of Glide itself. 8 | */ 9 | final class CallbackException extends RuntimeException { 10 | private static final long serialVersionUID = -7530898992688511851L; 11 | 12 | CallbackException(Throwable cause) { 13 | super("Unexpected exception thrown by non-Glide code", cause); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/EngineJobListener.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine; 2 | 3 | import com.bumptech.glide.load.Key; 4 | 5 | interface EngineJobListener { 6 | 7 | void onEngineJobComplete(EngineJob engineJob, Key key, EngineResource resource); 8 | 9 | void onEngineJobCancelled(EngineJob engineJob, Key key); 10 | } 11 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/EngineKeyFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine; 2 | 3 | import com.bumptech.glide.load.Key; 4 | import com.bumptech.glide.load.Options; 5 | import com.bumptech.glide.load.Transformation; 6 | import java.util.Map; 7 | 8 | class EngineKeyFactory { 9 | 10 | @SuppressWarnings("rawtypes") 11 | EngineKey buildKey(Object model, Key signature, int width, int height, 12 | Map, Transformation> transformations, Class resourceClass, 13 | Class transcodeClass, Options options) { 14 | return new EngineKey(model, signature, width, height, transformations, resourceClass, 15 | transcodeClass, options); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/Initializable.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine; 2 | 3 | /** 4 | * A callback allowing a resource to do some optimization on a background thread before being 5 | * returned to the ui. 6 | */ 7 | public interface Initializable { 8 | 9 | /** 10 | * Called on a background thread so the {@link Resource} can do some eager initialization. 11 | */ 12 | void initialize(); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/ArrayAdapterInterface.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | /** 3 | * Interface for handling operations on a primitive array type. 4 | * @param Array type (e.g. byte[], int[]) 5 | */ 6 | interface ArrayAdapterInterface { 7 | 8 | /** 9 | * TAG for logging. 10 | */ 11 | String getTag(); 12 | 13 | /** 14 | * Return the length of the given array. 15 | */ 16 | int getArrayLength(T array); 17 | 18 | /** 19 | * Allocate and return an array of the specified size. 20 | */ 21 | T newArray(int length); 22 | 23 | /** 24 | * Return the size of an element in the array in bytes (e.g. for int return 4). 25 | */ 26 | int getElementSizeInBytes(); 27 | } 28 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/BaseKeyPool.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | import com.bumptech.glide.util.Util; 4 | import java.util.Queue; 5 | 6 | abstract class BaseKeyPool { 7 | private static final int MAX_SIZE = 20; 8 | private final Queue keyPool = Util.createQueue(MAX_SIZE); 9 | 10 | T get() { 11 | T result = keyPool.poll(); 12 | if (result == null) { 13 | result = create(); 14 | } 15 | return result; 16 | } 17 | 18 | public void offer(T key) { 19 | if (keyPool.size() < MAX_SIZE) { 20 | keyPool.offer(key); 21 | } 22 | } 23 | 24 | abstract T create(); 25 | } 26 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/ByteArrayAdapter.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | /** 4 | * Adapter for handling primitive byte arrays. 5 | */ 6 | @SuppressWarnings("PMD.UseVarargs") 7 | public final class ByteArrayAdapter implements ArrayAdapterInterface { 8 | private static final String TAG = "ByteArrayPool"; 9 | 10 | @Override 11 | public String getTag() { 12 | return TAG; 13 | } 14 | 15 | @Override 16 | public int getArrayLength(byte[] array) { 17 | return array.length; 18 | } 19 | 20 | @Override 21 | public byte[] newArray(int length) { 22 | return new byte[length]; 23 | } 24 | 25 | @Override 26 | public int getElementSizeInBytes() { 27 | return 1; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/IntegerArrayAdapter.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | /** 4 | * Adapter for handling primitive int arrays. 5 | */ 6 | @SuppressWarnings("PMD.UseVarargs") 7 | public final class IntegerArrayAdapter implements ArrayAdapterInterface { 8 | private static final String TAG = "IntegerArrayPool"; 9 | 10 | @Override 11 | public String getTag() { 12 | return TAG; 13 | } 14 | 15 | @Override 16 | public int getArrayLength(int[] array) { 17 | return array.length; 18 | } 19 | 20 | @Override 21 | public int[] newArray(int length) { 22 | return new int[length]; 23 | } 24 | 25 | @Override 26 | public int getElementSizeInBytes() { 27 | return 4; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/LruPoolStrategy.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | import android.graphics.Bitmap; 4 | import android.support.annotation.Nullable; 5 | 6 | interface LruPoolStrategy { 7 | void put(Bitmap bitmap); 8 | 9 | @Nullable 10 | Bitmap get(int width, int height, Bitmap.Config config); 11 | 12 | @Nullable 13 | Bitmap removeLast(); 14 | 15 | String logBitmap(Bitmap bitmap); 16 | 17 | String logBitmap(int width, int height, Bitmap.Config config); 18 | 19 | int getSize(Bitmap bitmap); 20 | } 21 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/Poolable.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | interface Poolable { 4 | void offer(); 5 | } 6 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/engine/bitmap_recycle/PrettyPrintTreeMap.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.engine.bitmap_recycle; 2 | 3 | import java.util.TreeMap; 4 | 5 | // Never serialized. 6 | @SuppressWarnings("serial") 7 | class PrettyPrintTreeMap extends TreeMap { 8 | @Override 9 | public String toString() { 10 | StringBuilder sb = new StringBuilder(); 11 | sb.append("( "); 12 | for (Entry entry : entrySet()) { 13 | sb.append('{').append(entry.getKey()).append(':').append(entry.getValue()).append("}, "); 14 | } 15 | if (!isEmpty()) { 16 | sb.replace(sb.length() - 2, sb.length(), ""); 17 | } 18 | return sb.append(" )").toString(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/model/LazyHeaderFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.model; 2 | 3 | import android.support.annotation.Nullable; 4 | 5 | /** 6 | * An interface for lazily creating headers that allows expensive to calculate headers (oauth for 7 | * example) to be generated in the background during the first fetch. 8 | * 9 | *

Implementations should implement equals() and hashcode()

. 10 | */ 11 | public interface LazyHeaderFactory { 12 | /** 13 | * Returns an http header, or {@code null} if no header could be built. 14 | * 15 | *

Returning {@code null} or an empty String from this method will result in this particular 16 | * key/value being excluded from the headers provided in the request. If there are multiple 17 | * factories or values for a particular key, any non-null values will still be included for that 18 | * key. 19 | */ 20 | @Nullable 21 | String buildHeader(); 22 | } 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/resource/file/FileDecoder.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.resource.file; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.load.Options; 5 | import com.bumptech.glide.load.ResourceDecoder; 6 | import com.bumptech.glide.load.engine.Resource; 7 | import java.io.File; 8 | 9 | /** 10 | * A simple {@link com.bumptech.glide.load.ResourceDecoder} that creates resource for a given {@link 11 | * java.io.File}. 12 | */ 13 | public class FileDecoder implements ResourceDecoder { 14 | 15 | @Override 16 | public boolean handles(@NonNull File source, @NonNull Options options) { 17 | return true; 18 | } 19 | 20 | @Override 21 | public Resource decode(@NonNull File source, int width, int height, 22 | @NonNull Options options) { 23 | return new FileResource(source); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/resource/file/FileResource.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.resource.file; 2 | 3 | import com.bumptech.glide.load.resource.SimpleResource; 4 | import java.io.File; 5 | 6 | /** 7 | * A simple {@link com.bumptech.glide.load.engine.Resource} that wraps a {@link File}. 8 | */ 9 | // Public API. 10 | @SuppressWarnings("WeakerAccess") 11 | public class FileResource extends SimpleResource { 12 | public FileResource(File file) { 13 | super(file); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/load/resource/transcode/ResourceTranscoder.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.resource.transcode; 2 | 3 | import android.support.annotation.NonNull; 4 | import android.support.annotation.Nullable; 5 | import com.bumptech.glide.load.Options; 6 | import com.bumptech.glide.load.engine.Resource; 7 | 8 | /** 9 | * Transcodes a resource of one type to a resource of another type. 10 | * 11 | * @param The type of the resource that will be transcoded from. 12 | * @param The type of the resource that will be transcoded to. 13 | */ 14 | public interface ResourceTranscoder { 15 | 16 | /** 17 | * Transcodes the given resource to the new resource type and returns the new resource. 18 | * 19 | * @param toTranscode The resource to transcode. 20 | */ 21 | @Nullable 22 | Resource transcode(@NonNull Resource toTranscode, @NonNull Options options); 23 | } 24 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/ApplicationLifecycle.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | /** 6 | * A {@link com.bumptech.glide.manager.Lifecycle} implementation for tracking and notifying 7 | * listeners of {@link android.app.Application} lifecycle events. 8 | * 9 | *

Since there are essentially no {@link android.app.Application} lifecycle events, this class 10 | * simply defaults to notifying new listeners that they are started.

11 | */ 12 | class ApplicationLifecycle implements Lifecycle { 13 | @Override 14 | public void addListener(@NonNull LifecycleListener listener) { 15 | listener.onStart(); 16 | } 17 | 18 | @Override 19 | public void removeListener(@NonNull LifecycleListener listener) { 20 | // Do nothing. 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/ConnectivityMonitor.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | /** 4 | * An interface for monitoring network connectivity events. 5 | */ 6 | public interface ConnectivityMonitor extends LifecycleListener { 7 | 8 | /** 9 | * An interface for listening to network connectivity events picked up by the monitor. 10 | */ 11 | interface ConnectivityListener { 12 | /** 13 | * Called when the connectivity state changes. 14 | * 15 | * @param isConnected True if we're currently connected to a network, false otherwise. 16 | */ 17 | void onConnectivityChanged(boolean isConnected); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/ConnectivityMonitorFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.NonNull; 5 | 6 | /** 7 | * A factory class that produces a functional 8 | * {@link com.bumptech.glide.manager.ConnectivityMonitor}. 9 | */ 10 | public interface ConnectivityMonitorFactory { 11 | 12 | @NonNull 13 | ConnectivityMonitor build( 14 | @NonNull Context context, 15 | @NonNull ConnectivityMonitor.ConnectivityListener listener); 16 | } 17 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/EmptyRequestManagerTreeNode.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.RequestManager; 5 | import java.util.Collections; 6 | import java.util.Set; 7 | 8 | /** 9 | * A {@link RequestManagerTreeNode} that returns no relatives. 10 | */ 11 | final class EmptyRequestManagerTreeNode implements RequestManagerTreeNode { 12 | @NonNull 13 | @Override 14 | public Set getDescendants() { 15 | return Collections.emptySet(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/Lifecycle.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import android.support.annotation.NonNull; 4 | 5 | /** 6 | * An interface for listening to Activity/Fragment lifecycle events. 7 | */ 8 | public interface Lifecycle { 9 | /** 10 | * Adds the given listener to the set of listeners managed by this Lifecycle implementation. 11 | */ 12 | void addListener(@NonNull LifecycleListener listener); 13 | 14 | /** 15 | * Removes the given listener from the set of listeners managed by this Lifecycle implementation, 16 | * returning {@code true} if the listener was removed successfully, and {@code false} otherwise. 17 | * 18 | *

This is an optimization only, there is no guarantee that every added listener will 19 | * eventually be removed. 20 | */ 21 | void removeListener(@NonNull LifecycleListener listener); 22 | } 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/LifecycleListener.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | /** 4 | * An interface for listener to {@link android.app.Fragment} and {@link android.app.Activity} 5 | * lifecycle events. 6 | */ 7 | public interface LifecycleListener { 8 | 9 | /** 10 | * Callback for when {@link android.app.Fragment#onStart()}} or {@link 11 | * android.app.Activity#onStart()} is called. 12 | */ 13 | void onStart(); 14 | 15 | /** 16 | * Callback for when {@link android.app.Fragment#onStop()}} or {@link 17 | * android.app.Activity#onStop()}} is called. 18 | */ 19 | void onStop(); 20 | 21 | /** 22 | * Callback for when {@link android.app.Fragment#onDestroy()}} or {@link 23 | * android.app.Activity#onDestroy()} is called. 24 | */ 25 | void onDestroy(); 26 | } 27 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/NullConnectivityMonitor.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | /** 4 | * A no-op {@link com.bumptech.glide.manager.ConnectivityMonitor}. 5 | */ 6 | class NullConnectivityMonitor implements ConnectivityMonitor { 7 | 8 | @Override 9 | public void onStart() { 10 | // Do nothing. 11 | } 12 | 13 | @Override 14 | public void onStop() { 15 | // Do nothing. 16 | } 17 | 18 | @Override 19 | public void onDestroy() { 20 | // Do nothing. 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/manager/RequestManagerTreeNode.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.manager; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.RequestManager; 5 | import java.util.Set; 6 | 7 | /** 8 | * Provides access to the relatives of a RequestManager based on the current context. The context 9 | * hierarchy is provided by nesting in Activity and Fragments; the application context does not 10 | * provide access to any other RequestManagers hierarchically. 11 | */ 12 | public interface RequestManagerTreeNode { 13 | /** 14 | * Returns all descendant {@link RequestManager}s relative to the context of the current 15 | * {@link RequestManager}. 16 | */ 17 | @NonNull 18 | Set getDescendants(); 19 | } 20 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/module/AppliesOptions.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.module; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.NonNull; 5 | import com.bumptech.glide.GlideBuilder; 6 | 7 | /** 8 | * An internal interface, to be removed when {@link GlideModule}s are removed. 9 | */ 10 | @Deprecated 11 | interface AppliesOptions { 12 | /** 13 | * Lazily apply options to a {@link com.bumptech.glide.GlideBuilder} immediately before the Glide 14 | * singleton is created. 15 | * 16 | *

This method will be called once and only once per implementation.

17 | * 18 | * @param context An Application {@link android.content.Context}. 19 | * @param builder The {@link com.bumptech.glide.GlideBuilder} that will be used to create Glide. 20 | */ 21 | void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder); 22 | } 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/provider/ImageHeaderParserRegistry.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.provider; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.load.ImageHeaderParser; 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | /** 9 | * Contains an unordered list of {@link ImageHeaderParser}s capable of parsing image headers. 10 | */ 11 | public final class ImageHeaderParserRegistry { 12 | private final List parsers = new ArrayList<>(); 13 | 14 | @NonNull 15 | public synchronized List getParsers() { 16 | return parsers; 17 | } 18 | 19 | public synchronized void add(@NonNull ImageHeaderParser parser) { 20 | parsers.add(parser); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/request/ResourceCallback.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.request; 2 | 3 | import com.bumptech.glide.load.DataSource; 4 | import com.bumptech.glide.load.engine.GlideException; 5 | import com.bumptech.glide.load.engine.Resource; 6 | 7 | /** 8 | * A callback that listens for when a resource load completes successfully or fails due to an 9 | * exception. 10 | */ 11 | public interface ResourceCallback { 12 | 13 | /** 14 | * Called when a resource is successfully loaded. 15 | * 16 | * @param resource The loaded resource. 17 | */ 18 | void onResourceReady(Resource resource, DataSource dataSource); 19 | 20 | /** 21 | * Called when a resource fails to load successfully. 22 | * 23 | * @param e a non-null {@link GlideException}. 24 | */ 25 | void onLoadFailed(GlideException e); 26 | } 27 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/request/target/DrawableImageViewTarget.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.request.target; 2 | 3 | import android.graphics.drawable.Drawable; 4 | import android.support.annotation.Nullable; 5 | import android.widget.ImageView; 6 | 7 | /** 8 | * A target for display {@link Drawable} objects in {@link ImageView}s. 9 | */ 10 | public class DrawableImageViewTarget extends ImageViewTarget { 11 | 12 | public DrawableImageViewTarget(ImageView view) { 13 | super(view); 14 | } 15 | 16 | /** 17 | * @deprecated Use {@link #waitForLayout()} instead. 18 | */ 19 | // Public API. 20 | @SuppressWarnings({"unused", "deprecation"}) 21 | @Deprecated 22 | public DrawableImageViewTarget(ImageView view, boolean waitForLayout) { 23 | super(view, waitForLayout); 24 | } 25 | 26 | @Override 27 | protected void setResource(@Nullable Drawable resource) { 28 | view.setImageDrawable(resource); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/request/target/SizeReadyCallback.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.request.target; 2 | 3 | /** 4 | * A callback that must be called when the target has determined its size. For fixed size targets it 5 | * can be called synchronously. 6 | */ 7 | public interface SizeReadyCallback { 8 | /** 9 | * A callback called on the main thread. 10 | * 11 | * @param width The width in pixels of the target, or {@link Target#SIZE_ORIGINAL} to indicate 12 | * that we want the resource at its original width. 13 | * @param height The height in pixels of the target, or {@link Target#SIZE_ORIGINAL} to indicate 14 | * that we want the resource at its original height. 15 | */ 16 | void onSizeReady(int width, int height); 17 | } 18 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/request/transition/BitmapTransitionFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.request.transition; 2 | 3 | import android.graphics.Bitmap; 4 | import android.graphics.drawable.Drawable; 5 | import android.support.annotation.NonNull; 6 | 7 | /** 8 | * A {@link TransitionFactory} for {@link android.graphics.Bitmap}s that uses a Drawable transition 9 | * factory to transition from an existing drawable already visible on the target to the new bitmap. 10 | * 11 | * @see BitmapContainerTransitionFactory 12 | */ 13 | public class BitmapTransitionFactory extends BitmapContainerTransitionFactory { 14 | public BitmapTransitionFactory(@NonNull TransitionFactory realFactory) { 15 | super(realFactory); 16 | } 17 | 18 | @Override 19 | @NonNull 20 | protected Bitmap getBitmap(@NonNull Bitmap current) { 21 | return current; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/request/transition/TransitionFactory.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.request.transition; 2 | 3 | import com.bumptech.glide.load.DataSource; 4 | 5 | /** 6 | * A factory class that can produce different {@link Transition}s based on the state of the 7 | * request. 8 | * 9 | * @param The type of resource that needs to be animated into the target. 10 | */ 11 | public interface TransitionFactory { 12 | 13 | /** 14 | * Returns a new {@link Transition}. 15 | * 16 | * @param dataSource The {@link com.bumptech.glide.load.DataSource} the resource was loaded 17 | * from. 18 | * @param isFirstResource True if this is the first resource to be loaded into the target. 19 | */ 20 | Transition build(DataSource dataSource, boolean isFirstResource); 21 | } 22 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/signature/EmptySignature.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.signature; 2 | 3 | import android.support.annotation.NonNull; 4 | import com.bumptech.glide.load.Key; 5 | import java.security.MessageDigest; 6 | 7 | /** 8 | * An empty key that is always equal to all other empty keys. 9 | */ 10 | public final class EmptySignature implements Key { 11 | private static final EmptySignature EMPTY_KEY = new EmptySignature(); 12 | 13 | @NonNull 14 | public static EmptySignature obtain() { 15 | return EMPTY_KEY; 16 | } 17 | 18 | private EmptySignature() { 19 | // Empty. 20 | } 21 | 22 | @Override 23 | public String toString() { 24 | return "EmptySignature"; 25 | } 26 | 27 | @Override 28 | public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { 29 | // Do nothing. 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/util/AnalysisUtil.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.util; 2 | 3 | import android.util.Log; 4 | 5 | /** 6 | * Created by ZhangKe on 2019/1/17. 7 | */ 8 | public class AnalysisUtil { 9 | 10 | private static final String TAG = "AnalysisUtil"; 11 | 12 | public static void printStackTrace(){ 13 | StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); 14 | StringBuilder traceBuilder = new StringBuilder(); 15 | for(StackTraceElement e : stackTrace){ 16 | traceBuilder.append(e.toString()); 17 | traceBuilder.append("\n"); 18 | } 19 | Log.d(TAG, traceBuilder.toString()); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /library/src/main/java/com/bumptech/glide/util/Synthetic.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.util; 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 | /** 9 | * Indicates that target's visibility can be relaxed to avoid synthetic methods. 10 | */ 11 | @Retention(RetentionPolicy.SOURCE) 12 | @Target({ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.TYPE}) 13 | public @interface Synthetic { 14 | } 15 | -------------------------------------------------------------------------------- /library/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /library/test/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /library/test/src/test/java/com/bumptech/glide/load/resource/file/FileResourceTest.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.resource.file; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import java.io.File; 6 | import org.junit.Before; 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | import org.junit.runners.JUnit4; 10 | 11 | @RunWith(JUnit4.class) 12 | public class FileResourceTest { 13 | 14 | private File file; 15 | private FileResource resource; 16 | 17 | @Before 18 | public void setUp() { 19 | file = new File("Test"); 20 | resource = new FileResource(file); 21 | } 22 | 23 | @Test 24 | public void testReturnsGivenFile() { 25 | assertEquals(file, resource.get()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /library/test/src/test/java/com/bumptech/glide/load/resource/transcode/UnitTranscoderTest.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.load.resource.transcode; 2 | 3 | import static com.bumptech.glide.tests.Util.mockResource; 4 | import static org.junit.Assert.assertEquals; 5 | 6 | import com.bumptech.glide.load.Options; 7 | import com.bumptech.glide.load.engine.Resource; 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | import org.junit.runners.JUnit4; 11 | 12 | @RunWith(JUnit4.class) 13 | public class UnitTranscoderTest { 14 | 15 | @Test 16 | public void testReturnsTheGivenResource() { 17 | Resource resource = mockResource(); 18 | ResourceTranscoder unitTranscoder = UnitTranscoder.get(); 19 | 20 | assertEquals(resource, unitTranscoder.transcode(resource, new Options())); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /library/test/src/test/java/com/bumptech/glide/signature/EmptySignatureTest.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.signature; 2 | 3 | 4 | import static org.mockito.Mockito.mock; 5 | 6 | import com.bumptech.glide.load.Key; 7 | import com.bumptech.glide.tests.KeyTester; 8 | import org.junit.Rule; 9 | import org.junit.Test; 10 | import org.junit.runner.RunWith; 11 | import org.junit.runners.JUnit4; 12 | 13 | @RunWith(JUnit4.class) 14 | public class EmptySignatureTest { 15 | @Rule public final KeyTester keyTester = new KeyTester(); 16 | 17 | @Test 18 | public void testEquals() { 19 | keyTester 20 | .addEquivalenceGroup( 21 | EmptySignature.obtain(), 22 | EmptySignature.obtain()) 23 | .addEquivalenceGroup(mock(Key.class)) 24 | .addEmptyDigestRegressionTest(EmptySignature.obtain()) 25 | .test(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /library/test/src/test/java/com/bumptech/glide/tests/GlideShadowLog.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.tests; 2 | 3 | import android.util.Log; 4 | import org.robolectric.annotation.Implementation; 5 | import org.robolectric.annotation.Implements; 6 | import org.robolectric.shadows.ShadowLog; 7 | 8 | /** 9 | * Exists only to "enable" logging for test coverage. 10 | * 11 | * TODO: when we can ignore Log.* via configuration, remove this class. 12 | */ 13 | @Implements(Log.class) 14 | public class GlideShadowLog extends ShadowLog { 15 | 16 | @Implementation 17 | public static boolean isLoggable(String tag, int level) { 18 | return true; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /library/test/src/test/java/com/bumptech/glide/tests/GlideShadowLooper.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.tests; 2 | 3 | import static org.mockito.Mockito.mock; 4 | 5 | import android.os.Looper; 6 | import android.os.MessageQueue; 7 | import org.robolectric.annotation.Implementation; 8 | import org.robolectric.annotation.Implements; 9 | import org.robolectric.annotation.Resetter; 10 | import org.robolectric.shadows.ShadowLooper; 11 | 12 | @Implements(Looper.class) 13 | public class GlideShadowLooper extends ShadowLooper { 14 | public static MessageQueue queue = mock(MessageQueue.class); 15 | 16 | @Implementation 17 | public static MessageQueue myQueue() { 18 | return queue; 19 | } 20 | 21 | @Resetter 22 | @Override 23 | public void reset() { 24 | queue = mock(MessageQueue.class); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /library/test/src/test/java/com/bumptech/glide/tests/TearDownGlide.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.tests; 2 | 3 | import com.bumptech.glide.Glide; 4 | import org.junit.rules.TestRule; 5 | import org.junit.runner.Description; 6 | import org.junit.runners.model.Statement; 7 | 8 | /** 9 | * Clears out Glide's disk cache and the Glide singleton after every test method. 10 | */ 11 | public final class TearDownGlide implements TestRule { 12 | @Override 13 | public Statement apply(final Statement base, Description description) { 14 | return new Statement() { 15 | @Override 16 | public void evaluate() throws Throwable { 17 | try { 18 | base.evaluate(); 19 | } finally { 20 | Glide.tearDown(); 21 | 22 | } 23 | } 24 | }; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /library/test/src/test/java/opengles/GL.java: -------------------------------------------------------------------------------- 1 | package javax.microedition.khronos.opengles; 2 | 3 | /** 4 | * TODO: Figure out why this is necessary and remove it. 5 | * See: https://github.com/robolectric/robolectric-gradle-plugin/issues/145 6 | */ 7 | public interface GL { 8 | } 9 | 10 | -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/.gitignore: -------------------------------------------------------------------------------- 1 | /.ruby-gemset 2 | /.ruby-version 3 | /generator/Gemfile.lock 4 | /Landscape.jpg 5 | /Portrait.jpg 6 | /sources 7 | -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Landscape_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Landscape_1.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Landscape_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Landscape_2.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Landscape_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Landscape_3.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Landscape_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Landscape_4.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Landscape_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Landscape_5.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Landscape_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Landscape_6.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Landscape_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Landscape_7.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Landscape_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Landscape_8.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Makefile: -------------------------------------------------------------------------------- 1 | all: portrait landscape 2 | 3 | portrait: 4 | curl --location https://source.unsplash.com/random/1200x1600 --output ./Portrait.jpg 5 | bash -c "cd generator && ./generate.rb ../Portrait.jpg" 6 | rm -f ./Portrait.jpg 7 | 8 | landscape: 9 | curl --location https://source.unsplash.com/random/1600x1200 --output ./Landscape.jpg 10 | bash -c "cd generator && ./generate.rb ../Landscape.jpg" 11 | rm -f ./Landscape.jpg 12 | -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Portrait_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Portrait_1.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Portrait_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Portrait_2.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Portrait_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Portrait_3.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Portrait_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Portrait_4.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Portrait_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Portrait_5.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Portrait_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Portrait_6.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Portrait_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Portrait_7.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/Portrait_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/exif-orientation-examples/Portrait_8.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/VERSION: -------------------------------------------------------------------------------- 1 | 2.0.0 2 | -------------------------------------------------------------------------------- /library/test/src/test/resources/exif-orientation-examples/generator/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | ruby '2.4.1' 3 | 4 | gem 'rmagick' 5 | -------------------------------------------------------------------------------- /library/test/src/test/resources/issue387_rotated_jpeg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/issue387_rotated_jpeg.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/org.robolectric.Config.properties: -------------------------------------------------------------------------------- 1 | # Exists only to "enable" logging for test coverage. 2 | # TODO: when we can ignore Log.* via configuration, remove this line. 3 | shadows=com.bumptech.glide.tests.GlideShadowLog 4 | -------------------------------------------------------------------------------- /library/test/src/test/resources/short_exif_sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/short_exif_sample.jpg -------------------------------------------------------------------------------- /library/test/src/test/resources/test.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/library/test/src/test/resources/test.gif -------------------------------------------------------------------------------- /samples/contacturi/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /samples/contacturi/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /samples/contacturi/src/main/java/com/bumptech/glide/samples/contacturi/ContactUriModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.contacturi; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | /** 7 | * Ensures that Glide's generated API is created for the Contact Uri sample. 8 | */ 9 | @GlideModule 10 | public class ContactUriModule extends AppGlideModule { 11 | // Intentionally empty. 12 | } 13 | -------------------------------------------------------------------------------- /samples/contacturi/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /samples/contacturi/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ContactUri Sample 4 | Pick Contact 5 | Image based on contact Uri, best size on latest Android 6 | Image based on lookup Uri, same as contact Uri 7 | Image based on photo Uri, thumbnail sized, usually 96x96px 8 | Image based on display photo Uri, possibly 512x512px 9 | Find by phone number 10 | Find 11 | 12 | -------------------------------------------------------------------------------- /samples/flickr/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /samples/flickr/src/main/java/com/bumptech/glide/samples/flickr/PhotoViewer.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.flickr; 2 | 3 | import com.bumptech.glide.samples.flickr.api.Photo; 4 | import java.util.List; 5 | 6 | /** 7 | * An interface for an object that displays {@link com.bumptech.glide.samples.flickr.api.Photo} 8 | * objects. 9 | */ 10 | interface PhotoViewer { 11 | /** 12 | * Called whenever new {@link com.bumptech.glide.samples.flickr.api.Photo}s are loaded. 13 | * 14 | * @param photos The loaded photos. 15 | */ 16 | void onPhotosUpdated(List photos); 17 | } 18 | -------------------------------------------------------------------------------- /samples/flickr/src/main/java/com/bumptech/glide/samples/flickr/api/Query.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.flickr.api; 2 | 3 | import android.os.Parcelable; 4 | 5 | /** An interface representing a query in Flickr's API that returns a list of photos. */ 6 | public interface Query extends Parcelable { 7 | /** A user facing description of the query. */ 8 | String getDescription(); 9 | /** The url to use to execute the query. */ 10 | String getUrl(); 11 | } 12 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/layout/activity_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/layout/flickr_photo_grid.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/layout/flickr_photo_grid_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/layout/flickr_photo_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/layout/fullscreen_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/menu/search_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #B0000000 4 | 5 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 110dp 4 | 55dp 5 | 170dp 6 | 5dp 7 | 8dp 8 | 9 | 10 | -------------------------------------------------------------------------------- /samples/flickr/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Glide Flickr Demo 4 | Search 5 | Searching for \"%s\" on Flickr 6 | Search for \"%s\" failed, check your network connection and try again 7 | Small 8 | Medium 9 | List 10 | An image from the list of results for a search query 11 | Full screen view of an image 12 | 13 | -------------------------------------------------------------------------------- /samples/gallery/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /samples/gallery/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /samples/gallery/src/main/java/com/bumptech/glide/samples/gallery/GalleryModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.gallery; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | /** 7 | * Ensures that Glide's generated API is created for the Gallery sample. 8 | */ 9 | @GlideModule 10 | public final class GalleryModule extends AppGlideModule { 11 | // Intentionally empty. 12 | } 13 | -------------------------------------------------------------------------------- /samples/gallery/src/main/res/layout/main_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /samples/gallery/src/main/res/layout/recycler_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /samples/gallery/src/main/res/layout/recycler_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /samples/gallery/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /samples/gallery/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | gallery 4 | Photo 5 | 6 | -------------------------------------------------------------------------------- /samples/giphy/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /samples/giphy/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 8 | 14 | 19 | 20 | -------------------------------------------------------------------------------- /samples/giphy/src/main/res/layout/fullscreen_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /samples/giphy/src/main/res/layout/gif_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /samples/giphy/src/main/res/raw/large_giphy_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/giphy/src/main/res/raw/large_giphy_logo.gif -------------------------------------------------------------------------------- /samples/giphy/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16dp 3 | 4 | -------------------------------------------------------------------------------- /samples/giphy/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | GiphySample 4 | An image from the list of results for a search query 5 | An animated version of the Giphy company logo 6 | Full screen view of an image 7 | 8 | -------------------------------------------------------------------------------- /samples/giphy/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /samples/imgur/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /samples/imgur/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/ApplicationModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur; 2 | 3 | import dagger.Module; 4 | import dagger.Provides; 5 | import okhttp3.OkHttpClient; 6 | 7 | /** 8 | * The Application Dagger module for the Imgur sample. 9 | */ 10 | @Module 11 | class ApplicationModule { 12 | @Provides 13 | OkHttpClient okHttpClient() { 14 | return new OkHttpClient(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/ImgurApplication.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur; 2 | 3 | import dagger.android.AndroidInjector; 4 | import dagger.android.support.DaggerApplication; 5 | 6 | /** 7 | * Runs Dagger injection in the Imgur sample. 8 | */ 9 | public final class ImgurApplication extends DaggerApplication { 10 | @Override 11 | protected AndroidInjector applicationInjector() { 12 | return DaggerImgurApplicationComponent.create(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/ImgurApplicationComponent.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur; 2 | 3 | import com.bumptech.glide.samples.imgur.api.ApiModule; 4 | import dagger.Component; 5 | import dagger.android.AndroidInjector; 6 | import dagger.android.support.AndroidSupportInjectionModule; 7 | import javax.inject.Singleton; 8 | 9 | /** Specifies Dagger modules for {@link ImgurApplication}. */ 10 | @Singleton 11 | @Component( 12 | modules = { 13 | AndroidSupportInjectionModule.class, 14 | MainActivityModule.class, 15 | ApplicationModule.class, 16 | ApiModule.class 17 | }) 18 | public interface ImgurApplicationComponent extends AndroidInjector { 19 | // Empty. 20 | } 21 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/ImgurGlideModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | /** 7 | * Generates a Glide API for the Imgur sample. 8 | */ 9 | @GlideModule(glideName = "ImgurGlide") 10 | public class ImgurGlideModule extends AppGlideModule { 11 | // Intentionally Empty. 12 | } 13 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/MainActivityModule.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur; 2 | 3 | import dagger.Module; 4 | import dagger.android.ContributesAndroidInjector; 5 | 6 | @Module 7 | abstract class MainActivityModule { 8 | @ContributesAndroidInjector 9 | abstract MainActivity contributeMainActivityInjector(); 10 | } 11 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/api/Gallery.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur.api; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Represents Imgur's Gallery resource. 7 | * 8 | *

Populated automatically by GSON. 9 | */ 10 | final class Gallery { 11 | public List data; 12 | 13 | @Override 14 | public String toString() { 15 | return "Gallery{" 16 | + "data=" + data 17 | + '}'; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /samples/imgur/src/main/java/com/bumptech/glide/samples/imgur/api/Image.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.samples.imgur.api; 2 | 3 | /** 4 | * Represents Imgur's Image resource. 5 | * 6 | *

Populated automatically by GSON 7 | */ 8 | public final class Image { 9 | private String id; 10 | public String title; 11 | public String description; 12 | public String link; 13 | boolean is_album; 14 | 15 | @Override 16 | public String toString() { 17 | return "Image{" 18 | + "id='" + id + '\'' 19 | + ", title='" + title + '\'' 20 | + ", description='" + description + '\'' 21 | + ", link='" + link + '\'' 22 | + ", is_album='" + is_album + '\'' 23 | + '}'; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /samples/imgur/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/imgur/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/imgur/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/imgur/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/imgur/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/imgur/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/imgur/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/imgur/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/imgur/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/imgur/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/imgur/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /samples/imgur/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /samples/imgur/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Imgur 3 | 4 | -------------------------------------------------------------------------------- /samples/imgur/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /samples/svg/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /samples/svg/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 11 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /samples/svg/src/main/res/drawable/image_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /samples/svg/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/svg/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/svg/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/svg/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/svg/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/svg/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/svg/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/svg/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/svg/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/samples/svg/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /samples/svg/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /samples/svg/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /samples/svg/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SVGSample 4 | An Android robot playing with a blue linen should appear below after a \"dot dot dot\" loading image on both the left and the right side. The left is loaded from a raw resource and the right is from the internet. Click here to clear all caches. 5 | Click to cycle scale type (current: %1$s) 6 | An android playing with blue linen 7 | 8 | -------------------------------------------------------------------------------- /scripts/android-wait-for-emulator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Originally written by Ralf Kistner , but placed in the public domain 4 | 5 | set +e 6 | 7 | bootanim="" 8 | failcounter=0 9 | timeout_in_sec=360 10 | 11 | until [[ "$bootanim" =~ "stopped" ]]; do 12 | bootanim=`adb -e shell getprop init.svc.bootanim 2>&1 &` 13 | if [[ "$bootanim" =~ "device not found" || "$bootanim" =~ "device offline" 14 | || "$bootanim" =~ "running" ]]; then 15 | let "failcounter += 1" 16 | echo "Waiting for emulator to start" 17 | if [[ $failcounter -gt timeout_in_sec ]]; then 18 | echo "Timeout ($timeout_in_sec seconds) reached; failed to start emulator" 19 | exit 1 20 | fi 21 | fi 22 | sleep 1 23 | done 24 | 25 | echo "Emulator is ready" 26 | -------------------------------------------------------------------------------- /scripts/install_firebase.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | openssl aes-256-cbc -K $encrypted_ad2664a1c4dd_key -iv $encrypted_ad2664a1c4dd_iv -in $GCLOUD_FILE -out gcloud.json -d 6 | 7 | wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-176.0.0-linux-x86_64.tar.gz 8 | tar xf google-cloud-sdk-176.0.0-linux-x86_64.tar.gz 9 | echo "y" | ./google-cloud-sdk/bin/gcloud components update beta 10 | ./google-cloud-sdk/bin/gcloud auth activate-service-account --key-file gcloud.json 11 | -------------------------------------------------------------------------------- /scripts/run_instrumentation_tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Runs instrumentation tests on firebase. Must be run locally, not on travis. 3 | # 4 | # Usage: 5 | # ./scripts/run_instrumentation_test.sh 6 | 7 | ./gradlew :instrumentation:assembleDebug :instrumentation:assembleDebugAndroidTest --parallel 8 | 9 | apk_dir=instrumentation/build/outputs/apk 10 | gcloud firebase test android run \ 11 | --type instrumentation \ 12 | --app $apk_dir/instrumentation-debug.apk \ 13 | --test $apk_dir/instrumentation-debug-androidTest.apk \ 14 | --device model=Nexus6P,version=26,locale=en,orientation=portrait \ 15 | --device model=Nexus6P,version=25,locale=en,orientation=portrait \ 16 | --device model=Nexus6P,version=23,locale=en,orientation=portrait \ 17 | --device model=Nexus6,version=22,locale=en,orientation=portrait \ 18 | --device model=Nexus5,version=19,locale=en,orientation=portrait \ 19 | --project android-glide \ 20 | --no-auto-google-login \ 21 | -------------------------------------------------------------------------------- /scripts/travis_after_success.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | if [ "$COMPONENT" == "unit" ]; then 6 | ./scripts/travis_sonatype_publish.sh 7 | fi 8 | -------------------------------------------------------------------------------- /scripts/travis_before_script.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copies our debug.keystore file to its expected location to avoid a bug 3 | # where the Android build system seems to occasionally fail to generate it. 4 | 5 | set -e 6 | 7 | cp debug.keystore ~/.android/debug.keystore 8 | -------------------------------------------------------------------------------- /scripts/travis_create_emulator.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | target="system-images;android-${ANDROID_TARGET};default;armeabi-v7a" 6 | echo y | sdkmanager --update 7 | echo y | sdkmanager --install $target 8 | avdmanager create avd --force -n test -k $target --device "Nexus 4" -c 2048M 9 | QEMU_AUDIO_DRV=none $ANDROID_HOME/emulator/emulator -avd test -no-window -memory 2048 & 10 | 11 | exit 0 12 | -------------------------------------------------------------------------------- /scripts/travis_instrumentation.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | echo "Starting emulator for $COMPONENT tests" 6 | ./scripts/travis_create_emulator.sh & 7 | 8 | ./gradlew :instrumentation:assembleDebug \ 9 | :instrumentation:assembleDebugAndroidTest \ 10 | --parallel \ 11 | -PDISABLE_ERROR_PRONE 12 | 13 | echo "Waiting for emulator..." 14 | android-wait-for-emulator 15 | 16 | for i in {1..3}; do ./gradlew :instrumentation:connectedDebugAndroidTest && break; done 17 | 18 | -------------------------------------------------------------------------------- /scripts/travis_script.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | if [ -z ${encrypted_ad2664a1c4dd_key+x} ] || [ -z ${encrypted_ad2664a1c4dd_iv+x} ] || [ -z ${GCLOUD_FILE} ]; then 6 | export firebase_enabled="false" 7 | else 8 | export firebase_enabled="true" 9 | fi 10 | 11 | 12 | if [ "$COMPONENT" == "unit" ]; then 13 | ./scripts/travis_unit.sh 14 | elif [ "$COMPONENT" == "instrumentation" ]; then 15 | ./scripts/travis_instrumentation.sh 16 | elif [ "$COMPONENT" == "samples" ]; then 17 | ./scripts/travis_samples.sh 18 | elif [ "$COMPONENT" == "firebase" ]; then 19 | ./scripts/travis_firebase.sh 20 | else 21 | echo "Unrecognized component: $COMPONENT" 22 | exit 1 23 | fi 24 | -------------------------------------------------------------------------------- /scripts/travis_sonatype_publish.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Publishes the latest snapshot to Sonatype. Works only for SNAPSHOT versions. 3 | # Based closely on material from 4 | # http://benlimmer.com/2014/01/04/automatically-publish-to-sonatype-with-gradle-and-travis-ci. 5 | 6 | if [ "$SONATYPE_PUBLISH" == "true" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_BRANCH" == "$SONATYPE_PUBLISH_BRANCH" ]; then 7 | echo -e "Starting publish to Sonatype...\n" 8 | 9 | ./gradlew uploadArchives -PNEXUS_USERNAME="${NEXUS_USERNAME}" -PNEXUS_PASSWORD="${NEXUS_PASSWORD}" 10 | RETVAL=$? 11 | 12 | if [ $RETVAL -eq 0 ]; then 13 | echo 'Completed publish!' 14 | else 15 | echo 'Publish failed.' 16 | return 1 17 | fi 18 | else 19 | echo 'Skipping Sonatype push' 20 | fi 21 | -------------------------------------------------------------------------------- /scripts/travis_unit.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | ./gradlew build \ 6 | -x :samples:flickr:build \ 7 | -x :samples:giphy:build \ 8 | -x :samples:contacturi:build \ 9 | -x :samples:gallery:build \ 10 | -x :samples:imgur:build \ 11 | -x :samples:svg:build \ 12 | --parallel 13 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | exec { 2 | commandLine "git", "submodule", "update", "--init", "--recursive" 3 | ignoreExitValue true 4 | } 5 | include ':library' 6 | include ':library:pmd' 7 | include ':library:findbugs' 8 | include ':library:test' 9 | include ':instrumentation' 10 | include ':annotation' 11 | include ':annotation:compiler' 12 | include ':annotation:compiler:test' 13 | include ':glide' 14 | include ':third_party:gif_decoder' 15 | include ':third_party:disklrucache' 16 | include ':samples:flickr' 17 | include ':samples:giphy' 18 | include ':samples:svg' 19 | include ':samples:gallery' 20 | include ':samples:contacturi' 21 | include ':samples:imgur' 22 | include ':integration' 23 | include ':integration:volley' 24 | include ':integration:okhttp' 25 | include ':integration:okhttp3' 26 | include ':integration:gifencoder' 27 | include ':integration:recyclerview' 28 | include ':testutil' 29 | 30 | rootProject.name = 'glide-parent' 31 | -------------------------------------------------------------------------------- /static/cache_porcess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/cache_porcess.png -------------------------------------------------------------------------------- /static/code_statistic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/code_statistic.png -------------------------------------------------------------------------------- /static/disk_cache_file_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/disk_cache_file_list.png -------------------------------------------------------------------------------- /static/glide_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/glide_logo.png -------------------------------------------------------------------------------- /static/glide_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/glide_overview.png -------------------------------------------------------------------------------- /static/glide_package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/glide_package.png -------------------------------------------------------------------------------- /static/glide_process.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/glide_process.png -------------------------------------------------------------------------------- /static/grouped_linked_map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/grouped_linked_map.png -------------------------------------------------------------------------------- /static/journal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/journal.png -------------------------------------------------------------------------------- /static/load_package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/load_package.png -------------------------------------------------------------------------------- /static/qrcode_for_account.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/qrcode_for_account.jpg -------------------------------------------------------------------------------- /static/qrcode_for_gsubscription.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/qrcode_for_gsubscription.jpg -------------------------------------------------------------------------------- /static/request_method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/static/request_method.png -------------------------------------------------------------------------------- /testutil/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | 3 | dependencies { 4 | compile "com.google.truth:truth:${TRUTH_VERSION}" 5 | } 6 | -------------------------------------------------------------------------------- /testutil/src/main/java/com/bumptech/glide/testutil/TestResourceUtil.java: -------------------------------------------------------------------------------- 1 | package com.bumptech.glide.testutil; 2 | 3 | import java.io.InputStream; 4 | 5 | /** 6 | * Test only utility for opening resources in androidTest/resources. 7 | */ 8 | public final class TestResourceUtil { 9 | private TestResourceUtil() { 10 | // Utility class 11 | } 12 | 13 | /** 14 | * Returns an InputStream for the given test class and sub-path. 15 | * 16 | * @param testClass A Junit test class. 17 | * @param subPath The sub-path under androidTest/resources where the desired resource is 18 | * located. Should not be prefixed with a '/' 19 | */ 20 | public static InputStream openResource(Class testClass, String subPath) { 21 | return testClass.getResourceAsStream("/" + subPath); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /third_party/disklrucache/.gitignore: -------------------------------------------------------------------------------- 1 | #Eclipse 2 | .project 3 | .classpath 4 | .settings 5 | .checkstyle 6 | 7 | #IntelliJ IDEA 8 | .idea 9 | *.iml 10 | *.ipr 11 | *.iws 12 | 13 | #Maven 14 | target 15 | release.properties 16 | pom.xml.* 17 | 18 | #OSX 19 | .DS_Store 20 | 21 | #gradle 22 | build/** 23 | .gradle/** 24 | -------------------------------------------------------------------------------- /third_party/disklrucache/.travis.yml: -------------------------------------------------------------------------------- 1 | language: java 2 | sudo: false 3 | -------------------------------------------------------------------------------- /third_party/disklrucache/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2012 Jake Wharton 2 | Copyright 2011 The Android Open Source Project 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | -------------------------------------------------------------------------------- /third_party/disklrucache/README.third_party: -------------------------------------------------------------------------------- 1 | URL: https://github.com/JakeWharton/DiskLruCache/tarball/7a1ecbd38d2ad0873fb843e911d60235b7434acb 2 | Version: 7a1ecbd38d2ad0873fb843e911d60235b7434acb 3 | License: Apache 2.0 4 | License File: LICENSE 5 | 6 | Description: 7 | Java implementation of a Disk-based LRU cache which specifically targets Android compatibility. 8 | 9 | Local Modifications: 10 | Exposed File objects directly to gets, removed key validation, removed test sources. 11 | -------------------------------------------------------------------------------- /third_party/disklrucache/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | apply plugin: 'checkstyle' 3 | 4 | repositories { 5 | jcenter() 6 | } 7 | 8 | checkstyle { 9 | toolVersion = "6.6" 10 | } 11 | 12 | checkstyle { 13 | configFile = new File(projectDir, 'checkstyle.xml') 14 | } 15 | 16 | dependencies { 17 | def junitVersion = hasProperty('JUNIT_VERSION') ? JUNIT_VERSION : '4.11'; 18 | testCompile "junit:junit:${junitVersion}" 19 | testCompile 'commons-io:commons-io:2.1' 20 | testCompile 'org.easytesting:fest-assert-core:2.0M10' 21 | } 22 | 23 | def uploaderScript = "${rootProject.projectDir}/scripts/upload.gradle" 24 | if (file(uploaderScript).exists()) { 25 | apply from: uploaderScript 26 | } 27 | -------------------------------------------------------------------------------- /third_party/disklrucache/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide Disk LRU Cache Library 2 | POM_ARTIFACT_ID=disklrucache 3 | POM_PACKAGING=jar 4 | POM_DESCRIPTION=A cache that uses a bounded amount of space on a filesystem. Based on Jake Wharton's tailored for Glide. 5 | -------------------------------------------------------------------------------- /third_party/disklrucache/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/disklrucache/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /third_party/disklrucache/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat Jun 28 20:49:51 PDT 2014 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-1.12-all.zip 7 | -------------------------------------------------------------------------------- /third_party/gif_decoder/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | dependencies { 4 | implementation "com.android.support:support-annotations:${ANDROID_SUPPORT_VERSION}" 5 | 6 | testImplementation project(':testutil') 7 | testImplementation "com.android.support:support-v4:${ANDROID_SUPPORT_VERSION}" 8 | testImplementation "com.google.truth:truth:${TRUTH_VERSION}" 9 | testImplementation "junit:junit:${JUNIT_VERSION}" 10 | testImplementation "org.mockito:mockito-core:${MOCKITO_VERSION}" 11 | testImplementation "org.robolectric:robolectric:${ROBOLECTRIC_VERSION}" 12 | } 13 | 14 | android { 15 | compileSdkVersion COMPILE_SDK_VERSION as int 16 | 17 | defaultConfig { 18 | minSdkVersion MIN_SDK_VERSION as int 19 | targetSdkVersion TARGET_SDK_VERSION as int 20 | } 21 | } 22 | 23 | apply from: "${rootProject.projectDir}/scripts/upload.gradle" 24 | -------------------------------------------------------------------------------- /third_party/gif_decoder/gradle.properties: -------------------------------------------------------------------------------- 1 | POM_NAME=Glide GIF Decoder Library 2 | POM_ARTIFACT_ID=gifdecoder 3 | POM_PACKAGING=aar 4 | POM_DESCRIPTION=Implementation of GifDecoder that is more memory efficient to animate for Android devices. 5 | -------------------------------------------------------------------------------- /third_party/gif_decoder/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /third_party/gif_decoder/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_netscape_iteration_0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/gif_decoder/src/test/resources/gif_netscape_iteration_0.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_netscape_iteration_1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/gif_decoder/src/test/resources/gif_netscape_iteration_1.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_netscape_iteration_255.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/gif_decoder/src/test/resources/gif_netscape_iteration_255.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_netscape_iteration_256.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/gif_decoder/src/test/resources/gif_netscape_iteration_256.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_netscape_iteration_65535.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/gif_decoder/src/test/resources/gif_netscape_iteration_65535.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_without_graphical_control_extension.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/gif_decoder/src/test/resources/gif_without_graphical_control_extension.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/gif_without_netscape_iteration.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/gif_decoder/src/test/resources/gif_without_netscape_iteration.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/partial_gif_decode.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/gif_decoder/src/test/resources/partial_gif_decode.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/transparent_disposal_background.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/gif_decoder/src/test/resources/transparent_disposal_background.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/transparent_disposal_none.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/gif_decoder/src/test/resources/transparent_disposal_none.gif -------------------------------------------------------------------------------- /third_party/gif_decoder/src/test/resources/white_black_row.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xZhangKe/Glide-note/a5f4929f57f8d41f7cc421fd0c9c356aef3d70e9/third_party/gif_decoder/src/test/resources/white_black_row.gif -------------------------------------------------------------------------------- /third_party/gif_encoder/README.third_party: -------------------------------------------------------------------------------- 1 | URL: http://java2s.com/Code/Java/2D-Graphics-GUI/AnimatedGifEncoder.htm 2 | Version: Downloaded 9/4/2014. 3 | License: Notice 4 | License File: LICENSE 5 | 6 | Description: 7 | Android port of a GIF encoder. 8 | 9 | See also: 10 | http://members.ozemail.com.au/~dekker/NEUQUANT.HTML 11 | 12 | Local Modifications: 13 | Converted BufferedImage to Android's Bitmap class, split apart classes into individual files. 14 | Support setting transIndex based on the presence of transparent pixels in the Bitmap. 15 | -------------------------------------------------------------------------------- /third_party/gif_encoder/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /third_party/gif_encoder/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /third_party/gradle.properties: -------------------------------------------------------------------------------- 1 | # Prefix and postfix for source and javadoc jars. 2 | JAR_PREFIX=glide- 3 | JAR_POSTFIX=-thirdparty 4 | --------------------------------------------------------------------------------