首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

安卓软件开发:Jetpack Compose 和 Material 3 实现高级登录页面(Kotlin)

2024年已经过半了,我作为聋人独立开发者,我经常会时不时反思:自己这半年到底进步了多少?...一、项目背景 Material 3 是 Google 的最新 UI 框架,以声明式 UI 构建方式取代了传统的 XML 布局,很大提升了编程效率,减少了许多繁琐的代码。...id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } 2.2 初始化 Compose 项目 下载依赖项添加完成后,保证该项目设置了使用...四、学习笔记 我加深了对 Jetpack Compose 的理解,还掌握了如何在实际项目中灵活使用状态管理和组件解耦。...Material 3 组件和Compose 的结合:Material 3 提供了很多现代化的 UI 组件,像 Scaffold、TopAppBar 各等,上手体验非常好,让 UI 更美观一致。

778183

安卓软件开发:用Java和Kotlin构建MDC-UI框架实现LoginUI(基础)

MDC提供了多种精美和实用的界面组件,让开发者快速构建现代化的应用界面。在本项目中,利用MDC框架实现一个登录页面,详细展示开发过程中的技术细节和遇到的问题。...难点:MDC是Google官方提供的组件库,版本经常更新,不同版本之间存在很多不兼容性的问题,特别是和其他库(如 AndroidX、Kotlin 扩展)混合使用。...解决方法:需要仔细检查 MDC 版本和项目中其他库的兼容性,尽量使用稳定版;别忘了要提醒,定期查看更新日志,多了解新版本带来的改变和修复。...、Snackbar等,掌握了通过属性实现复杂的界面布局。...在整个过程中,掌握了MDC各组件的用法,提升了界面设计和开发效率。 有任何问题欢迎提问,感谢大家阅读 )

