- 博客(62)
- 资源 (24)
- 问答 (2)
- 收藏
- 关注
原创 AGP7.0依赖版本管理version catalogs
使用versionCatalogs创建分组,在每个组中可以使用library、bundle 、version、plugin创建版本管理。2、libs.version.toml文件里面编写version 、plugins、libraires、bundles。1、在工程目录下创建一个libs.version.toml文件,如下图。2,比如在app模块中引入plugin依赖[app.gradle]1、在项目的build.gradle模块中加入老的依赖。1、在setting.gradle中做如下操作。
2023-11-05 15:13:44
1048
原创 Installed Build Tools revision 33.0.0 is corrupted. Remove and install again using the SDK Manager
将上面两个文件中的d8名称修改成dx,问题就解决了;
2022-10-19 11:51:54
1973
1
原创 Android之gradle自定义插件实现
Build script 脚本 —— 把插件写在build.gradle文件中,一般用于简单的逻辑,只在该build.grade文件可见buildSrc目录 —— 将插件源代码放在buildSrc/src/main中,只对该项目可见独立项目 |—— 一个独立的Java项目/模块,可以将文件包发布到仓库(Jecenter,Maven),使其他项目方便引入
2021-11-27 20:12:11
3854
2
原创 jni笔记
首先定位到build/intermediates/javac/debug/classes下面。首先定位到Adnroid工程的java目录下执行。1、首先在gradle中配置。2、其次在c文件中导入。
2021-01-24 13:10:18
563
原创 解决 Program type already present 问题
`打包报错: Program type already present: com.ohmerhe.kolley.image.Image$ImageListener`从远程更新一下代码以后报了上面的错误,“Program type already present:”考虑是系统编译之后出现的问题,就先clean project之后就解决问题了!记得以后代码有更新项目跑不起来的时候记得 clean project、clean project、clean project重要事情说三遍!!!...
2021-01-18 22:30:03
16815
1
原创 底部菜单控件BottomNavigationView的使用
BottomNavigationView实现底部导航栏的整体效果如下图所示:基本使用BottomNavigationView控件的主要属性含义:控件点击时候颜色选择@color/sl_color_green_grey完整的MainActivity代码运行的效果图如下:item多的时候,指的是item非选中状态显示文字,有以下几个值:它们依次运行如下图所示auto和select和i 属性sShifting有关此时isShifting=true;你会发现auto和 selected的效
2021-01-16 03:17:04
17159
22
原创 gradle依赖冲突的解决方式以及开发中遇到的相关问题
在当前项目开发过程中引入了了腾讯云对象存储COS的库文件之后,implementation 'com.tencent.qcloud:cosxml:5.5.5'项目死活都跑不起来;报了以下的错误:完整的错误日志如下: java.lang.NoSuchMethodError: No virtual method getHttpUrlChecked(Ljava/lang/String;)Lokhttp3/HttpUrl; in class Lokhttp3/internal/Internal; or
2021-01-14 12:55:01
5803
4
原创 安卓proguard代码混淆以及反编译工具
混淆以及反编译那些事儿含义解释:- 压缩(Shrink): 检测并删除未使用的类,字段,方法和属性。- 优化(Optimize): 分析并优化方法的字节码。- 混淆(Obfuscate): 使用简短的无意义名称例如a,b,c等,重命名类,字段和方法。- 预检(Preveirfy): 主要是在Java平台上对处理后的代码进行预检。#### 输入/输出配置项```groovy@filename```
2021-01-04 03:13:03
1410
原创 解决使用BottomSheetDialog底部虚拟导航栏NavigationBar的颜色
最新版本的BottomSheetDialog状态栏发黑问题已经没有了但是虚拟导航栏还是会发黑。华为手机在使用BottomSheetDialog的时候底部虚拟导航栏总是黑色的看着和App整个UI不搭配这里可以看到底部是黑色,要想解决需要单独为底部虚拟导航栏设置一下 @RequiresApi(api = Build.VERSION_CODES.M) private void setWhiteNavigationBar(@NonNull Dialog dialog) { Wi
2021-01-02 00:22:17
6015
6
原创 Retrofit的解析
网络框架Retrofit的源码解析1.如何使用Retrofit网络框架1.1 首先定义一个接口类public interface RemoteService { @GET("/user/{path}/name") Call<ResponseBody> getUser(@Path("path") String str);}1.2 Retrofit的网络代码...
2019-12-21 20:50:06
10359
原创 Path.setFillType()方法小结
Path.setFillType()用法这个方法用来判断图形的某个点是属于外部还是内部Path添加的图形是带有方向的 ,比如下面path添加一个圆形;Path.addCircle(getWidth() / 2, getHeight() / 2 + 150, 150, Path.Direction.CCW);第四个参数代表的是图形的方向,有两个Path.Direction.CW(顺时针)......
2019-11-13 15:35:41
1138
2
原创 约束布局ConstraintLayout看这一篇就够了
真的很有必要学习约束布局和它的辅助布局,因为它可以做出很多好看的效果,且性能高;比如这个ConstraintHelper,效果如下图所示:喜欢的可以继续往下看,不夸张的说,约束布局和其辅助布局的相关的这里都有,而且很详细;引入androidx的constraintlayout的lib相对定位基本定位属性如下表,意思好比就是那一条边和那一条边对齐,比如设置B控件的属性 layout_constraintLeft_toLeftOf=“@id/A”就表示B控件的左边对齐A控件的左边,会收到这个约束。
2019-09-12 15:53:12
5181
2
原创 AndroidStudio编译不过报 :Device supports,but APK only supports.....
AndroidStudio的开发中偶尔出现下面这样的问题:Device supports,but APK only supports…就像下图这样:出现这个问题的原因是因为,当前APK支持的系统cpu架构中,手机是不支持的;手机一共有7中,armeabi、armeabi-v7a、arm64-v8a、mips、mips64、x86、x86_64;图片中的手机设备支持 armeabi、a...
2018-12-30 12:59:53
30097
原创 时间复杂度,插入排序,冒泡排序,选择排序
理解时间复杂度,插入排序,冒泡排序,选择排序什么是时间复杂度就是近似于约等于算法总的执行的次数;说白了时间复杂度就是近似约等于算法中常数操作的次数;时间复杂度使用O(n)(可以读big O n)来表示在一个算法之中,算法常数操作次数 * 每个数的常数操作的时间 = 算法总执行的时间;什么是常数操作一个样本执行和数量没有关系,每次都是固定时间完成,叫做常数操作。比如两个数加减乘除赋值...
2018-12-27 17:45:32
7220
2
原创 华为Android 8.0以上悬浮窗权限正确开启方式
Android 8.0以上悬浮窗权限正确开启方式开发中在android 8.0上遇到了一个判断悬浮窗权限是否开启的问题,当在一个界面弹出dialog提示用户开启悬浮窗权限,用户点击之后,跳转到设置界面开启悬浮窗权限,然后返回该页面,Settings.canDrawOverlays(context) 进行权限开启的判断,结果返回的是false;程序接收到的是权限没有开启,但是到设置里面查看确实是开......
2018-09-20 14:52:16
24927
13
原创 AppBarLayout中的五种ScrollFlags使用方式汇总
AppBarLayout通过设置layout_scrollFlags参数,来控制AppBarLayout中控件的行为ChildView : 就是AppBarLayout内的某个孩子控件;ScrollingView : 就是可以滚动的View;比如RecyclerView,NestedScrollView等,这里可以滚动的View只支持实现了NestedScrollingChild接口的View。通过在ScrollingView上面设置了 app:layout_behavior=“@string/appba
2018-05-11 16:24:08
36837
7
原创 TabLayout使用介绍(com.google.android.material.tabs.TabLayout)
指示器的标签分为两种情形,一种是固定的一般3~5个标签,另一种的移动的标签;开发中经常会使用MD风格的TabLayout控件,这个控件什么都很好,就是指示器的下滑线和文字不能够对齐,这一点用过的同学都会知道的,我也在网上找了好久,也找到不到现成的,只好自己动手来写一个啦! 先声明一下,我是吧指示器标签分两种情形来写的,固定和不固定,没有合并,因为不是继承同一个控件;另外要多看看TabLayout的...
2017-10-07 18:38:45
28669
10
原创 自定义Dialog实现弹幕发送框界面
做弹幕开发的时候有时候需要一个弹幕输入的界面是必不可少的;下面我们通过一个自定义Dialog快速实现这一功能,效果就像下面这样;这种界面自己动手在xml布局里面很难搞,几乎弄不了,特别很难入手,一时也很懵逼,群里看到有人说用Dilaog来实现,就可以;果然使用Dialog很快就实现了;思路是这样:1,首先自定义一个Dialog ,Dialog里面包含EditText
2017-09-26 20:17:50
1573
转载 fiddler 手机 https 抓包
fiddler手机抓包原理fiddler手机抓包的原理与抓pc上的web数据一样,都是把fiddler当作代理,网络请求走fiddler,fiddler从中拦截数据,由于fiddler充当中间人的角色,所以可以解密https下面开始手机抓包设置教程设置fiddler抓包File—–>勾选capture traffic设置抓https和解密httpsT
2017-05-19 09:47:48
5271
1
原创 Android中获取资源的id和url方法总结
一,获取android工程里面的各种资源的id; 1.1 string型 比如下面: << string name=”OK”>> 客户端请求成功 << / string>>//string资源中 名称为OK的 id 获取方式int strId = getResources().getIdentifier("OK", "string", getPackageName());1.
2017-05-13 22:22:32
9142
原创 Android ViewGroup触摸反馈传递
在Android的UI的事件派发,我们只需要掌握两种:Vew和ViewGroup;其中ViewGroup是继承自view,只不过ViewGroup可以包含子View,对于View的事件传递的派发上一篇文章已经详细介绍分析了一遍,View的事件传递源码详细解析本篇文章我们就仔细分析ViewGroup的事件派发机制;先说一下,本来还是想用2.2的源码从头到尾仔细分析一遍,在看源码的过程之中,发现
2017-05-08 21:32:43
10538
1
原创 Android View的事件传递
View是Android中最小的基本的的UI的控件,当触摸事件传递到它的时候基本上就是最后一个处理事件的控件;它不同于ViewGroup,它没有其他的子类;并且View的事件传递的源代码是最好掌握的,所以在这里认真分析源代码,学习记录一下;源代码使用android2.2的源码,因为这个版本的View事件源代码最简单,最直接;很利于学习,而5.0的看了半天晕晕的,android从2.2到5.0的源代
2017-04-30 18:55:09
11000
1
原创 友盟多渠道打包 Android Apk
目前项目中使用到了多渠道打包的功能,首先理解多渠道打包,渠道可理解成安卓apk应用市场平台,所以多渠道打包可以理解成在打包多个应用市场的apk,要在每个应用市场上打包一个安卓Apk,这样好处是可以在查看apk在每个安卓市场的下载量,活跃度,便于公司进行重点运营和推广,因为友盟多渠道统计比较成熟,所以公司采用的是友盟的多渠道打包统计;点击官网 友盟+ 应用统计多渠道打包的步骤: 1,首先去到上面官网
2017-04-14 18:59:25
11377
原创 一个字符串中查找另一个字符出现的全部索引位置(JAVA)
开发中遇到要将某些字符文本使用SpannableStringBuilder替换成一个表情,这时候需要遍历这个字符串中特定字符出现的全部索引位置,代码如下: private String key = "*"; private String str = " * **M*1*R"; private void searchAllIndex() { int a = str.
2017-03-25 20:02:29
40355
转载 Android手机 Fildder真机抓包
Fiddler是一个http调试代理,它能 够记录所有的你电脑和互联网之间的http通讯,Fiddler 可以也可以让你检查所有的http通讯,设置断点,以及Fiddle 所有的“进出”的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它仅仅暴露http通讯还有提供一个用户友好的格式。对于A
2017-03-24 19:06:24
644
转载 Git恢复之前版本的两种方法reset、revert(图文详解)
Error running app: This version of Android Studio is incompatible with the Gradle Plugin used. Try disabling Instant Run (or updating either the IDE or the Gradle plugin to the latest version)这个
2017-03-13 20:25:53
12037
转载 AndroidStudio-调节主题代码编辑区和LogCat字体大小和背景颜色
前言:AndroidStudio的字体默认是很小的,看着很费眼,为了让写代码的过程享受一点,还是要调整一下滴.步骤:1.改变代码编辑区的字体大小2.修改代码编辑区的背景色专家建议的颜色,淡绿色,俗称豆沙绿(#BEEDBE)3.改变LogCat输出的字体大小
2017-03-11 22:39:29
2365
转载 最全的 Charles 抓包工具详解
昨天开发过程中,build时出现异常,错误消息如下:Error:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException:Error:Execution failed for task':app:mergeDebugResources'.>Error:java.util.c
2017-02-10 11:55:03
19532
原创 Fragment(碎片)的生命周期和操作方法
从一个大神哪里看到的Activit和Fragment比较全的生命周期图,很详细全面,所以忍不住要剽窃一番!原文链接:The Complete Android Activity&Fragment Lifecycle这里感谢作者辛勤劳动和付出!
2017-01-10 23:17:59
10186
1
原创 注解Annotation
java从JDK1.5开始增加了Annotation(注解)的功能,可以对类、构造方法、成员变量、方法、参数等进行声明;不会影响程序的运行,在程序运行的时候还可以通过反射读取这些信息;2.注解的分类按照运行机制分成3类1.源码注解 注解只在源代码中存在,编译成class的时候就不存在了2.编译时注解 注解在源码和class文件中都存在3.运行
2017-01-04 18:35:19
832
原创 Paint(画笔)setXfermode的设置PorterDuffXfermode特效模式
一、为什么只说PorterDuffXfermode?1.提到Xfermode,现在查看API文档会发现它有三个子AvoidXfermode,PPixelXorXfermode,PorterDuffXfermode.前两个子类在API16的时候已经过期了,现在去查看Api最新文档,你会发现只有PorterDufferXfermode一个子类.画笔Paint的setXfermode(Xfe...
2016-12-31 18:56:41
1568
原创 Android中的裁剪中Region.Op参数的用法
在Android自定义View使用绘图的裁剪功能的时候,我们最好manifest中的<application/> 或者<activity/>或者<fragment/>标签中添加如下属性android:hardwareAccelerated="false"因为裁剪功能是不支持硬件加速的.没有设置的话,有可能绘图裁剪的效果出不来;Android Can...
2016-12-18 20:19:08
15593
原创 理解Android多线程里面三种任务Runnable和Callable和FutureTask的用法
1.Runnable 和Callable和FutureTask的区别相同点:都属于线程池中要被运行的任务;不同点: Runnable是无返回值的任务,可以在线程中使用 Callable是有返回值的任务 ,不可以在线程中使用 FutureTask是有返回值,而且更易于管理和控制的任务,不可以在线程中使用;...
2016-12-08 17:06:52
6241
2
转载 Android Studio使用技巧---良心推荐的实用功能
比起Eclipse,AndroidStudio简直好用得不要不要的,谈谈心得体会Live Templates啥也不说了,就是电影里黑客那种『随便敲几下键盘 就蹦出一屏代码』的逼格~随便输入了个logd、Toast、starter、tag就蹦出这么多代码,你说酷不酷,这就是Live Templates啥,你说你输入tag,没反应,OK我们来定义一个就是,按
2016-12-06 14:49:25
957
原创 图的定义和各种术语总结
图的定义 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成; 通常表示为:G(V,E),G表示一个图,V是图G中顶点的集合,E是图G中边的集合; 注意: 在图中数据元素称之为顶点(Vertex),而且顶点集合有穷非空, 在图中任意两个顶点之间都可能有关系,顶点之间的逻辑关系用边来表示; 图的分类 1,按照有无方向,分为无向图和有向图; 无向图 如果图中任
2016-11-24 00:49:34
14460
7
原创 队列的顺序存储结构之循环队列
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出(First In First Out)的线性表,简称FIFO.允许插入的一端称为队尾,允许删除的一端称为队头。 队列的顺序存储结构使用数组的实现,假设数组长度为N,这时删除队头元素的时候,这个元素后面的每一个元素都要移动,这样就会出队的性能会下降。如下图所示: 删除队首的元素A1,那么后面的
2016-11-12 10:31:54
2760
原创 栈的顺序存储结构以及实现
栈是限定仅仅在表尾进行插入和删除操作的线性表。 允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何元素的栈称为空栈。 栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。
2016-11-05 09:54:28
620
原创 从内存角度分析,程序中为什么要有class(类)和object(对象)
为什么设计class和object在Java中类和对象都是以dev指令的形式存储在内存中的,class是类,相当于模板,通过它可以制造很多对象object;但是为什么要这样设计呢?下面通过两个方面来理解:
2016-10-13 00:03:20
3105
4
android打包AP上传Google有问题
2015-09-14
在AS中使用Git,点击View Commits 看不到别人提交的具体内容
2021-01-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人