自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (3)
  • 问答 (3)
  • 收藏
  • 关注

原创 0代码0侵入的安卓骨架屏框架----二期优化

本文是对自定义骨架屏框架的优化说明。针对目前对骨架屏的需求及为了实现骨架屏而付出的繁重劳动,而设计的一款0编码0业务侵入的骨架屏框架。感兴趣的可以先去看看这篇文章:额,如果不看,其实可能也不理解这篇是在说什么(⊙o⊙)…

2023-10-31 17:49:38 431 3

原创 一种简单的Android骨架屏实现方案----0侵入0成本

其主要原理是:解析正常页面的各 view 元素的布局位置,然后在已有页面的上面增加一层蒙层skeletonview,然后通过draw方法,将解析出的各个view 的 rect位置在skeletonview上画出来。首先需要 SekeltonLayout 标签包裹住目标view 标签 targetid:target......>......

2023-06-02 17:42:11 3119 12

原创 buildSrc + gradle插件:多项目共享gradle依赖管理

自定义gradle 插件,配合 buildSrc 形式的组件库版本管理,用于实现多 project 项目共享一套版本管理信息

2023-04-10 18:46:04 2013

原创 android espresso异常:PerformException的解决方案

PerformException Error performing 'single click - At Coordinates: x, y and precision: 16, 16' on view 'Animations or transitions are enabled on the target device这个异常基本不是用例本身的问题,那如何让用例继续执行下去呢

2022-08-10 18:30:11 1040

原创 关于手机设置高对比度文字对app的影响及解决方案

在安卓手机无障碍化设置中,有一项高对比度文案设置,旨在提高页面的可阅读性,就是让用户更容易看清屏幕上的文字。但是不同的手机对这个功能实现也不同,这就导致当打开这个功能的时候,反而会出现文字消失的现象。打开此项设置后,所有的五颜六色的文字会全部根据颜色的深浅变成白色或黑色两种。有的手机除此之外,还会将所有的白色文字加一个黑色描边,所有的黑色文字加一个白色描边。这种处理就比较好,不会出现白色背景下文字也是白色情况。问题出现在华为的部分手机,只会将字体颜色要么变成白色要么变成黑色,就会出现白色背景上浅灰色

2022-04-21 11:49:18 5888

原创 Gradle 4种不同依赖方式的区别

implementation、api、compileOnly、runtimeOnly 四种依赖方式的区别

2021-12-10 17:26:38 3896 2

原创 简述依赖注入框架 Hilt 的实现原理

目录结论1、Application 注解@HiltAndroidApp 注解生成的文件代码的执行流程2、对象的创建流程build 一下,看一下生成的类:对象初始化流程ActivityCImpl 开始真正执行对象创建3、Activity 中的对象是如何被加入生命周期管理的Component 组件是如何被加入到生命周期管理的ViewModel 的加入是为组件赋予生命周期的关键Hilt 其实就是 dagger,它接管了对象的创建,并没有赋予对象生命周期。按照

2021-11-30 18:20:27 2004

原创 idea自定义插件无法解析kotlin文件:找不到org.jetbrains.kotlin.psi.KtFile的解决办法

在解析源文件的时候,.java 和 .kt 文件会被解析成 PsiFile 文件。解析 java 文件时会生成 PsiJavaFile,解析 kotlin 文件时会生成 KtFile 文件,但是在代码中却无法找到 KtFile 文件。当解析 kt 文件时,通过断点能看到 file 的类型是 KtFile,但是在代码中手写时却无法找到 KtFile:org.jetbrains.kotlin.psi.KtFile包路径是报红的,说明对应的包不存在,乍一看就是对应的包没有被导入。 其他的 KtXX 文

2021-11-30 16:20:11 4711

原创 Kotlin by lazy解析及在findviewById场景中的使用

