自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 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 19:51:42 2832

原创 MMKV的简单使用

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

2020-11-17 11:15:58 976

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

首先理解几个名词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 15:13:57 1616

原创 自定义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 17:17:30 495

原创 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 14:29:29 1435

原创 RecyclerView 缓存机制以及优化

首先RecyclerView的缓存分为四级:public final class Recycler {//一级缓存mAttachedScrap 和mChangedScrap final ArrayList<ViewHolder> mAttachedScrap = new ArrayList<>(); ArrayList<ViewHolder> mChangedScrap = null;//二级缓存mCachedViews final

2020-10-14 10:39:53 402

原创 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 16:08:36 216

原创 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 09:19:20 1706

原创 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 12:00:46 224

原创 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 15:53:08 702

原创 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 15:57:06 310

原创 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 14:46:29 274

原创 singleTask与taskAffinity的一点理解

singleTask与taskAffinity的一点理解 <activity android:name=".MainActivity" android:launchMode="standard"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <c

2020-06-28 10:57:25 314

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

//不允许用户修改,想要修改宽高,使用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 16:43:36 490

原创 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 13:49:10 1543

空空如也

空空如也

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

TA关注的人

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