m0_37777069
码龄8年
关注
提问 私信
  • 博客:14,541
    14,541
    总访问量
  • 15
    原创
  • 1,582,672
    排名
  • 5
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2017-03-06
博客简介:

m0_37777069的博客

查看详细资料
个人成就
  • 获得6次点赞
  • 内容获得0次评论
  • 获得17次收藏
创作历程
  • 1篇
    2021年
  • 13篇
    2020年
  • 1篇
    2019年
成就勋章
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

mmkv以及sp的使用以及比较

mmkv的使用:1.在 App 模块的 build.gradle 文件里添加:dependencies { implementation 'com.tencent:mmkv:1.0.22' // replace "1.0.22" with any available version}2.初始化// 设置初始化的根目录String dir = getFilesDir().getAbsolutePath() + "/mmkv_2";String rootDir = M
原创
发布博客 2021.05.06 ·
3053 阅读 ·
2 点赞 ·
0 评论 ·
4 收藏

MMKV的简单使用

介绍:MMKV 是腾讯开源的一款基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强,从 2015 年中至今在微信上使用,其性能和稳定性经过了时间的验证。GitHub地址:https://github.com/Tencent/MMKV为什么要替代SharedPreferences?1,数据加密。 在 Android 环境里,数据加密是非常必须的,SP实际上是把键值对放到本地文件中进行存储。如果要保证数据安全需要自己加密,MMKV 使用
原创
发布博客 2020.11.17 ·
1053 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

今日头条适配方案原理解析

首先理解几个名词px:像素密度:例如19201080,就是手机长度上1920个像素,而在宽度上有1080个像素dp:其实dp就是为了使得开发者设置的长度能够根据不同屏幕(分辨率/尺寸也就是dpi)获得不同的像素(px)数量。比如:我将一个控件设置长度为1dp,那么在160dpi上该控件长度为1px,在240dpi的屏幕上该控件的长度为1240/160=1.5个像素点。也就是dp会随着不同屏幕而改变控件长度的像素数量。关于dp的官方叙述为当屏幕每英寸有160个像素时(也就是160dpi),dp与px等价的
原创
发布博客 2020.11.02 ·
1685 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

自定义view,模仿网易云播放唱片特效,鲸云特效,练习一下自定义view

首先分析一下思路:1.中间的旋转可以用简单的图片加旋转动画实现2.外面的发散粒子可以理解为多个小圆动画实现具体实现代码如下:package com.yyb.particleimport android.animation.ObjectAnimatorimport android.animation.ObjectAnimator.ofFloatimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleim.
原创
发布博客 2020.10.20 ·
553 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Recyclerview 仿饿了么、京东、淘宝、美团实现左右双列表联动效果

本项目是简单的页面左右两侧两个RecyclerView联动效果实现。总体思路很简单。希望帮助到大家布局文件主页<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com
原创
发布博客 2020.10.15 ·
1531 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏

RecyclerView 缓存机制以及优化

首先RecyclerView的缓存分为四级:public final class Recycler {//一级缓存mAttachedScrap 和mChangedScrap final ArrayList<ViewHolder> mAttachedScrap = new ArrayList<>(); ArrayList<ViewHolder> mChangedScrap = null;//二级缓存mCachedViews final
原创
发布博客 2020.10.14 ·
452 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Eventbus的使用与原理解析

简单使用:首先依赖eventbusapi ‘org.greenrobot:eventbus:3.2.0’使用的方式很简单在activity或者fragment中注册EventBus.getDefault().register(this);别忘记最后接触注册EventBus.getDefault().unregister(this);发送消息EventBus.getDefault().post(msg)接收消息@Subscribepublic void getMsg(EventMes
原创
发布博客 2020.09.29 ·
263 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Glide实现圆角图片,以及圆形图片

Glide很常用,为了避免经常迁移项目导致重写工具类,记录下实现圆角图片的功能以及圆形图片的功能,圆角图片如下:package com.yyb.mvvmlibrary.widgetimport android.content.Contextimport android.content.res.Resourcesimport android.graphics.*import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPoolimpo
原创
发布博客 2020.09.27 ·
1800 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

handler中ThreadLocal的一点理解

概括来说ThreadLocal内部维护了一个以当前thread线程为key的ThreadLocalMap对象中,每一个线程都有唯一的ThreadLocalMap对象。然后再这个对象中维护了table数据,存放相应的值。具体到代码来看,其实ThreadLocal 主要就三个方法需要我们注意,get()、set(T value)、remove()这三个方法,但实际理解了set()方法get和remove就理解了。接下来我们看代码:```javapublic void set(T value) {
原创
发布博客 2020.09.24 ·
254 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

android jetpack 组件 startup的使用

使用方式1.依赖api "androidx.startup:startup-runtime:1.0.0-alpha01"2.创建providerpublic class ArouterInitializer implements Initializer { @NonNull @Override public Object create(@NonNull Context context) { ARouter.init((Application) context); .
原创
发布博客 2020.09.17 ·
738 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

activity中如何获取view的宽高?

1.重写方法onWindowFocusChanged方法 @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { int measuredHeight = view.getMeasuredHeight(); int width=view.getMeasuredW
原创
发布博客 2020.09.09 ·
356 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

view.post 原理解析

首先可以看post的方法public boolean post(Runnable action) { final AttachInfo attachInfo = mAttachInfo; if (attachInfo != null) { return attachInfo.mHandler.post(action); } // Postpone the runnable until we know on which thread it needs t
原创
发布博客 2020.09.08 ·
315 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

singleTask与taskAffinity的一点理解

singleTask与taskAffinity的一点理解 <activity android:name=".MainActivity" android:launchMode="standard"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <c
原创
发布博客 2020.06.28 ·
349 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

自定义折线图,仿蚂蚁财富

//不允许用户修改,想要修改宽高,使用mWidth、mBaseHeight。 protected final float DEF_WIDTH = 650; protected final float DEF_HIGHT = 400; //测量的控件宽高,会在onMeasure中进行测量。 protected int mBaseWidth; protected int mBaseHeight; private Paint mInnerXPaint; ..
原创
发布博客 2020.06.26 ·
527 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

android webview与js交互掉起相册以及拍照,获取图片

1.申请需要的权限<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="an...
原创
发布博客 2019.04.11 ·
1612 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多