十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

旧库迁移到Jetpack:android-submit-credit-card-flow现代化改造完整指南(Material Components + Kotlin)

旧库迁移到Jetpack:android-submit-credit-card-flow现代化改造完整指南(Material Components + Kotlin) 旧库迁移到Jetpackandroid-submit-credit-card-flow现代化改造完整指南Material Components Kotlin【免费下载链接】android-submit-credit-card-flow implementation of credit card form in material design项目地址: https://gitcode.com/gh_mirrors/an/android-submit-credit-card-flowandroid-submit-credit-card-flow是一款经典的 Android 信用卡表单credit card form开源项目用 Material Design 风格实现了卡片翻转式的四步支付流程。本指南面向新手手把手带你把这座旧库迁移到 Jetpack 技术栈AndroidX、Material Components、Kotlin、ViewPager2一次搞定。先获取代码git clone https://gitcode.com/gh_mirrors/an/android-submit-credit-card-flow 项目概览这个信用卡表单长什么样整个 App 只有一个页面核心逻辑集中在 3 个源文件里主界面app/src/main/java/ru/adonixis/submitcreditcardflow/SubmitCreditCardActivity.java—— 约 400 行负责键盘事件、进度条和翻页逻辑数据模型app/src/main/java/ru/adonixis/submitcreditcardflow/Card.java—— 存放卡号、有效期、持卡人、CVV 的简单 Java 类自定义控件app/src/main/java/ru/adonixis/submitcreditcardflow/WrapContentHeightViewPager.java—— 自己实现高度自适应 禁用滑动的 ViewPager资源文件则分布在卡片翻转动画app/src/main/res/animator/card_flip_in.xml、app/src/main/res/animator/card_flip_out.xml界面布局app/src/main/res/layout/activity_submit_credit_card.xml主题与配色app/src/main/res/values/styles.xml、app/src/main/res/values/colors.xml等宽字体模拟卡号打印效果app/src/main/res/font/ptmono.ttf体验流程是输入卡号自动每 4 位加空格→ 有效期自动插入/→ 持卡人 → CVV每一步底部进度条从 25% 走到 100%输入框还会做灰色 → 蓝色的翻转动画。这套交互正是我们迁移时要原样保留的目标。⚠️ 为什么要迁移旧版的 4 处技术债对照SubmitCreditCardActivity.java的 import 列表问题一目了然android.support.*旧 Support 库2018 年起官方已停止维护必须替换为 AndroidX旧版 DataBinding用的是android.databinding.DataBindingUtil与 AndroidX 不兼容需换成 ViewBinding主题停留在 AppCompatstyles.xml中AppTheme继承自Theme.AppCompat.Light拿不到 Material 组件的涟漪、圆角输入框等能力Java 写法冗长4 个TextWatcher匿名内部类 200 多行switch焦点控制迁移 Kotlin 后可压缩近一半 Jetpack 迁移实操四步走第 1 步一键开启 AndroidXjetifier在gradle.properties中加两行让 Gradle 自动把android.support重定向到 AndroidXandroid.useAndroidXtrue android.enableJetifiertrue然后把SubmitCreditCardActivity.java和WrapContentHeightViewPager.java中的android.support.v7/v4包名批量替换为androidx.appcompat、androidx.viewpager。此时代码应能直接编译这是最重要的安全网。第 2 步接入 Material Components打开app/src/main/res/values/styles.xml把主题父类从Theme.AppCompat.Light改为Theme.MaterialComponents.Light.NoActionBar同步更新values-v21/styles.xml和values-v23/styles.xml后者已为透明状态栏做适配可保留。在activity_submit_credit_card.xml中把普通EditText升级为com.google.android.material.textfield.TextInputLayout TextInputEditText卡号提示hint_card_number、CVV 提示hint_cvv_code见app/src/main/res/values/strings.xml自动获得 Material 上浮标签效果原来的自定义帮助图标ic_help_translucent_24dp.xml可改用TextInputLayout的endIcon属性少写一堆点击监听工具栏换成MaterialToolbarmenu/menu_main.xml里的Reset按钮继续可用第 3 步Java 转 Kotlin从最简单的模型类入手Card.java变成 10 行的 data classdata class Card( val cardNumber: String? null, val expiredDate: String? null, val cardHolder: String? null, val cvvCode: String? null )再迁移SubmitCreditCardActivity4 个TextWatcher匿名类 → 扩展函数doAfterTextChanged { }卡号每 4 位插空格、有效期插/的格式逻辑原样保留switch(position)的焦点控制 →when表达式从 60 多行缩到 20 行左右TextListener里的Toast提示CVV 说明改为MaterialAlertDialog风格统一第 4 步换血 Jetpack 组件旧实现新实现收益WrapContentHeightViewPager自研高度适配ViewPager2直接删掉整个文件且原生支持横向滑动动画旧 DataBindingDataBindingUtilViewBinding类型安全无反射开销Handler延时lifecycleScope Kotlin 协程不泄漏 Activity手写卡片翻转AnimatorSet保留card_flip_in/out.xml动画用ViewCompat加载视觉零损失ViewPager翻页逻辑迁移后onPageSelected里第 N 页 → 聚焦第 N 个输入框 进度条 25/50/75/100的行为完全不变R.id.input_layout_*这些布局 id 也无需改动这是本次迁移风险最低的边界。✅ 迁移验收清单gradle.properties已开启 AndroidX 与 jetifierstyles.xml主题为 Material Componentscolors.xml中blue#2C7DE3等色板被 Material 属性引用4 个输入框均为TextInputLayout自动格式化空格、/正常卡号输入后灰色卡片翻转为蓝色card_flip_in.xml动画生效WrapContentHeightViewPager.java与旧 DataBinding 依赖已删除全部源码为 Kotlingit clone后冷启动编译一次通过 写在最后这次改造的顺序是刻意的先 AndroidX 保证能编译 → 再 Material Components 换皮 → 然后 Kotlin 瘦身 → 最后 ViewPager2 换血。每一步都是可回滚的小提交新手照着 4 步走就能把这座 2017 年的旧库平滑升级到现代 Jetpack 技术栈同时 100% 保留它标志性的卡片翻转体验。许可协议项目遵循 Apache License 2.0见LICENSE可放心用于学习与二次开发。【免费下载链接】android-submit-credit-card-flow implementation of credit card form in material design项目地址: https://gitcode.com/gh_mirrors/an/android-submit-credit-card-flow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表