- 博客(88)
- 收藏
- 关注
原创 Android Compose 十二:常用组件列表 上拉加载
注:此法有一弊端就是,初始不够一页不足以显示到整个页面时,会自动加载够页面显示;判断 列表最后一个显示的条目 为 数据集合的长度-1。
2024-07-01 11:13:00
309
原创 Android Compose 十一:常用组件列表 compose自己个的 下拉刷新
上边是让我们使用rememberPullRefreshState,那么我们就听话看看rememberPullRefreshState。如果我们注释掉PullRefreshIndicator。
2024-06-14 11:53:41
417
原创 Android Compose 十:常用组件列表 监听
那么我们之前使用recyclerview的时候,可以通过LayoutManager监听滑动,并且可以获取到当前显示的第一条条目和最后一条条目;这里暂时不知如何判断 条目完全显示的情况,LayoutManager是有这个方法的;大意就是,我们需要监听滑动的状态,用于不同的处理。当未滑动到顶部或者底部时 回调it值一直为0。惯性滑动到顶部时 值 大于0 后 递减。当我们滑动开始和停止的时候打印如下日志。惯性滑动到顶部时 值 小于0 递增。滑动到顶部继续拖拽时 值 大于0。滑动到底部时 值 小于0。
2024-06-06 15:03:00
528
1
原创 Android Compose 九:常用组件列表 简单使用
AsyncImage 需要导包 implementation(“io.coil-kt:coil-compose:2.6.0”)LazyVerticalStaggeredGrid 和 LazyHorizontalStaggeredGrid。上边的库下半晌下不下来。效果【图片来自网络】
2024-05-25 16:31:11
374
原创 Android kotlin协程
GlobalScope.launch 不阻塞 继续执行主线程 后执行协程。coroutineScope.launch 不阻塞 继续执行主线程 后执行协程。runBlocking 阻塞主线程 执行了协程后 继续执行。runBlocking 阻塞主线程 执行了协程后 继续执行。结果 job继续执行 job1停了。结果 时间到后所在的协程也不继续执行了。结果: 执行的时候 job1加入了进来。结果 job 和 子job1都停了。1.1 协程里的挂起。
2024-05-25 14:17:19
740
原创 Android Compose 九:interactionSource 的使用
InteractionSource表示与组件发出的事件相对应的交互流。这些交互可用于更改组件在不同状态下的显示方式,例如按下或拖动组件时。当TextField 获取到焦点时边框或者背景变化 用以表示我们选中了该输入框。效果 上边的TextField 获取和失去焦点时,文字改变。等组件 都有 interactionSource 属性。创建两个TextField 可以用来切换焦点。也就是说它应该是用来记录不同的交互状态。将以上代码放入项目运行效果。下面我们就简单玩玩它。
2024-05-22 17:45:20
1343
原创 Android Compose 七:常用组件 Image
bitmap: ImageBitmap, //可以通过 ImageBitmap.imageResource(id = ) 获取图片后做处理再显示。默认 contentScale: ContentScale = ContentScale.Fit,contentScale = ContentScale.Crop 宽或高撑满布局 另外一方向居中显示。contentScale = ContentScale.FillHeight 高度撑满,宽度自适应。前边Button里说过。
2024-05-20 15:08:33
464
原创 Android Compose 六:常用组件 Button
默认 elevation: ButtonElevation?= ButtonDefaults.buttonElevation(),Button可以添加子组件,那么问题来了,子组件也有点击事件,会冲突么,是被拦截了,还是都可以触发呢?再点方法 发现 用的是 buttonElevation。interactionSource 另找时间统一瞅瞅吧。前面Text里我们讲过 主题色会影响组件的颜色。结果: 点击到文字时 内部Text被点击了。滑动事件的拦截,瀑布流的效果。等 后续单独研究吧喇叭喇叭。
2024-05-16 14:27:48
886
原创 Android Compose 五:常用组件 TextField
去除底部横线TextField(placeholder = {Text(text = "这是一个placeholder")},
2024-05-15 15:15:49
1262
原创 Android Compose四: 常用的组件 Text
于是乎我们可以复制一下Text 改造一下或者 自己定义一个组件= null,= null,= null,= null,= null,){效果那么问题来了,屏幕适配怎么整,后边再整吧!
2024-05-14 15:39:22
698
1
原创 Android 老年模式功能 放大字体
2定义多套字体样式3 通过保存的数据判断使用哪个style 调用 AppCompatActivity 的 setTheme方法设置主题在 setContentView(R.layout.activity_main); 之前调用4 使用效果
2024-05-13 17:05:12
221
1
原创 Android Compose 三:切换主题
我还是习惯变量,属性,方法名 小写开头的驼峰格式啊,┗|`O′|┛ 嗷~~//蓝色主题val main_color = Color(0xFFFF0000) //给个红红火火 这必须加透明度 好像默认的是全透明不加的话然后 将 colorScheme = redColorScheme// }//// }状态栏颜色我们也是用主题色效果如下。
2024-05-13 16:15:43
272
1
原创 Android Compose 二:布局的对齐方式
Row不支持 vertical的位置设置 那么 Column应该不支持 horizontal的设置。row可以用上边Modifer设置也可以使用如下方式。Alignment 派生对象。
2024-05-09 12:03:05
472
原创 Android Compose 一:基础控件
Flutter 与 Compose 组件辣么像,难道是同一个google团队整的;也未深究,只是猜测。
2024-05-09 10:24:36
899
原创 flutter 五点一点五:MaterialApp Theme一堆主题
iconTheme:IconThemeData 设置icon的颜色 Appbar中的icon无效
2024-01-29 11:11:36
671
原创 flutter 五点一点四:MaterialApp Theme 给你一堆颜色看看
设置 colorSchemecolorScheme: ColorScheme.dark()设置 colorSchemecolorScheme:ColorScheme.light()Ctrl+左键 点击 查看系统 snack_bar的使用。组件增加appbar。
2024-01-25 14:28:02
605
原创 flutter 五点一点二:MaterialApp Theme
获取 VisualDensity visualDensity = Theme.of(context).visualDensity;使用 padding: MaterialStateProperty.all(EdgeInsets.all(10+visualDensity.horizontal4))),4)),@override?// hintText: "请输入内容"// ),// ),},),},),),],),),
2024-01-19 10:29:03
517
原创 flutter 五点一点一:MaterialApp Theme
factory ThemeData({ ... TargetPlatform? platform, //目标平台 ScrollbarThemeData? scrollbarTheme, //滚动条主题样式 ... }platform 目标平台貌似表示的是当前Theme 的目标平台枚举值例如 我将 platform 设置为iosplatform: TargetPlatform.iOS然后运行到 android模拟器上点击跳转页面动画 为默认动画
2024-01-18 11:58:30
631
原创 flutter 五点一:MaterialApp Theme
其它类型动画 改变return即可 或可仿照系统默认切换动画类改造自己想要的动画。theme: themeGreen, //绿色。theme: themeBlue, //蓝色。theme: themeRed, //红色。修改后的切换动画 从下往上顶出动画。结果:B页面旋转放大显示。若 return改为如下。
2024-01-17 16:46:16
647
原创 Flutter 三点四:Dart 使用ServerSocket/Socket写一个简单的聊天
客户端1打印数据 收到了服务器转发的 客户端2发送的数据。此实例无页面,等待flutter 控件时再撸。
2024-01-03 10:51:34
1011
原创 Flutter 三点三:Dart Stream
Stream.listen()方法返回StreamSubscription 可用于取消事件订阅,取消后,不再接收事件。Stream.periodic 每隔多长时间执行一次任务。由结果可以看出,Stream类似于rxjava。构造函数参数表示stream的生命周期。另外一种使用方式 更加灵活。Stream其他构造方法。
2023-12-29 11:59:39
660
原创 Flutter 三点二:Dart 异步 async 和 await
【代码】Flutter 三点二:Dart 异步 async 和 await。
2023-12-28 13:44:07
1128
原创 Flutter 一:环境配置
Flutter:https://flutter.cn/docs/get-started/install/windows解决方式:1 找到 flutter目录下 \flutter\packages\flutter_tools\lib\src\http_host_validator.dart2 修改 const String kCloudHost = ‘https://storage.googleapis.com/’; 为 const String kCloudHost = ‘https://stora
2023-12-18 14:06:00
428
原创 webview h5选择图片/视频并显示
WebChromeClient @Override public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) { //此对象用来将获取到的uri回传给h5 h5filePathCallback=filePathCallba
2021-12-22 18:12:08
3087
原创 navigation+datadinding+viewmodel
创建MainActivity使用navigation底部导航+navigation<?xml version="1.0" encoding="utf-8"?><layout> <data> <variable name="bottomStyleBean" type="com.zqq.h5shell.activity.jectpackdemo.bean.BottomStyleBean" /
2021-12-01 16:50:04
1723
原创 Android JectPack笔记三-2:ViewModel/LiveData基本使用
官方地址https://developer.android.google.cn/topic/libraries/architecture/viewmodel使用ViewModel fragment间共享数据1、创建ViewModelpackage com.zqq.h5shell.activity.jectpack_navigation.model;import androidx.lifecycle.MutableLiveData;import androidx.lifecycle.ViewMo
2021-11-29 11:49:39
1377
原创 Android JectPack笔记三-1:ViewModel/LiveData基本使用
创建viewmodelimport androidx.lifecycle.MediatorLiveData;import androidx.lifecycle.ViewModel;import com.zqq.h5shell.activity.jectpack_navigation.bean.User;import java.util.ArrayList;import java.util.List;public class MyViewModle extends ViewModel {
2021-11-26 17:13:03
1940
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人