{"id":14979925,"url":"https://github.com/rebooters/androidanimationexercise","last_synced_at":"2025-05-14T08:09:59.256Z","repository":{"id":38349633,"uuid":"65188539","full_name":"REBOOTERS/AndroidAnimationExercise","owner":"REBOOTERS","description":"Android 动画各种实现，包括帧动画、补间动画和属性动画的总结分享","archived":false,"fork":false,"pushed_at":"2025-05-12T12:33:40.000Z","size":131758,"stargazers_count":1999,"open_issues_count":4,"forks_count":355,"subscribers_count":56,"default_branch":"main","last_synced_at":"2025-05-14T08:09:53.455Z","etag":null,"topics":["android","android-view","animation","apk","asm","bitmap","coroutine","coroutines-android","gradle","gradle-plugin","gradle-plugin-development","gradle-script","imitate","jetpack-android","motionlayout","transform","view","viewpager"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/REBOOTERS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://rebooters.github.io/images/wechatpay.jpg","https://rebooters.github.io/images/alipay.jpg"]}},"created_at":"2016-08-08T08:52:10.000Z","updated_at":"2025-05-13T04:15:31.000Z","dependencies_parsed_at":"2023-09-26T10:13:25.401Z","dependency_job_id":"aefcb47b-cbec-4e3a-875f-6947e8e638fa","html_url":"https://github.com/REBOOTERS/AndroidAnimationExercise","commit_stats":{"total_commits":980,"total_committers":8,"mean_commits":122.5,"dds":0.4112244897959184,"last_synced_commit":"090502d88446b537b9666aea4f0ebb3df381cb78"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/REBOOTERS%2FAndroidAnimationExercise","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/REBOOTERS%2FAndroidAnimationExercise/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/REBOOTERS%2FAndroidAnimationExercise/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/REBOOTERS%2FAndroidAnimationExercise/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/REBOOTERS","download_url":"https://codeload.github.com/REBOOTERS/AndroidAnimationExercise/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101559,"owners_count":22014908,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-view","animation","apk","asm","bitmap","coroutine","coroutines-android","gradle","gradle-plugin","gradle-plugin-development","gradle-script","imitate","jetpack-android","motionlayout","transform","view","viewpager"],"created_at":"2024-09-24T14:00:56.406Z","updated_at":"2025-05-14T08:09:54.250Z","avatar_url":"https://github.com/REBOOTERS.png","language":"Java","funding_links":["https://rebooters.github.io/images/wechatpay.jpg","https://rebooters.github.io/images/alipay.jpg"],"categories":[],"sub_categories":[],"readme":"\n\n# AndroidAnimationExercise\n\n![Alt](https://repobeats.axiom.co/api/embed/0bdca57875ae2605128ec32c680a0bd5e59a6ce7.svg \"Repobeats analytics image\")\n\n[![Android CI](https://github.com/REBOOTERS/AndroidAnimationExercise/actions/workflows/android.yml/badge.svg)](https://github.com/REBOOTERS/AndroidAnimationExercise/actions/workflows/android.yml)![Language](https://img.shields.io/github/languages/top/REBOOTERS/AndroidAnimationExercise?color=blue\u0026logo=java)\n\n\n这是一个关于Android中各种View的集合，里面包含自己日常开发和博客总结中的代码。\n主要内容是**Android动画、Android自定义View 相关的知识**，**包含一些常见应用中动画效果的模仿实例**.\n随着时间的推移，里面积累的很多代码，大致用5个Fragment 做了分类：\n\n\n[Apk 下载体验](http://d.7short.com/tm15)\n\n\n扫一扫体验\n\n\u003cdetails\u003e\n\u003csummary\u003e打开\u003c/summary\u003e\n\n![扫一扫体验](https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/download.png)\n\n\u003c/details\u003e\n\n\n## ImitateFragment （模仿三方应用特效）\n\n- 仿新浪微博雷达扫描效果及卡片动画效果（[Android 动画实战-仿微博雷达功能](https://juejin.im/post/586d0f9eda2f600055cf3021)）\n- [仿懂球帝APP我是教练游戏效果](https://juejin.im/post/5974c0c3f265da6c4c50160f)\n- 仿简书长按生成图片效果\n- 沉寝式模式初探\n- 仿简书头部SearchView\n- 仿手Q侧滑菜单效果\n- 仿QQ空间下拉顶部放大效果\n\n\n### TraditionFragment (传统动画）\n\n- 传统动画即帧动画和补间动画相关的代码\n- Blur Android 实现毛玻璃效果的demo\n- Activity 切换动画\n- ViewPager 切换动画\n\n### PropertyFragment  （属性动画）\n- 属性动画特点及使用方式\n- 仿支付宝支付动画（具体分析可查看日志[Android 动画实战](http://www.jianshu.com/p/d2e06a2e65ad)）\n- 仿饿了吗商品加入购物车动画\n- Viewgroup 动画（官方demo）\n- Reveal Animation\n\n\u003e关于以上两种动画的区别分析可查看日志[Android 动画总结](http://www.jianshu.com/p/420629118c10)\n\n\n### ViewsFragment （自定义View先关）\n- PlayView[属性动画拓展（一）](http://www.jianshu.com/p/f34791f4d5ab)\n- 自定义View基础\n- Drawable 波浪动画\n- 3D 省市联动效果滚轮，很像ios的效果\n\n### OtherFragment （其他杂项）\n\n- Android 截屏后保存图片至手机相册\n- 拼图游戏（继承自RelativeLayout的动画效果，来自鸿洋大神）\n- Android WebView 中 Java于JavaScript 互相调用\n- Android 打开Camera或从相册选取照片，如何正确压缩图片，确保不发生OOM （[Android Bitmap 初探](https://juejin.im/post/58bc1f11ac502e006b0957b7)）\n- Bottom Action Sheet 菜单\n- Bitmap LRUCache，LruDiskCache 相关\n\n### What's New\n\n#### Compose\n\n- [Jetpack Compose From GuoLin](https://blog.csdn.net/guolin_blog/category_12374243.html?spm=1001.2014.3001.5482)\n- [Which Compose API to use?](https://www.jetpackcompose.app/What-is-the-equivalent-of-DrawerLayout-in-Jetpack-Compose)\n\n随着累计的动画效果越来越多，导致工程内代码越来越多，app 运行和编译时间变长。因此采用了**组件化**的方式，单独抽取了 imitate moulde . \n\nimitate 内的内容全部由 kotlin 语言实现，后续所有内容都会往这个里写，app这个module只作为以往的积累，尽量不再更改。 **本着组件化的思想，imitate 可以作为 app  的依赖组件，也可以单独运行，修改 gradle.properties 中的配置信息即可。**\n\n在组件化的过程中，使用 [ARouter](https://github.com/alibaba/ARouter) 非常方便。完全解决了页面跳转的问题。\n\n### Android 构建流程 Gradle 的学习和 Gradle 插件自定义\n\n- **由于 AGP 8.0 开始 Gradle 官方移除了 Transform API，因此这部分内容已经不适用于 AGP 8.0 以上版本。\n`main` 分支已删除这部分代码，使用 AGP 8.0 以下版本仍然可以用 `master` 分支进行编译和学习**\n- **对于这部分的功能，将通过新的 API 尝试在 `main` 分支继续实现**\n\n在 buildSrc 内包含一些关于 gradle 构建流程的自定义内容，包括\n\n- 实现生成 apk 根据 flavor 改名。\n- 对构建流程中执行的 task 按执行时长打印，发现编译耗时的 task\n- 在构建流程中对特定注解的方法或类进行耗时检测。\n- 对代码中点击事件的插桩埋点\n- 通过配置对三方库中的代码进行特定的插桩，实现特定的功能。\n\n\n以下是部分内容截屏动画\n\n## [仿懂球帝APP我是教练游戏效果](https://juejin.im/post/5974c0c3f265da6c4c50160f)\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/football.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/football2.gif\"/\u003e\n\n## galaxy 效果 \u0026\u0026 gif 反转\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/galaxy.gif\"/\u003e\u003cimg width=287 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/revert_gif.gif\"/\u003e\n\n\n\n## skeleton  \u0026\u0026 bitmap mesh 效果\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/skeleton.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/mesh.gif\"/\u003e\n\n## parallax 效果 \u0026\u0026 2048 游戏(pure web)\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/parallax.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/2048_game.gif\"/\u003e\n\n\n## 仿懂球帝球员数据网状图 \u0026\u0026 仿简书生成长图文章效果\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/polyganoView.png\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/jianshu.gif\"/\u003e\n\n\n\n## 仿知乎广告效果动画 \u0026\u0026 pure 3D animation view\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/ad.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/ad_fullscreen.gif\"/\u003e\n\n## AD Animation\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/3d_shape.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/loading-image.gif\"/\u003e\n\n\n## 动图理解scrollTo \u0026  translate 区别\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/move.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/-move.gif\"/\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e更多动画，点击打开\u003c/summary\u003e\n\n\n## 仿QQ侧滑菜单效果\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/qq.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/menu_3d.gif\"/\u003e\n\n## 波浪动画\n \n\u003cimg src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/wave_animation.gif\"/\u003e\n\n## 简易时钟效果\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/ACTION_MOVE_TO_CHANGE.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/CLOCK_VIEW.gif\"/\u003e\n\n\n## 物理动画 \u0026 Lottie Animation \n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/LottieAnimation.gif\"/\u003e\u003cimg width=300 height=390 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/physical_animation.gif\"/\u003e\n\n\n\n\n\n## 帧动画 \u0026 补间动画 ##\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/frame.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/rotate1.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/translate.gif\"/\u003e\n\n\n## 仿探探效果 \u0026 约束布局（ConstraintLayout AnimationSet） 动画\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/slide.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/constraint_set_anim.gif\"/\u003e\n\n## 支付效果  \u0026 loading\n\n\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/loading.gif\"/\u003e\u003cimg width=300 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/alipay.gif\"/\u003e\n\n## 属性动画实例 ##\n\n\n\u003cimg src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/anim1.gif\"/\u003e\u003cimg src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/anim2.gif\"/\u003e\u003cimg src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/click2.gif\"/\u003e\n\n## 一些系统信息\n\n\u003cimg width=400 src=\"https://raw.githubusercontent.com/REBOOTERS/Images/master/AndroidAnimationExercise/screen/sys_info.jpg\"/\u003e\n\n\n\n\u003c/details\u003e\n\n[![Star History Chart](https://api.star-history.com/svg?repos=REBOOTERS/AndroidAnimationExercise\u0026type=Date)](https://star-history.com/#REBOOTERS/AndroidAnimationExercise)\n\n## diagram \n\n\u003cimg src=\"diagram.svg\" /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frebooters%2Fandroidanimationexercise","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frebooters%2Fandroidanimationexercise","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frebooters%2Fandroidanimationexercise/lists"}