449101
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    compose--初入compose、资源获取、标准控件与布局

    ,每个组件都可以很方便的重用,这点在UI开发时确实便利了不少。...,也可以是drawable dimensionResource 获取对应id的dimen资源,由于compose推荐使用md主题设置dimen,用的也不多 四、标准控件 compose本身内置了一些组件...其中控件大多位于md包下,他们都具有MD风格,也是官方推荐使用的组件: 1.Text Text用于呈现一段文字,是使用最多的组件,官方也详细的介绍了该组件:https://developer.android.google.cn...TextField就是输入框,并且需要用到state,关于state后续会详细介绍 3.1 基本使用 TextField必须传入的两个参数,一个是value,一个是onValueChange ,结合之前的重组概念来理解....() -> Unit ) { } 3.1 基本使用 下面两个Image的宽高设定为40dp,由于Box设置了最小约束为50dp和70dp,所以Image变大了: @Preview @Composable

    6.4K30

    iOS:KVOKVC 的概述与使用

    KVO 一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。...简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了。 二,使用方法 系统框架已经支持KVO,所以程序员在使用的时候非常简单。 1. 注册,指定被观察者的属性, 2....二,使用方法 关键方法定义在:NSKeyValueCodingprotocol KVC支持类对象和内建基本数据类型。 获取值 valueForKey:,传入NSString属性的名字。...@end  9.      10.   11. 2.PersonMonitor类  监视了name属性  12. ...最后一次修改是直接修改  所以没法产生通知 四,小结 KVO/KVC这种编码方式使用起来很简单,很适用与datamodel修改后,引发的UIVIew的变化这种情况,就像上边的例子那样,当更改属性的值后

    1.5K80

    快来看看安卓大佬总结的AndroidX下使用Activity和Fragment的那些变化

    让我们看看它们是如何提升Android 的开发效率以及如何适应当下流行的编程规则和模式。 本文中描述的所有功能现在都可以在稳定的 AndroidX 软件包中使用,它们在去年均已发布或移至稳定版本。...此外,如果您在应用程序中使用 ViewModel,请考虑使用 AndroidX ViewModel-SavedState 使你的ViewModel 可以保存其状态。...很高兴看到 -ktx AndroidX 软件包中提供了许多有用的 Kotlin 扩展方法,并且定期添加了新的方法。...例如,在AndroidX Fragment-KTX 1.2.0 中,使用片段化类型的扩展名可用于 FragmentTransaction 上的 replace() 方法。...如果您将 FrameLayout 用作 Fragment 的容器,则应改用 FragmentContainerView 。 它修复了一些动画 z轴索引顺序问题和窗口插入调度。

    4.3K10

    写给初学者的Jetpack Compose教程,基础控件和布局

    而用了Compose之后,由于不再使用View了,所以就改用这个新的setContent函数来设置界面了。...但是,TextField使用起来可不像EditText那么容易,它的用法设计充分贴合了声明式UI的思想,而目前我们对这一思想了解还很少,所以暂时你可能会觉得这个控件很难用。...TextField同样也提供了非常丰富的API来来允许我们对它进行定制。...基本效果如下图所示: 另外你可能会觉得TextField默认的输入框背景色实在是太丑了,我们可以通过以下代码非常轻松地调整TextField的输入框背景色: @Composable fun SimpleWidgetColumn...而Compose则完全没有了这个问题,使用Compose来编写界面,你可以进行任意深度的布局嵌套,性能是丝毫不会受影响的。

    3.4K20

    kotlin构建MVVM应用之双向数据绑定

    我们在构建MVVM应用的时候数据时双向流动的,比如:用户输入了数据,那么我们的model层的数据也要自动跟着更新或者我们校验了数据,是图层也要给用户反馈;网络请求完成,我们的视图层的数据也要跟着更新。...定义model层 package com.xiangshike.live.model import androidx.databinding.ObservableField data...类型数据,我们在用户的model层定义了两个可以被观察的变量,我们可以和视图进行双向绑定 Activity package com.xiangshike.live import android.util.Log...的方法,在这里我们实现了视图和model的双向绑定 private fun login() { val username = mUserModel.username.get()....model双向绑定 @={userModel.username} 实现的双向绑定,modelview的双向数据流通 textfield.TextInputEditText

    1.5K10

    Android Socket通讯 分离服务端和客户端、发送表情消息

    :1.0.0-alpha03' 这里要注意一点,使用最新版的emoji2需要你的appcompat库在1.4.0及以上版本。...② 初始化Emoji2库 使用Emoji2库,有两种方式,一种是使用可下载的,一种是本地绑定的,可下载需要支持Google的GMS服务,本地的不需要,但是会造成apk的大小增加很多。...通过SocketApp中初始化,在页面使用的时候可以就可以无所顾忌了。为了让App在启动的时候调用SocketApp,我们需要在AndroidManifest.xml中注册。...⑦ 页面使用 一切就绪了,下面进入服务端页面ServerActivity,首先实现EmojiCallback回调,在页面中重写checkedEmoji()函数,代码如下: override fun checkedEmoji...的代码完全一致,就不过多的赘述了。

    3K30

    写给初学者的Jetpack Compose教程,使用State让界面动起来

    而使用了State来追踪某个数据之后,当这个数据的值发生变化,Compose就会自动触发重组来更新所有读取这个值的地方,从而界面就会得到更新了。...同时也意味着,我们目前终于可以使用Compose写出可交互的界面了。...,我们使用by关键字替代了之前的等号,用委托的方式来为count变量赋值。...TextField(value = "", onValueChange = {}) } } 至于为什么使用这段代码,TextField无法显示输入的内容呢?...提取到了一个TextFieldWidget函数当中,并且在这个函数中使用了状态提升的技巧,通过传入的value参数来指定TextField显示的内容,以及通过onValueChange回调来通知TextField

    1.2K20

    java之学习泛型的概述和基本使用

    泛型概述 泛型:是一种把类型明确的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。...在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的...当有了泛型之后, 对数据类型做了限制,只有在同种引用类型才可以编译通过,否则在编译期就报错,这样的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,以提高代码的重用率。...泛型好处 提高安全性(将运行期的错误转换到编译期) 省去强转的麻烦 泛型基本使用 中放的必须是引用数据类型 泛型使用注意事项 前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)...> 任意类型,如果没有明确,那么就是Object以及任意的Java类了 ? extends E:向下限定,E及其子类 ?

    62160

    Flutter开发中的一些Tips

    当然了接口不可能用的了,所以都是些死数据,实现效果可以说是很完美了(得到了设计的认可。。。)。当然自己也是边查边写,也借鉴了许多Github上优秀的Flutter项目。...当然了,这种问题也有对应的库可以解决,我使用的是flutter_keyboard_actions来解决了这个问题。因为在Android端我发现了部分输入法的兼容问题,所以只针对IOS做了处理。...因为这些插件中包括Android、IOS的所用依赖环境配置,常见的就是新版本使用了AndroidX的依赖,但是还有些插件并没有使用AndroidX,导致了两者的冲突。...我之前在看flutter-go的代码时,就是因为webview的插件突然升级了,导致了安装失败。具体问题可以看这里。所以在代码稳定的情况下不建议使用^符号。...发生了这种问题,有以下几个解决方法: 使用非AndroidX的版本插件。(优点就是见效快。

    2.2K30
    领券