自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (6)
  • 收藏
  • 关注

原创 Android RecyclerView 四级缓存机制

Android RecyclerView 四级缓存机制1、Scrap (mChangedScrap、mAttachedScrap)涉及保存屏幕内的holder,涉及到item动画时、被notifyItemRangeChanged移除的holder保存在mChangedScrap中,被其他notify(除notifyDataSetChanged)移除的holder保存在mAttachedScrap中。mAttachedScrap在屏幕中的缓存,用于数据刷新时,不需要重新加载子ItemView,直接复用。因

2022-01-26 14:34:59 2474

原创 Android 自定义圆角TextView控件 带边框 非shape

Android 自定义圆角TextView控件在开发中遇到圆角背景大多都是shape资源文件 这样是最简单的方式之一,但是如果很多的圆角,资源文件要不断地创建不同的drawable,最终对打包Apk也不太友好,自定义一个控件来实现View多用先来看下效果自定义一个RectgleTextViewpublic class RectgleTextView extends AppCompatTextView { private static final String EMPTY_SPACE =

2021-12-28 15:35:49 2291

原创 Android pdf转换bitmap保存到本地

Android pdf转换bitmap保存到本地PDF转换成图片保存到本地 Android有自带的API提供 首先要把PDF文件下载到本地,下载成功使用下载就最简单的IO下载都行例如: try { URL url = new URL(downUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(

2021-12-21 11:03:38 2040

原创 Android 一个简单的权限封装

一个简单的权限封装Android 6.0以后有很多权限需要动态申请,如果涉及很多权限相比较麻烦很多,封装一个权限Manager是必不可少的一部分。简单封装一个PermissionManager吧public class PermissionManager { public String[] permission = new String[]{}; public String[] permissionTip = new String[]{}; @SuppressLint("

2021-12-14 11:35:28 364

原创 Android拓扑排序 依赖任务加载框架

拓扑排序 依赖任务加载框架在实际项目开发中,不可避免地会遇到某个任务执行完成之后再去执行另一个任务遇到这种情况很多人通常都是将任务B写进任务A的末尾监听任务A加载成功的回调函数执行任务B通过volatile关键字卡住加载流程例如在初始化项目时候会遇到很多三方的sdk 初始化init()平时我们常常会使用各种第三方框架,如mmkv、glide、leakcanary等优秀的第三方库,大多数第三方库需要初始化后才能使用,因此会出现下面的代码:private void init() {

2021-11-24 12:08:24 2304

原创 Android MediaPlayer播放 听筒外放切换

Android MediaPlayer播放 听筒外放切换,通过注册监听,来判断是否靠近听筒。结合mediaplayer坐音频播放,Android hardware搞一个根据光感听筒外放切换。MediaManager是播放器构建模式,维护了一个MediaPlayer,用来重新处理播放器。AudioManagerAndroid为我们提供的(音量大小控制)的API: AudioManager(音频管理器)了,该类位于Android.Media包下,提供了音量控制与铃声模式相关操作。获得AudioMana

2021-11-08 18:01:32 3219

原创 Android 各种 Utils工具类封装 Utils大全集合

Android各种工具类封装Utils大全集合AppUtils 获取项目的Application context 方便每个Utils去init(); 一定要在Application中初始化BitmapUtil ==》图片工具类GlideRoundTransform ==》glide加载任意想加载的圆角CrashHandler ==》异常捕获ThreadManager ==》线程池管理线程ButtonClickUtils ==》防止快速点击DataUtils ==》填充数据工具类GsonUtilKeyBo

2021-11-04 20:44:15 2595

原创 Android 点击图片放大至全屏 再次点击关闭过度动画 Shared Element效果(共享元素效果)

Android 点击图片放大至全屏 再次点击关闭过度动画最近项目需要给用户一个体验优化,各种查阅,然后改了很多地方,类似于图片的点击预览,消息列表的点击流畅过渡。Shared Element效果(共享元素效果)核心代码只有简单的几行,属于知识扫盲,一直没留意这种动画效果,然后可以根据这种效果自己实现,封装View.首先在项目布局xml中实现transitionName android:transitionName="{放入自定义的TagName}"事件处理的layout.xml

2021-11-04 18:03:21 2530

原创 MVVM项目中DataBinding+RecyclerView使用 封装全能Adapter

DataBinding+RecyclerView使用MVVM(Model-View-ViewModel)项目中databinding是非常的简洁,最近遇到了一个RecyclerView的使用,有一个封装完成的Adapter是非常便捷的。Model 指的是数据层,里面包含一些bean数据。(我这里直接用bean数据类代表Model)View 指的是显示层,就是通过DataBinding绑定视图后得到的一个bindingViewViewModel 这是一个抽象的概念,这个类其实就是数据显示与其控制逻辑的

2021-10-25 20:22:53 1489

原创 Android RSA+BASE64加密封装

生成密钥一般密钥都是公司提供,如果自己写,提供两种生成密钥方法如下/** * 随机生成RSA密钥对(默认密钥长度为1024) * * @return */ public static KeyPair generateRSAKeyPair() { return generateRSAKeyPair(1024); } /** * 随机生成RSA密钥对 * * @param keyLength * 密钥长度,范围:512~2048<

2021-06-02 09:53:52 526 2

原创 Andoid 富文本Richtext使用

使用方法RichText .from(text) // 数据源 .type(RichText.TYPE_MARKDOWN) // 数据格式,不设置默认是Html,使用fromMarkdown的默认是Markdown格式 .autoFix(true) // 是否自动修复,默认true .autoPlay(true) // gif图片是否自动播放 .showBorder(true) // 是否显示图片边框 .borderCol

2021-05-25 10:40:10 421 1

原创 android https下载遇到SSLHandshakeException自签证书认证解决

SSLHandshakeException解决搞了一周 各种头疼 最后终于搞定直接代码走起在做请求之前添加一个方法createIgnoreVerifySSL("TLSv1.1"); /** * 绕过验证 * @return */ fun createIgnoreVerifySSL(sslVersion: String): SSLSocketFactory { var sc = SSLContext.getInstance(sslVersio

2021-03-22 21:20:53 432

原创 android 获取年月日

年月日获取很简单 直接上码public class DataString { private static String mYear; private static String mMonth; private static String mDay; private static String mWay; public static String StringData(){ final Calendar c = Calendar.getI

2021-03-04 09:51:42 2081 1

原创 android mp3实时录制转换

Android mp3音频文件录制Android mp3音频文件录制我搞了2天的东西 公司遇到上传语音转文字 需要mp3文件 android ios 都无法录制MP3文件,好多文章都是ndk打包so库,借鉴了好多终于搞定了,给大家分享出来,代码小白勿喷录音权限必备各种权限自己加,这里就不一一列举了,文字末尾添加资源文件library依赖库导入implementation project(':mp3library')LameUtilpackage com.lebanban.mp3libra

2021-03-03 17:22:42 501 1

原创 Android Dagger2原理

Dagger2原理Dagger2是什么Dagger2是一个Android和Java中的快速注射器。什么是依赖注入依赖注入是一种面向对象的编程模式,它的出现是为了降低耦合性,所谓耦合就是类之间依赖关系,所谓降低耦合就是降低类和类之间依赖关系。可能有的人说自己之前并没有使用过依赖注入,其实真的没有使用过吗?当我们在一个类的构造函数中通过参数引入另一个类的对象,或者通过set方法设置一个类的对象其实就是使用的依赖注入。通常依赖注入有以下几种方式通过接口注入interface ClassBInterf

2020-10-27 10:48:30 539

原创 android 事件分发机制解决滑动冲突

android 事件分发机制解决滑动冲突在写viewpager跟recycler 时候遇到了滑动冲突问题 使用时间分发可以有效解决public class MyRelativeLayout extends RelativeLayout { public MyRelativeLayout(Context context) { super(context); } public MyRelativeLayout(Context context, AttributeSe

2020-10-16 13:47:35 94

原创 简单的SharedPreferences单例封装

简单的SharedPreferences单例封装public class SpUtils { private static SpUtils instance=new SpUtils(); private static SharedPreferences mSp; private SpUtils(){} //保证单例对象唯一 public static SpUtils getInstance(){ if (mSp==null){

2020-10-16 13:44:59 357

原创 android retrofit+okhttp 请求框架简单封装

retrofit+okhttp 请求框架简单封装首先需要第三方依赖导入 //rx全家桶->网络请求 api 'com.tbruyelle.rxpermissions2:rxpermissions:+' //okhttp依赖 api 'com.squareup.okhttp3:okhttp:3.11.0' //okhttp日志拦截器 api 'com.squareup.okhttp3:logging-interceptor:3.11.0' //gson

2020-10-16 13:41:56 469

原创 Android 从服务器下载最新APP并更新当前

Android 从服务器下载最新APP并更新当前首先获取当前最新的APP版本号public long getCurrentVersionCode(){ long CurrentVersionCode = 0; try { PackageInfo packageInfo = context.getApplicationContext().getPackageManager().getPackageInfo(context.getPackageName(), 0);

2020-10-16 13:36:48 590

原创 各种dialog的基本设置

一、确定取消选择对话框 // 单选对话框 public void simple_dialog(View view) { //构建者 AlertDialog.Builder builder = new AlertDialog.Builder(this); //设置属性 builder.setIcon(R.mipmap.ic_...

2019-12-26 21:10:21 530

Android性能优化.pdf

Android性能优化:ANR问题解析 crash监控方案 启动速度与执行效率优化 内存优化 耗电优化 网络传输与数据存储优化 APK大小优化

2021-12-22

android so打包封装.pdf

Android将so库封装到 库 jar包中并加载其中的 包 so库

2021-10-29

Android mvvm快速搭建解析.pdf

Android mvvm快速搭建 Navigation koin框架框 Retrofit2 WorkManager

2021-10-29

MVP okhttp+retrofit+rxjava+dagger2实现mvp框架

MVP okhttp+retrofit+rxjava+dagger2实现mvp框架

2021-10-29

MVVM Base类lib https+retrofit Utils工具类

MVVM Base类lib https+retrofit Utils工具类

2021-10-25

空空如也

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

TA关注的人

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