控件
文章平均质量分 62
zhudaihai
代码改变世界
展开
-
Flutter性能优化—UI
耗时三个月总结的flutter性能分析,希望能给你带来一些收获原理篇Flutter的架构主要分成三层:Framework,Engine和EmbedderFramework使用dart实现主要提供我们开发用的APIEngine使用C++实现,主要包括:Skia,Dart和Text。Skia是开源的二维图形库,提供了适用于多种软硬件平台的通用APIEmbedder是一个嵌入层,即把Flutter嵌入到各个平台上去,这里做的主要工作包括渲染Surface设置,线程设置,以及插件等F原创 2022-03-22 12:05:42 · 1257 阅读 · 0 评论 -
flutter_boost混合开发框架集成教程
背景随着Flutter的发展,国内越来越多的App开始使用Flutter。为了降低风险,大部分App采用渐进式方式引入Flutter,在App里选几个页面用Flutter来编写,但都碰到了相同的问题,在原生页面和Flutter页面共存的情况下,如何管理路由? 官方没有提供这样的解决方案,而FlutterBoost就是为了解决这个问题而生。开源方案对比集成流程flutter配置flutter配置 第一步:在pubspec.yaml添加依赖flutter_boost: ..原创 2022-02-21 16:11:36 · 1890 阅读 · 0 评论 -
在Flutter中添加图片
配置:需要支持多分辨率的本地图片(红色框是1.0x图片,想支持更多分辨率也可以新建对应几X文件)注意1:橙色的assets和上面的橙色的uses-material-design对齐2:- 和上面橙色的assets的t对齐3:白色assets的a和上面橙色的assets的:对齐(这样配置就可以不用每个文件里面的图片再到pubspec.yaml去配置了)使用 更多资料可以到官网查看https://flutterchina.club/assets-and-i...原创 2021-10-27 17:46:54 · 3152 阅读 · 1 评论 -
Flutter使用阿里矢量图库管理项目svg图片
为什么使用阿里svg图片方便管理项目图标和协调开发,svg图标占用内存小使用:1登录阿里矢量图标库iconfont-阿里巴巴矢量图标库创建项目 上传项目需要的svg图标2安装脚手架,(作用:通过命令自动生成需要的图标资源代码,)下载 | Node.js (nodejs.org)安装后执行下面命令1安装 flutter-iconfont-cli命令npm install flutter-iconfont-cli -g2生成 iconfont 配置文件命...原创 2021-09-26 17:25:59 · 1003 阅读 · 0 评论 -
flutter自定义更新弹框初尝
效果核心代码void _showUpdateDialog(widgetContext) { String content = "1、更新内容更新内容更新内容更新内容更新内容更新内容更新内容;\n2、更新内容更新内容更新内容;\n3、更新内容更新内容更新内容更新内容更新内容\n4、更新更新内容更新内容更新内容更新内容更新内容更新更新更新更新更新。1、更新内容更新内容更新内容更新内容更新内容更新内容更新内容;\n2、更新内容更新内容更新内容;\n3、更新内容更新内容更新.原创 2021-07-02 10:51:29 · 566 阅读 · 3 评论 -
项目中如何实现一键快速切换sp到mmkv
最近看到很多博客都在分享sp的前世今生问题,或者说mmkv性能的优越,很少有介绍,在实际开发中实现一键快速切换sp到mmkv或者后面谷歌推出的DataStore;今天我从架构层面实现一键快速切换sp到mmkv或者DataStore;需求:我希望在业务代码使用后,后期替换新的框架就不用动业务逻辑代码,只需要配置下就可以切换我新的框架。实现思路:我们可以考虑使用静态代理模式实现需要。1:定义个顶层接口,接口里面定义抽象方法2:再定义个实现类,实现接口里面的方法3:再定义个代理类,代理类也原创 2021-03-13 16:26:10 · 583 阅读 · 2 评论 -
自定义viewGroup优化点击响应小技巧
在我们自定义viewgroup时,如果你自定义的viewGrope不是滑动的ViewGrop,可以从写他的shouldDelayChildPressedState方法返回false,默认返回true,系统会做个延迟100ms响应子view事件操作,//下面是源码注释/** * Return true if the pressed state should be delayed for children or descendants of this * ViewGroup. Generally,原创 2021-03-07 15:29:45 · 167 阅读 · 0 评论 -
解决Android上HTTP网络请求被限制问题
安卓高版本网络TLS权限限制 解绑在res新增个xml文件夹文件命名:network_security_config.xml<?xml version="1.0" encoding="utf-8"?><network-security-config> <base-config cleartextTrafficPermitted="true" /></network-security-config>在AndroidManif..原创 2021-03-04 18:09:51 · 850 阅读 · 1 评论 -
fragment的RadioButton 懒加载
/*** * @author zhudaihao * @date 2020/8/11 * 实现RadioButton 懒加载 */public abstract class BaseLazyNewFragment extends BaseFragment { public Unbinder unbinder; protected View rootView; private boolean isHidden = true;//记录当前fragment是否隐藏:隐藏true.原创 2021-03-03 18:46:04 · 92 阅读 · 1 评论 -
滑动title变色加背景高斯模糊效果实现
//XRecyclerView的滑动,,判断向上滑动的距离是否大于yrecyclerView.setOnScrollChangeListener(new View.OnScrollChangeListener() { @Override public void onScrollChange(View view, int i, int i1, int i2, int i3)...原创 2021-03-01 09:15:24 · 119 阅读 · 0 评论 -
studio插件的实现
今天我们写了简易版AS插件,//下载Initellj 地址http://www.jetbrains.com/idea/download/#section=windows;有收费版和社区版(Community)黑色按钮//下载时选择intellij安装好,界面如下如果你不是这个界面,也没有事,你可以带按键File 》new》object 》选择inteillij点击ne...原创 2019-09-11 10:39:58 · 451 阅读 · 0 评论 -
EditText 默认获取不到焦点 不弹出输入框
今天再开发项目输入框,页面跳转过来默认不显示输入框,开始以为获取不到焦点,就设置获取焦点,ditText.setFocusable(true);无效,就开始问度娘。发现类似提问很多,例如:方式一,在layout中:android:focusable="true" android:focusableInTouchMode="true"方式二,在代码中:// 获取编辑框焦点editText.setFocusable(true);//打开软键盘InputMethodManager i原创 2020-11-10 12:55:56 · 574 阅读 · 0 评论 -
com.youth.banner.Banner 使用glide加载圆角图片无效
在使用com.youth.banner.Banner时,使用glide加载器设置圆角无效//设置图片加载器banner.setImageLoader(new GlideImageLoader());//加载器代码public class GlideImageLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imag.原创 2020-11-02 13:41:09 · 6190 阅读 · 2 评论 -
安卓通知封装工具类兼容8.0以上版本
//安卓在8.0对通知有比较大更新,旧的API在8.0以上版本失效,下面封装工具类方便使用/** * @author zhudaihao * @date 2020-10-13 * 通知工具类 */public class NotificationUtils { /** * 创建渠道兼容8.0以上版本 * * @param channelId 渠道id * @param channelName 渠道名称 * @param impo.原创 2020-10-13 16:52:35 · 247 阅读 · 0 评论 -
Flutter 封装GlobalKey 实现局部刷新
封装类:///封装 通用局部刷新工具类typedef BuildWidget = Widget Function();// ignore: must_be_immutableclass PartRefreshWidget extends StatefulWidget { ///具体需要刷新的widget BuildWidget _child; ///Key 外部使用的GlobalKey PartRefreshWidget(Key key, this._child) : sup原创 2020-10-10 14:39:35 · 835 阅读 · 0 评论 -
android 设置TextView 字体大小不一致
private SpannableString changTVsize(String value) { SpannableString spannableString = new SpannableString(value); //0.6f设置字体大小,0-1表示需要修改文字的位置 spannableString.setSpan(new RelativeSizeSpan(0.6f), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); retur.原创 2020-09-02 11:03:41 · 692 阅读 · 0 评论 -
骚年都2020年了你还在用EventBus吗?jetpack之liveData
在说源码时简单说下liveData使用1创建一个类实现ViewModel,定义一个方法获取liveData/*** liveData是个抽象类 ,可以理解为一个能感知生命周期的仓库* mutableLIveData 是他的实现类*/public class MyViewModel extends ViewModel { //注意使用static修饰 源码直接通过类获取...原创 2020-03-15 14:52:51 · 2078 阅读 · 0 评论 -
liveDataBus使用篇
在工程的build.gradle配置allprojects { repositories { google() jcenter() maven { url 'https://jitpack.io' } }}在model的build.gradle配置dependencies {implementation 'co...原创 2020-03-15 14:32:59 · 1409 阅读 · 0 评论 -
安卓性能优化 -apk瘦身
apk的瘦身分7步骤1:图片格式转换为webp格式AS自带转换工具webp对图片的压缩,效率可以达到99%,比libjepg使用哈夫曼压缩效率还高,(libjepg使用的是哈夫曼对rgb元素进行变频压缩,webp使用预测技术压缩,利用关键帧 对四面预测 )选中需要转换的图片所在的文件夹,鼠标右键选择convert towebp, 工具就会把可以转换的图片批量转换为webp,有些图...原创 2020-02-11 20:28:04 · 262 阅读 · 0 评论 -
安卓性能优化—UI绘制优化
要优化UI绘制,首先需要知道,安卓系统绘制流程比如你再XML 绘制一个Butte↓安卓系统会把Butte信息交给CPU↓CPU把UI对象通过逻辑计算 转换成纹理↓(CPU和GPU通信OpenGL)GPU拿到CPU的纹理信息(栅格化:纹理信息转换成位图),在屏幕上绘制渲染//通过了解UI绘制流程,知道UI绘制主要由CPU和GPU负责,减少他们的工作就达到了...原创 2020-02-07 14:23:46 · 268 阅读 · 0 评论 -
安卓性能优化-电量优化
app耗电问题,现在越来越受到用户关注,优化APP耗电问题,也是越来越受到重视了。app电量优化,我们需要谷歌提供的电量历史报告分析表,分析APP耗电情况,//获取app的电量历史报告,//获取电量历史报告1:手机连接电脑 ,在控制台输入命令重置: adb shell dumpsys batterystats --reset2:获取完整的wakelock信息: ...原创 2020-02-06 17:05:43 · 226 阅读 · 0 评论 -
安卓性能优化 --图片优化
安卓开发中图片使用的频率也很高,占用的内存也是比较多,如何优化图片成为安卓开发中一个比较常见的问题。图片的优化大概可以从几个维度优化:图片压缩优化,图片色彩模式优化,图片缓存优化,长图优化图片压缩优化》图片压缩优化又可以从三个方面优化 图片的尺寸压缩 ,图片的质量压缩,图片的格式转换压缩图片的尺寸压缩:改变图片的尺寸,比如原图是100*100的,实际我只需要50*50的图片,这时我们就...原创 2020-02-04 21:42:22 · 245 阅读 · 1 评论 -
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
今天导个老项目提示错误No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-androidNDK配置问题;解决方法#1下载ndk;建议下载17目前比较稳下载ndk地址:https://developer.android.google.cn/ndk/download...原创 2020-01-17 15:23:52 · 122 阅读 · 0 评论 -
Cannot resolve corresponding JNI function Java_com_example_administrator_lsn_15_1demo_MainActivity_t
今天开发ndk时遇到定义的native函数Alt +回车 在cpp中不自动创建对应函数 ;报错如下//这种问题,一般是你的ndk的cmake文件有问题;可能是cmake版本和AS版本不兼容问题;我的AS3.2版本---------------------------------------------解决方法---------------------------------...原创 2020-01-17 12:54:21 · 546 阅读 · 0 评论 -
安卓性能优化之trace工具使用
在开发中我们想分析每段代码耗时情况 就可以使用trace工具分析了,这个工具比较详细分析每个函数耗时情况,比较直观清晰。---------------------------------------使用----------------------这个工具是安卓系统自带的直接使用就可以了#1先定义个file文件存储trace文件File file = new File(Enviro...原创 2020-01-17 11:00:32 · 1478 阅读 · 0 评论 -
ndk开发CMakeLists配置 基本使用
-------------------------------------------build.gradle配置-----------------------------------android { compileSdkVersion 28 defaultConfig { applicationId "cn.zdh.testndk2" mi...原创 2020-01-13 17:06:12 · 485 阅读 · 0 评论 -
ndk开发.mk的基本配置
----------------------------------------------------配置app的build.gradle----------------------------android { compileSdkVersion 28 defaultConfig { applicationId "cn.zdh.testndk" ...原创 2020-01-13 12:00:59 · 252 阅读 · 0 评论 -
配.mk文件报错 NDK_PROJECT_PATH=null
在配置.mk文件时提示如下报错Error while executing process D:\Users\Administrator\AppData\Local\Android\sdk\ndk-bundle\ndk-build.cmd with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=E:\dongnan\TeamTalk-mast...原创 2020-01-13 10:51:21 · 641 阅读 · 0 评论 -
.mk文件的基本配置
-------------------------------------- .mk配置 ------------------------------------------------------------早期的ndk开发,是需要配置.mk文件类型现在的cmake文件作用#这里能够决定编译 Login.c#1源文件的位置, 宏函数my-dir 返回当前目录(包含 Andr...原创 2020-01-10 15:38:00 · 3269 阅读 · 0 评论 -
命令生成jin函数签名
在jni开发中获取 jmetodID 需要函数签名,今天记录使用AS命令生成签名//1:build项目,看在 app-->build-->intermediates-->javac--->。。。里面是否生成调用函数的类;//第二步打开AS的Terminal ,切换到javac里面的classes文件下;命名cd+ 输入路径//输入路径获取可以 ...原创 2020-01-03 11:40:04 · 242 阅读 · 0 评论 -
自定义揭露效果View
今天实现一个揭露效果的自定义view;效果如下/** * 揭露view效果 */public class ExposeView extends View { //绘制揭露 画笔 private Paint paint; //初始半径 private float mCircleRadius = 18; //画笔颜色--》揭露颜...原创 2019-12-10 15:03:02 · 97 阅读 · 0 评论 -
自定义水波纹view
今天自定义个水波纹扩散 或者收缩 效果的view;先上效果/** * 自定义view实现 水波纹 效果 */public class MoireView extends View { private Paint paint; //最大半径 private int radius; //绘制半径 private int drawRadius; ...原创 2019-12-10 14:42:03 · 121 阅读 · 0 评论 -
使用region测量一个点坐标是否在path范围内
在项目中我们可以需要判断点击某个点 判断这个点是否那对应方范围;可以使用region类----------------------------------------------------使用步骤-------------------------------------------------------------------1》创建 region范围对象Region reg...原创 2019-12-08 13:16:35 · 518 阅读 · 0 评论 -
安卓沉浸式实现
安卓沉浸式是什么?安卓应用程序界面包含:状态栏,actionBar,虚拟按键区域,实现沉浸式就是将这些元素全部隐藏,只留下主内容。在我们colors设置里面是可以设置状态栏和actionBar的颜色的<!--actionBar颜色--><item name="colorPrimary">@color/colorPrimary</item>&...原创 2019-11-27 17:57:49 · 235 阅读 · 0 评论 -
Material Design开发之旅 源码篇
上面介绍了MD一些常用控件使用,那他的任何实现这些酷炫的动画呢?那就需要我们从源码层看看他的工作流程,今天看源码的主线是看看NestedScrollView和CoordinatorLayout的 ,对触摸事件处理的工作流程。//首先我们点击NestedScrollView源码,他继承FrameLayout实现NestedScrollingParent2, NestedScrollingChil...原创 2019-11-22 17:36:18 · 528 阅读 · 0 评论 -
Material Design开发之旅 使用篇
在安卓5.0(sdk21)开始,估计引入Material Design概念,那什么事Material Design呢?官方解释是:Material Design 是我们将经典的设计原则和科技、创新相结合而创造的设计语言。简单说下就是为了解决安卓碎片化,实现Ui设计的一套标准。先介绍下他包含的主要控件使用:首先需要到如MD依赖implementation 'com.android.sup...原创 2019-11-22 16:46:30 · 188 阅读 · 0 评论 -
安卓动画
补间动画(Tween Animation)a. 渐变动画支持四种类型:平移(Translate)、旋转(Rotate)、缩放(Scale)、不透明度(Alpha)。b. 只是显示的位置变动,View的实际位置未改变,表现为View移动到其他地方,点击事件仍在原处才能响应。c. 组合使用步骤较复杂。d. View Animation 也是指此动画。帧动画(Frame ...原创 2018-06-29 10:50:22 · 146 阅读 · 0 评论 -
安卓触摸事件分发流程图
对安卓事件分发有了一个系统了解后,那我们现在说说我们项目中如何处理事件冲突//以ScrollView嵌套scrollView两个ViewGruop上下滑动冲突问题为案列 xml代码如下<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android....原创 2019-11-13 12:43:40 · 350 阅读 · 0 评论 -
安卓屏幕适配
安卓开发中屏幕适配是绕不开的话题,今天总结下安卓屏幕适配的一些方案和分析下今日头条屏幕适配方案原理;-------------------------------------------------------------方案一屏幕分辩率限定符-------------------------------------------------屏幕分辨率限定符指的是在res文件夹下创建各种屏幕...原创 2019-11-12 16:08:19 · 390 阅读 · 0 评论 -
自定义view的属性
今天在写自定义QQ气泡效果view时,发现代码没有执行4参构造方法。困惑了很久,发现构造方法调用了系统的,需要修改下。//错误代码public class T extends View { public T(Context context) { super(context); } public T(Context context, @Nullab...原创 2019-11-07 16:30:23 · 114 阅读 · 0 评论