自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 资源 (1)
  • 收藏
  • 关注

原创 彻底学会Gradle插件版本和Gradle版本及对应关系

build.gradle文件里面的,gradle版本是写在gradle-wrapper.properties文件里面的。所需的gradle最低版本,详细对应关系如下表格,跟官网同步的,你说全不全。API、版本号、版本名称对应表,其实可以在Android Studio。这会你应该就明白了一个事情,就是gradle插件版本是写在。支持的最低Gradle版本为7.3.3。补充:在开发过程中我们也少不了需要知道。的Settings里面找到,如下图。API、版本号、版本名称对应表。所需的gradle最低版本。

2024-07-03 19:54:09 1551 2

原创 一招教你下载Android Studio历史版本包

gradle下载地址、Android Studio最新版本下载,Android Studio历史版本下载因为最新版本,用的人不多,出现问题时,都baidu不到解决的方案,本文不是鼓励不升级,只是不建议一下子用最新的版本

2024-05-16 22:11:33 1069 2

原创 亲测有效包教会配置build实现多渠道打包

多渠道打包、多维度、一个维度flavorDimensions、productFlavors、自定义包名 applicationVariants.all { variant -> variant.outputs.all { output -> output.outputFileName = "ll_${variant.flavorName}_${buildData()}_${variant.buildType.getName()}.apk"

2024-05-16 21:41:07 997

原创 亲测有效:自定义下拉头部刷新控件,任何子View都可以下拉

自定义下拉显示头布局进行刷新,包裹任何view都可以下拉显示头布局

2023-06-19 23:47:59 1559 1

原创 亲测有效:Android权限申请简易封装带结果回调

Android权限申请封装,带结果回调

2023-06-17 18:33:16 3143 1

原创 亲测实现PopupWindow显示FlowLayout流式布局带固定文本/按钮(位置可改)

PopupWindow显示FlowLayout流式布局带固定文本/按钮

2023-02-22 17:01:14 1780

原创 解决: Attribute meta-data#package_name@value at AndroidManifest.xml:23:13-44 requires a placeholder 错误

完整版错误信息:Merging Errors: Error: Attribute meta-data#package_name@value at AndroidManifest.xml:23:13-44 requires a placeholder substitution but no value for <package_name> is provided. app main manifest (this file), line 22 Error: Validation failed,

2020-11-20 15:57:00 9118

原创 简单粗暴包教包会的单元测试

什么是单元测试?为什么要用单元测试?会用单元测试吗?(自解)一个同事问我,明明后台都是传6,可是显示出来的就是不一样,这个问题非常严重,而且界面在项目比较深层处,还需要满足某些条件才能进去。阅读一下相关代码,发现共同使用同一个方法,单独抽出来(图中ss方法),进行单元测试,就可以排查到问题所在了。以前我对单元测试这个,不怎么上心的,现在使用某些方法时,会进行单元测试,把一些特殊数据也测一边,免得因此被怼扣绩效奖。1.单元测试操作详解图(看图不会,评论区教):...

2020-10-13 17:30:37 831

原创 实现AIQUA SDK的集成、初始化、跟踪用户的设备ID

官网:https://docs.aiqua.appier.com说明:我不太了解AIQUA是做什么的,因为某些原因接触到它,所以我这里就只讲如何集成、初始化以及我躺过的坑,具体怎么使用就不说了,我这里是新建一个项目进行的,所以没有出现什么包冲突之类的问题。为什么要写这篇呢?主要是因为,在我前面开始根据官方文档来操作时,遇到问题、最后发现需要翻墙。(可能是我的迷之操作导致这些问题的出现)整篇文章中,有哪里描述不对的地方,请指正出来,不能被我带偏了。写的步骤:先根据文档来,遇到的问题也贴一下,最

2020-08-14 11:43:32 1268

原创 亲测实现:绘制有边距的边线框

这个标题不太好取,其实就是实现:在矩形内绘制边线框(stroke),如下图:一开始拿到这个UI,相信有人跟我一样,立即想到shape、stroke,然后一顿猛虎操作:在drawable下新建stroke_bg.xml,敲出如下代码:<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:sh.

2020-07-10 11:45:37 1008

原创 一步步带你实现Android图片处理库gpuimage的配置、使用、封装、多效果集于一身(eg:灰度滤镜+鱼眼效果)

官网:https://github.com/cats-oss/android-gpuimage以下以灰色滤镜、鱼眼效果、饱和度(第二排,注意看进度条,可以随进度条变化)为例,进行讲解,效果图如下:图一:刚进去的界面,没有任何操作,上图是原图,可以优化黑色,一开始隐藏,进行图片处理时再显示; 没有操作 ...

2020-06-02 15:51:15 2155 2

原创 解决:多模块化下配置信息混淆、冲突bug,使用config.gradle解决

现在的项目都用到了多模块,

2020-05-20 14:46:57 1733

原创 flutter与android混合开发一:Android原生项目创建flutter模块、Android打开Flutter界面并传递数据

本篇主要讲解:如何在Android原有项目中创建flutter模块; Android原生代码打开flutter界面并传递数据,flutter显示接收到的数据(以简单的demo讲解)效果图如下: 步骤:一. Android原有项目创建flutter模块1.在项目下(eg: 项目路径是E:\project...

2020-03-31 10:40:04 2085

原创 flutter学习七:顶部导航栏TabBar切换子布局FutureBuilder、shared_preferences、ExpansionTile、RefreshIndicat

实现顶部导航栏TabBar+TabBarView切换子布局,因为也想写FutureBuilder、shared_preferences、ExpansionTile、RefreshIndicat文章,索性一起写了,顶部导航切换的四个子布局分别是:FutureBuilderPage:FutureBuilder的使用; SharedPreferencesPage:shared_preference...

2020-03-26 12:41:50 1829

原创 flutter学习六:实现http网络请求

昨晚学习了flutter实现http网络请求的get方法,后面学习到post等其它方法再补充。为了效果,我在eolinker上面建立了一个get接口,不知道这个虚拟url你们能不能使用,先看效果图: 一. get的请求1. 引入http包:2. 创建bean,就是用于接收服务器返回的模型3. 进行网络请求(...

2020-03-19 16:38:29 2112

原创 flutter学习五:实现轮播图Swiper、GridView布局、点击事件,ListView组装布局

好久没有自学flutter,有点落下,现在有空就抓紧补上,如标题所示,这篇博文是实现轮播图Swiper、GridView的组合布局及各自的点击事件,最后是将它们抽出方法来,而不是全部写在build里面,不然代码看起来不舒服而且不易维护。我自己摸索了一个上午,一边调试一边查阅资料,最后实现后,整理好代码就写这篇博文了。效果图如下所示(凑齐六宫格,重点后面一排): ...

2020-03-17 15:36:27 3061

原创 亲测实现:获取日期时间各种格式的:yyyy-MM-dd HH:mm:ss、yyyy年MM月dd日等等不需要再截取拼装了

这些功能应该挺多人都知道了,只是一开始我不懂,就走了弯路,后台传来的是yyyy-MM-dd,显示要求是,日月有一位数时前面不能加0,eg:2020-03-22要显示成2020年3月22日,当时自己用了最笨的方法用substring各种截取拼装、以及获取本地日期也是,后面偶然间得知,其实不用那么麻烦的,再次记录一下。一.yyyy-MM-dd HH:mm:ss .eg:2020-03-22 11:...

2020-03-16 09:48:07 4423

原创 亲测实现:RecycleView健康问卷布局(题目、选项动态)、逻辑(单选、多选功能、提交答案、显示上次选择的答案)

描述:健康问卷的题目、题目对应的选项都是由后台配置的,所以界面的布局是要根据数据来决定,使用了RecycleView实现二级列表的效果来动态布局问卷,效果图如下(录了视频,因为转GIF麻烦,所以就不上了):拿到这个问卷,想到的问题:标题中,(单选)、(多选)紧随标题的右边,两个控件要怎么布局? JSON数据及模型、在正常的项目中,提交数据后再次进来会显示之前的选中答案,要怎么显示...

2020-03-11 17:07:39 1305 1

原创 亲测解决:View.inflate动态添加子布局时不能填满问题

想要右图的效果,填满容器,可是实际上却是左边的效果,只需改一句代码: 1.原先我的代码效果如上左图,代码如下:(布局中使用了dataBinding) mBinding.clMeasurement.removeAllViews();// mBinding.clMeasurement是LinearLayout,用于装子布局的 view = View.i...

2020-03-09 11:18:18 1494

原创 亲测解决:自定义相机Camera2前后置拍照时相片翻转、旋转等显示问题

一开始我遇到的问题是,前置拍照获得的照片各种旋转、翻转,就是不能正常,解决后的前后置拍照得到的图片都正常了,效果图如下(看底部中间显示的相片): 自定义相机的实现,网上有很多代码了,我这里不贴全部的代码,就贴解决前后置拍照怎么处理照片使其正常(记得给相关权限),布局中用到的是TextureView控件。1.前后置时的SparseIntArray 设置(默认的是前...

2020-03-02 16:00:04 7323 7

原创 实现:获取相应的权限后自动执行之前的操作

一开始,我写的是,点击弹出需要的权限,允许后还需要再次点击才会执行我想要的操作,测试为此提出优化,应该是“权限获得后”就会继续前面的操作,而不是用户再操作一次,以此记录一下。怎么知道我们是允许、还是拒绝权限呢?这时候就需要onRequestPermissionsResult或onActivityResult方法。坑:在fragment里面获取权限,不会执行fragment里onReq...

2020-02-21 14:54:25 2125 1

原创 实现:RecycleView+CheckBox多选并提示选中什么

效果图如下:思路就是RecycleView+CheckBox,在适配器写个“点击”接口,在点击时调用传给Activity选中的position,进而可以得知选中的有哪些,其中需要注意的是:CheckBox控件的clickable要设置为false,因为点击事件是针对整个item布局的,当不设置为false时,就会出现统计不准确问题。步骤如下:1.准备item布局item_chec...

2020-02-20 15:37:27 2992

原创 解决:SwipeRefreshLayout嵌套RecyclerView时滑动冲突

情况:SwipeRefreshLayout嵌套RecyclerView,当内容超过屏幕下拉,不知道你是要下拉刷新还是下滑,一直认为你是下拉刷新。解决方法:添加如下代码:其中rvHome代表RecyclerView控件、srlHomeRecycleRefresh代表SwipeRefreshLayout控件,如用findViewById,请先findViewById后再添加下面代码。...

2020-02-18 10:31:40 2757

原创 实现:AndroidX手动改成Android项目,解决启动总是闪退

Android Studio3.5.2,新建项目都是默认AndroidX,想改成android项目,改动如下所示:一.gradle.properties(Project Properties),改成如下:android.useAndroidX=falseandroid.enableJetifier=false二.build.gradle(Module:app),改成如下:d...

2020-01-20 14:33:51 4834 1

原创 flutter学习四:使用自定义字体

对比图如下:左图是默认的,右图是自定义的(具体是什么字体我也不清楚,百度随便下载.ttf文件的) 操作步骤如下(前提有ttf文件):一.根目录下建立fonts文件夹,把ttf文件放进去,如下图所示:二.pubspec.yaml(原本是fonts:……只是注释掉了,我没有动它原来的,自己写了)...

2020-01-17 15:48:15 3186

原创 flutter学习三:实现登录界面,登录成功后跳转到首页,从我的界面退出登录

效果图依次如下: 一步一步摸索、查找资源,最后实现登录界面,登录成功后跳转到首页,从我的界面退出登录,这个过程涉及到了:Widgets的使用(TextField、RaisedButton、SizedBox、Row……)、路由、交互……等相关知识,代码有相应的注释(有些是根据自己的...

2020-01-15 18:10:04 12420 3

原创 flutter学习二:亲测实现官网构建布局第一个例子完整代码

这个例子原来的地址flutter:https://flutterchina.club/tutorials/layout/左图是盗官网的,右图是运行的。 为什么要写这个呢?因为我看着官网的介绍,一步步打代码,后面没有走通,一直没有想明白,也有挺多人在下面问完整的代码,而且给出的完整代码连接打不开。我也是刚刚接触flutter,这个例子捣鼓了半天才出来效果的,所...

2020-01-10 17:48:49 3106 1

原创 Android:倒计时、定时器、定时执行次数使用笔记

经常要用到倒计时、定时器,但总是搞不清楚,所以这里整理一下,方便后面使用 。一.倒计时(3、2、1)CountDownTimer()//一共3秒,每隔1秒执行一次CountDownTimer timer = new CountDownTimer(3000, 1000) { @Override public void onTick(lon...

2020-01-08 14:32:55 5876

原创 长话短说:十进制与其它进制的相互转换

十进制转其它进制(方法是自带的):转2进制 Integer.toBinaryString(n);转8进制 Integer.toOctalString(n); 转16进制 Integer.toHexString(n); 转 r 进制 Integer.toString((String) s, (int)r); r进制转10进制 Intege...

2020-01-07 11:08:13 1016

原创 flutter学习一:详解flutter安装配置、解决The Flutter SDK instalaion is incomplete、无法将"Unblock-File”项识别为、0x80240037

Flutter中文网:https://flutterchina.club/一开始看Flutter中文网,按照步骤来,自己脑子有些短路了、遇到了以下几个bug,在此记录一下。错误1:TheFlutterSDKinstalaionisincomplete;pleasesee:htps:/lutterio/docs/get-started/install.(安装的flutter ...

2019-12-31 10:21:55 8872

原创 亲测解决:flutter安装配置时出现无法将"Unblock-File”项识别为cndlet、 函数、脚本文…和安装升级powershell时出现0x80240037

flutter安装配置时,出现错误1:无法将"Unblock-File”项识别为cndlet、 函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后重试。为了解决上面的bug,需要升级到powershell,出现错误2:安装程序遇到错误:0x80240037两个bug解决(我的是Windows7):一:下载PowerShell...

2019-12-31 09:41:06 3762

原创 亲测解决升级为AndroidX出现:名称冲突: BusMutableLiveData中的observe(LifecycleOwner,Observer

Android一键升级为AndroidX(可参考:https://blog.csdn.net/weixin_40420578/article/details/100132061)LiveDataBus中出现的错误:错误: 名称冲突: BusMutableLiveData中的observe(LifecycleOwner,Observer<T#1>)和LiveData中的obser...

2019-12-27 15:15:21 2783

原创 一步步带你实现极光推送、统计(含事件统计,自定义计数、计算一直没有的原因)

极光推送官网文档https://docs.jiguang.cn//jpush/guideline/intro/自定义计数、自定义计算一直没有这个坑(最后面有写原因、解决),我研究、找资料、反复对比demo、极光文档耗了大半天,但是最后问题解决了,很开心。这也是我,为什么明明官网写得很好了,还多此一举写篇文章,因为想记录自己完成的这个过程,就比如这个坑,下次无论如何我都不会再进去了,有些东西,...

2019-12-25 17:35:59 2154

原创 一步步带你实现bugly异常上报、版本检测更新(应用升级)

一.异常上报(1)在Bugly上的操作1.bugly上注册账号:https://bugly.qq.com/2.创建产品3.查看App ID、App Key(项目中需要到)4.设置WebHook(以钉钉群为例,如何创建钉钉群机器人:https://blog.csdn.net/weixin_40420578/article/details/103277359)...

2019-12-23 15:08:03 3767

原创 okhttp3+retrofit2+rxjava+MMVP以注册为例概述一个网络请求的完整流程

注:这里以注册为例概述网络请求的完整流程,是指以我的方式、流程进行的请求,不同的开发者有不同的思路和流程一.引入包(如果有哪些找不到文件的,那就是缺包了)、网络权限api com.squareup.retrofit2:adapter-rxjava:2.5.0api com.squareup.retrofit2:converter-gson:2.5.0api io.reactivex....

2019-12-19 11:42:53 612

原创 SourceTree手动添加jar或其它文件到远程仓库

使用SourceTree进行代码的上传、拉取时,有时会出现一个情况。明明A提交了全部代码、jar,可是B拉取代码时,却始终拉不下来jar,这时需要手动提交jar。1.打开SourceTree2.按图中依次输入3.关闭后,如图所示就会把文件加进去(因为我提交过了,所以不显示提交的jar,随意改了一个文件显示)...

2019-12-16 10:28:39 1026

原创 实现SharePreference(本地)保存、获取对象、List方法及调用示例

1.对象的保存、获取、调用//保存public static void putObject(Context context, Object object) { String key = getKey(object.getClass()); Gson gson = new Gson(); String json = gson.toJson(ob...

2019-12-13 15:46:23 726

原创 实现自定义宽高(全屏)、透明度、暗度的dialog

效果图如下:1.synchronize_photo_dialog布局<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pa...

2019-12-13 15:24:12 673

原创 一步步带你实现Jenkins+Gitee+钉钉自动化构建部署

可以直接拉到文章最后第7点看效果,如果符合你的需求,再细细看!Jenkins:是一个开源软件项目,是基于Java开发的一种持续继承工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。码云(gitee.com)是 OSCHINA.NET 推出的代码托管平台,支持 Git 和 SVN,提供免费的私有仓库托管背景:在Gitee创建了项目,如下图所示:...

2019-12-12 15:49:18 1430 1

原创 实现Git获取公钥

1.输入:ssh-keygen -t rsa -C "你的邮箱"2.cat ~/.ssh/id_rsa.pub

2019-12-12 11:13:18 2205

系统自带导航栏超过三个的代码修改

系统自带的导航栏只有三个图标,当我们需要的不止三个时,可以改相应的代码添加进去,里面是文件,一些framge重复的就吧弄上去了。

2017-10-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除