Android

Android实现页面跳转

2022-06-14
本文实例为大家分享了Android实现页面跳转的具体代码,供大家参考,具体内容如下 一. Android实现页面跳转有两种方式,一种为.MainActivity跳转:第二种是Relatelayout布局跳转,首先看第一种方式 1. MainActivity区域设置 public class MainActivity extends AppCompatActivity {     @Override     protected void onCreate(Bundle savedInstanceS

Android Flutter实现有趣的页面滚动效果

2022-06-14
目录 CustomScrollView 简介 改造原代码 让导航栏更有趣 改造后的代码 其他效果 总结 在Flutter 高仿一个某支付价值几个亿的页面这一篇中,我们使用了 ListView 将几个 GridView 组合在一起实现了不同可滑动组件的粘合,但是这里必须要设置禁止 GridView 的滑动,防止多个滑动组件的冲突.这种方式写起来不太方便,事实上 Flutter 提供了 CustomScrollView 来粘合多个滑动组件,并且可以实现更有趣的滑动效果. CustomScrollVi

Android自定义带有圆形进度条的可长按控件功能

2022-06-14
这几天有在学习Jetpack中CameraX的内容,在拍摄视频的时候想着做一个自定义带有进度条的可长按控件,用来显示拍摄进度,故记录下来与大家分享!效果如下: (篇幅过长是因为有代码解析过程,可直接到最后查看完整代码) 这个控件较为简易,从效果中可以看出,控件模拟了单击拍照,长按可以录制视频的功能,中途松手或者时间到都可以停止录制 思路很简单,使用简单的画笔工具就可以完成这个控件 继承自View 定义自定义属性并获取 定义填充样式的画笔 onMeasure中测量大小,onDraw中绘制圆与扇形

Android开发组件化架构设计原理到实战

2022-06-13
目录 为什么需要组件化 组件化和模块化 模块化架构 组件化架构 组件化带来的优势 组件化需解决的问题 资源冲突解决 AndroidManifest 独立调试 单工程方案 多工程方案 页面跳转 Arouter 实现组件间方法调用 组件化的消息通信方式选择 广播 事件总线 Application生命周期分发 为什么需要组件化 小项目是不需要组件化的.当一个项目有数十个人开发,编译项目要花费10分钟,修改一个bug就可能会影响到其他业务,小小的改动就需要进行回归测试,如果是这种项目,那么我们需要进行组

Android利用Hero实现列表与详情页无缝切换动画

2022-06-13
目录 前言 思路 列表元素 详情页面 源码 总结 前言 介绍了几篇 Hero 动画,我们来一个 Hero 动画应用案例.在一些应用中,列表的元素和详情的内容是一致的,这个时候利用 Hero 动画切换到详情会感觉无缝过渡,用户体验会更好.例如本篇我们要实现下面的效果: Hero 应用:列表与详情切换 思路 上面的效果是列表和详情共用了头像和头像的背景色.二者的组合是一个 Stack 组件,因此可以使用 Hero 组件完成.然后是 Hero 组件的移动,我们先做了水平移动,再做垂直方向移动,这样过渡

Android 无障碍全局悬浮窗实现示例

2022-06-13
目录 无障碍添加 UI 配置分析 Type Flag LayoutInDisplayCutoutMode Android 无障碍的全局悬浮窗可以在屏幕上添加 UI 供用户进行快捷操作,可以展示在所有应用程序之上长期展示.另一方面,在一些自动化场景下,可以用来屏蔽用户行为,防止用户手动操作打断自动化流程. 无障碍添加 UI 无障碍服务添加 UI 十分简单,使用 LayoutInflater 在 AccessibilityService 的 onServiceConnected 添加一个 UI: /

Android开发一行代码解决安卓重复点击

2022-06-13
目录 抛出问题 第一种:弹窗等待 第二种:禁止点击 第三种:时间判断 第四种:AOP实现 封装 总结 抛出问题 “大哥,有个问题想问你!” “哎,说吧(内心戏:咋又来了...准没好事!)” “我的一个页面中有一个查询按钮,点击就会发出网络请求,等待返回结果后更新数据.” “这不挺好的嘛!有啥问题啊?” “对,我也觉得没问题,但测试不按套路出牌啊,测试那边的网络不太好,她点击按钮之后由于网络比较慢就快速多点击了几下,然后...” “然后怎么了?ANR了吧?” “你咋知道的大哥?” “来吧,帮您看看

Flutter 队列任务的实现

2022-06-13
目录 前言 队列 添加任务进队列 移除队列指定任务 判断是否包含对应任务 执行队列任务 任务条件 添加任务时加入条件 执行任务前判断条件是否满足 使用和总结 前言 在电商的应用中,最常见的就是在首页或完成某事件之后,弹出一堆的活动/广告.假如重叠弹出,很丑,给用户的体验也不好,所以一般都会依次依条件的弹出. 下面讲讲我是怎么实现一个方便的队列任务管理. 队列 任务队列,那当然要有个队列.这个队列的任务内容应该是返回Future的Function,因为我需要得到他处理完成的结果,比如等待弹窗关闭时

Android 实现自定义折线图控件

2022-06-13
目录 前言 概述 原点 计算Y轴宽度 计算X轴高度 X轴 绘制轴线 X轴刻度间隔 网格线.文本 Y轴 计算Y轴分布 刻度间隔.网格线.文本 折线 代码 前言 日前,有一个“折现图”的需求,如下图所示: 概述 如何自定义折线图?首先将折线图的绘制部分拆分成三部分: 原点 X轴 Y轴 折线 原点 第一步,需要定义出“折线图”原点的位置,由图得: 可以发现,原点的位置由X轴.Y轴所占空间决定: OriginX:Y轴宽度 OriginY:View高度 - X轴高度 计算Y轴宽度 思路:遍历Y轴的绘制文字

Android实现流动的渐变色边框效果

2022-06-13
目录 前言 实现思路 总结 前言 记得在介绍 motion_toast 一篇的时候,开篇有一张动图,边框是渐变色而且感觉是流动的.这个动效挺有趣的,当时也有人问怎么实现,经过上一篇<让你的聊天气泡丰富多彩!>后,有了实现思路了. 实现思路 首先要实现但是渐变色边框,这个其实可以参考上一篇的CustomPaint 的渐变填充实现.绘制一个矩形边框,然后让渐变色的区域填充到矩形区域内就可以了. void paint(Canvas canvas, Size size) { final rectWid

Android实现好看的微信聊天气泡效果

2022-06-13
目录 前言 代码实现 踩坑记录 总结 前言 在聊天类应用中,通常用气泡作为聊天内容的背景色,比如微信的聊天背景,别人发过来的是白色的气泡,自己发的是绿色的气泡. 上面这种是比较普通的,这篇我们玩点有趣的,让聊天气泡是渐变色的.可能很多人会觉得渐变很简单,给 Container 来个decoration或者使用 DecoratedBox,使用渐变填充色就可以了,比如下面这种效果: 这个感觉也太丑了,本篇我们来一个高级的 —— 整个聊天窗口的气泡颜色是渐变的,而且随着滚动还会变化!先看看实现的效果,

详解Android中motion_toast的使用

2022-06-13
目录 前言 motion_toast 介绍 示例 最简单用法 其他内置的提醒 自定义 toast 总结 前言 我们通常会用 toast(也叫吐司)来显示提示信息,例如网络请求错误,校验错误等等.大多数 App的 toast 都很简单,简单的半透明黑底加上白色文字草草了事,比如下面这种. 说实话,这种toast 的体验很糟糕.假设是新手用户,他们并不知道 toast 从哪里出来,等出现错误的时候,闪现出来的时候,可能还没抓住内容的重点就消失了(尤其是想截屏抓错误的时候,更抓狂).这是因为一个是这种

Android学习之Span的使用方法详解

2022-06-11
目录 Span集合 段落类Span 其他Span 展示效果 小试牛刀 小结 Span集合 段落类Span BulletSpan 为段落开头增加项目符号并支持大小.颜色.弧度 span.append(SpannableString("BulletSpan").also { it.setSpan(BulletSpan(40, Color.RED), 0, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) }) QuoteSpan 为段落开头增加垂直引用线 sp

详解Flutter自定义应用程序内键盘的实现方法

2022-06-11
目录 创建关键小部件 文本键 Backspace键 将按键组成键盘 在应用程序中使用键盘 处理文本输入 处理退格 防止系统键盘显示 在系统键盘和自定义键盘之间切换 完整代码 本文将向您展示如何创建自定义键盘小部件,用于在您自己的应用程序中的Flutter TextField中输入文本.使用案例包括特殊字符或语言的文本输入,其中系统键盘可能不存在或用户可能没有安装正确的键盘. 我们今天将制作一个更简单的版本: 注意 :本文不会告诉您如何构建用户在任何应用程序中安装和使用的系统键盘.这只是一种基于小

Android不压缩图片实现高清加载巨图实例

2022-06-10
目录 一.概述 二.初识BitmapRegionDecoder 三.自定义显示大图控件 四.测试 参考链接 一.概述 对于加载图片,大家都不陌生,一般为了尽可能避免OOM都会按照如下做法: 对于图片显示:根据需要显示图片控件的大小对图片进行压缩显示.如果图片数量非常多:则会使用LruCache等缓存机制,将所有图片占据的内容维持在一个范围内. 其实对于图片加载还有种情况,就是单个图片非常巨大,并且还不允许压缩.比如显示:世界地图.清明上河图.微博长图等. 那么对于这种需求,该如何做呢? 首先不压

Android开发手册TextInputLayout样式使用示例

2022-06-10
目录 前言 布局代码 属性介绍 前言 前面小空带同学们学了EditText控件,又用其实践做了个验证码功能,以为这就完了吗? 然而并没有. Android在5.0以后引入了Materia Design库的设计,现在又有了Jetpack UI库的设计.帮助开发者更高效的实现炫酷的UI界面,降低开发门槛. Jetpack我们后面再说,承接之前的EditText,先说说Materia Design里的TextInputLayout. 使用方式是将TextInputEditText或EditText套到

Android开发TextView内的文字实现自动换行

2022-06-10
目录 前言 Layout 构造方法: 拓展 具体实现 前言 相信这个方法Canvas.drawText大家一定不陌生,TextView就是使用它将文字绘制出来.可是这个方法并没有文字换行的功能,也就是说它只能绘制一行:但是TextView的文字却是会自动换行,当页面不足以显示后面的文字时(通过android:breakStrategy属性可以调整换行时机)就会自动换行.查看源码后发现TextView是通过Layout来帮助测量文字. Layout Layout是一个抽象类,具体实现有Boring

Jetpack Compose 实现一个图片选择框架功能

2022-06-10
目录 获取图片 拍照策略 NothingCaptureStrategy FileProviderCaptureStrategy MediaStoreCaptureStrategy 总结 拍照权限 取消拍照导致的脏数据 resolveActivity API 的兼容性 File API 的兼容性 Github 知乎的 Matisse应该蛮多 Android 开发者有了解过或者是曾经使用过,这是知乎在 2017 年开源的一个 Android 端图片选择框架,其颜值在现在看来也还是挺不错的 可惜近几年

Android开发手册Button实现selector选择器

2022-06-10
目录 实践过程 selector是按钮最常用的功能,对美化控件的作用很大. 上节我们说了selector和shape联合使用,但偏向shape的介绍,今天主要说selector. 实践过程 我们先按照上一节的shape方式创建两个shape背景btn_selector_shape1.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas

Android开发EditText禁止输入监听及InputFilter字符过滤

2022-06-09
目录 监听事件 InputFilter 监听事件 setOnEditorActionListener:软键盘回车监听事件 testEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { Log.e("TAG", "on