1、by lazy 简介从名字上就可以看出来,by lazy 是一种懒加载模式,也就是说变量的值并不是在声明的时候赋值的,而是在真正用到这个变量的时候,才会加载它,也就是为它赋值。并且第一次赋值后会记录好这个值,以后的访问,都会直接返回这个值。我们看一个例子:class Test { private val phone: String by lazy { "123" } private val name = "zhang san" fun hello() {

2021-08-23 14:01:57 2331

原创 Okhttp3之一次请求的全过程解析1/3:第一个层次

文档移植繁琐,请移驾????note.youdao.com/ynoteshare1…

2020-12-06 22:44:17 123

原创 Okhttp3之一次请求的全过程解析2/3:第二个层次

文档移植繁琐,请移驾????note.youdao.com/ynoteshare1…

2020-12-06 22:43:47 104

原创 Okhttp3之一次请求的全过程解析3/3:第三个层次

文档移植繁琐,请移驾????note.youdao.com/ynoteshare1…

2020-12-06 22:43:19 138

原创 OKHttp3拦截器之RetryAndFollowUpInterceptor:不要慌~~

文档移植繁琐,请移驾????RetryAndFollowUpInterceptor

2020-12-06 22:42:17 790

原创 OkHttp3拦截器之BridgeInterceptor:我来这只干三件事

文档移植繁琐,请移驾????BridgeInterceptor

2020-12-06 22:41:42 117

原创 OkHttp3拦截器之CacheInterceptor:路得一步一步走

文档移植繁琐,请移驾????CacheInterceptor

2020-12-06 22:40:39 105

原创 OkHttp3拦截器之ConnectInterceptor:短怎么了

????短到没目录????文档移植繁琐,请移驾????ConnectInterceptor

2020-12-06 22:39:49 113

原创 OkHttp3拦截器之CallServerInterceptor:这就完了?

大家听我说,CallServerInterceptor没这么短的!文档移植繁琐,请移驾????CallServerInterceptor

2020-12-06 22:38:46 106

原创 面向流程且略带细节的一次完整的OkHttp3网络请求过程所涉及到的源码和原理分析

面向流程且略带细节的一次完整的OkHttp3网络请求过程所涉及到的源码和原理分析是的,标题说的很明白了。纯源码分析,及涉及到的原理。很遗憾,没有让你怦然心动的图和表很遗憾,需点击下面的链接开启浏览,我实在不知道怎么把有道文档弄到csdn了o(╥﹏╥)o→ → → https://note.youdao.com/ynoteshare1/index.html?id=43a04fe026eafd3a332788ed538050e7&type=note...

2020-09-30 10:38:44 131

原创 Kotlin协程上下文CoroutineContext是如何可相加的

假设你已经知道协程上下文CoroutineContext这个东西,并且知道它是可以相加的了三个主要的类CoroutineContext: 所有上下文的接口CombinedContext:上下文组合时生成的类CoroutineContext.Element:大部分单个上下文实现的类,因为有的会直接实现CoroutineContext上下文相加的逻辑需要这三个类的方法配合实现。其中,所有的行为逻辑都在CoroutineContext 接口中通过声明的方法定义好了。也就是说,当..

2020-08-13 11:57:31 1349 4

原创 安卓自定义流式布局——真正像潺潺流水一样

通过重写RelativeLayout,设置其中的每个子View的相对关系来实现的流式布局,全局只有一层父view,也就是说布局结构只有两层。主要功能:1.设置行间距2.设置子View之间的间距3.设置水平是否均匀平铺4.设置垂直方向对齐方式——顶部对齐,居中对齐,底部对齐。5.支持子View删除时的布局重绘。效果图如下:

2017-12-13 13:54:00 956 1

原创 安卓自定义View----实现TextView可设置drawable宽高度

前言如上图所示,相信可爱的安卓程序猿们在开发中经常会遇到这种样式的UI开发。其实上面这种布局很简单,没有难度,只不过是繁杂的view嵌套而已。通常我们在实现上面这种效果的时候会有3种方式:方式一:  一层一层的搭建,首先外层是一个横向的LinearLayout,然后里面包裹着四个LinearLayout作为子View, 每一个Linearlayout里面再写上一个ImageView和一

2017-09-16 00:32:04 4985

原创 完美解决smoothScrollToPosition(0)失效的问题

我们知道,当调用smoothScrollToPosition(0)方法,listView会快速的平滑的滑动到顶部。但是当listView加载的数据list太多的时候,这个方法就会失效,据网上的介绍,是因为这个方法会消耗太多的资源,所以不能完全处理完所有的items 回到顶部。于是就滑动到一个不确定的位置。那怎么解决这个问题呢,有两个方法可供选择:方法一:使用setSelection(0

2017-02-10 16:23:02 15240

原创 原来操控界面可以这么简单----安卓上下滑动缩放顶部图片,左右滑动结束当前Activity,及View柔和回弹效果

添加setOnTouchListener。上下滑动和左右滑动的所有操作都是在OnTouchListener的onTouch方法中实现的,通过计算上下左右滑动的距离来操作View的。以此来实现上下滑动缩放图片,达到图层遮挡效果。左右滑动实现当前界面滑动,达到滑动结束当前activity的效果。

2017-01-19 17:06:49 6184 1

原创 Popupwindow的showAsDropDown方法详解

PopupWindow在开发项 目中,经常会用popupwindow来弹出一个供选择操作的窗口,作为一个弹出菜单一样被使用。一般这时候设置popupwindow的位置时都是设置在点击的view下面弹出展示。比如点击一个button,只要使用showAsDropDown(btn)方法,popupwindow就会贴着button的底部显示出来。如下图一样:基本的是代码:main

2016-12-10 12:37:20 20647

原创 android6.x运行时权限申请管理

android6.x后,对一些级别比较重要的权限(级别为dangerous),需要在运行时都动态的请求授权,具体的步骤比较简单,如下几步:在AndroidManifest文件中添加需要的权限。不管是什么级别的,都要在文件中添加上。检查权限if (ContextCompat.checkSelfPermission(thisActivity,Manifest

2016-10-26 14:51:33 2565

原创 解决安卓动画setFillAfter无效的问题

xml version="1.0" encoding="utf-8"?>set xmlns:android="http://schemas.android.com/apk/res/android" >translate android:fromYDelta="-100%" android:toYDelta="200%" android:fromXDe

2016-09-22 16:57:25 3001

原创 SwipeRefreshLayout的使用方法

SwipeRefreshLayout其实是一个viewgroup,它其中只能含有一个子view.用法很简单,activity_main.xml:xml version="1.0" encoding="utf-8"?>LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

2016-09-01 15:09:16 863

原创 Fragment向Activity传值

通过回调接口实现fragment向父层的activity传值:定义一个接口public interfaceFullInfoInterface {public voidinitFullInfo(Object o);}fragment中添加接口的对象//回调赋值给ActivityFullInfoInterfacefullInfoInterface;

2016-08-10 15:12:43 448

原创 安卓实现安装已有apk到系统目录下和安装apk自身到系统目录下

手机一定要root ,没有root 实现不了,安装其他apk是参考网上的资料的,安装自身apk原理上差不多。不管哪样,安装完后要重启手机才能看到。这也是一个没解决的问题。安装其他apk:tom.apk要安装的tom.apk要事先存储在手机存储的根目录下。通过在代码中执行linux命令来将tom.apk安装到system/app目录下。其实实际上是把这个tom.apk文件拷贝到了system

2015-08-25 10:22:34 3015

0侵入0成本接入的安卓骨架屏框架源代码

解析正常页面的各 view 元素的布局位置,然后在已有页面的上面增加一层蒙层skeletonview,然后通过draw方法,将解析出的各个view 的 rect位置在skeletonview上绘制出来。 对已有业务逻辑和代码实现0侵入。 项目接入实现0成本。

2023-08-24

findViews-0603.jar

fingviewById的代码生成插件,创建以 by lazy 形式声明的 view private val mLvlCommentHistory: ListViewLayout by lazy(LazyThreadSafetyMode.NONE) { findViewById<ListViewLayout>(R.id.lvl_comment_history) } private val mTopFilterView: CommentFilterView by lazy(LazyThreadSafetyMode.NONE) { findViewById<CommentFilterView>(R.id.cfv_comment_history_filter_view) } private val mTopFilterViewLine: View by lazy(LazyThreadSafetyMode.NONE) { findViewById<View>(R.id.line_comment_history_filter_view) } private val mBottomAppraiseBtn: RoundTextView by lazy(LazyThreadSafetyMode.NONE) { findViewById<RoundTextView>(R.id.tv_comment_history_appraise_btn) } private val mBottomLayout: FrameLayout by lazy(LazyThreadSafetyMode.NONE) { findViewById<FrameLayout>(R.id.fl_comment_history) }

2021-08-23

Activity上下滑动左右滑动效果

Activity上下滑动左右滑动效果。

2017-01-20

黑马52期android无加密全视频

更新的链接,,黑马52期android全视频下载,无加密,黑马52期android全视频下载,无加密

2016-12-06

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

TA关注的人

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