自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (1)
  • 收藏
  • 关注

原创 图片转打印指令

【代码】图片转打印指令(cpcl和zpl)

2024-07-25 18:37:30 921

原创 Android mvvm架构,单一数据源,局部刷新

【代码】Android mvvm架构,单一数据源,局部刷新。

2023-03-22 22:27:13 339

原创 IO流粘包\分包处理器(分隔符方案)

用于处理读取TCP/IP或串口等IO流分包/粘包问题

2022-07-22 14:15:26 161

原创 现有Android项目集成ReactNative

import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import com.facebook.react.ReactActivity;import com.facebook.react.ReactInstanceManager;imp

2021-08-25 23:46:18 226

原创 useReducer dispatch实现类似react-thunk功能

问题:useReducer生成的dispatch无法dispatch函数解决:使用useThunkReducer代替useReducerconst wrapperDispatch = (dispatch, getState) => { return (action) => { if (typeof action === 'function') { action(wrapperDispatch(dispatch, getState), getState); }

2020-09-15 14:33:27 364

原创 RecyclerView插入、删除导致position错乱

问题:使用notifyItemInserted(position)和notifyItemRemoved(position)对RecyclerView进行添加、删除操作时,如果连续操作,后面的position就会错乱。解决方法:统一使用notifyDataSetChanged()方法刷新;结合notifyItemRangeChanged(int positionStart, intitemCount)刷新,其中positionStart是添加或删除位置索引,itemCount是数据总数。示例:

2020-08-28 19:51:13 773

原创 RecyclerView最后一行显示不全

RecyclerView高度使用wrap_content时最后一行显示不全,需在RecyclerView包裹一层布局,并确定外层布局的高度;或者分配剩余空间;如果父布局使用ConstraintLayout,则确定顶部和底部定位,并且高度设为0dp。这样就可以正常显示。<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="

2020-08-28 13:26:58 2179 3

原创 Rn开发过程遇到的坑

1、文字不居中:height和lineHeight要保持一致。2、ios运行报Native module cannot be null.错误,注释./node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js文件的invariant(nativeModule, 'Native module cannot be null.');3、组件浮动可设置position属性,有absolute和relative两种。absolute

2020-07-16 13:26:06 456

原创 okhttp流程分析

异步流程:1)enqueue()加入队列,先加入等待队列;2)promoteAndExecute(),从等待队列删除,加入到运行队列;3)executorService.execute(this),运行AyncCall(Runable对象)的run()方法,间接执行execute()方法;4)execute()方法会调用getResponseWithInterceptorChain()方法,并真正开始执行请求相关操作;5)返回Response后,调用finished()方法,把当前cal

2020-06-01 23:17:04 195

原创 使用责任链模式解决异步嵌套问题

Chain: 用于表示一个链条对象(1)定义一个数组,用于保存这条链所有的interceptor;(2)定义一个param,用于保存该链式调用所需的参数;(3)包含一个proceed()方法,从第一个interceptor开始,循环调用interceptor的intercept()方法;(4)定义一个proceedNext(Interceptor interceptor),接收一个int...

2019-10-15 17:18:12 702

原创 android引入别的目录模块

在setting.gradle指定该模块所在的目录:project(':printerModule').projectDir = new File("../../", "commonLib/PrinterModule/printerModule")然后在setting.gradle引入该模块:include ':printerModule'在项目的build.gradle中依赖该模块:imp...

2019-05-23 11:25:11 1557

原创 Android Ble蓝牙开发内存泄漏

记录2个Android Ble蓝牙开发容易导致内存泄漏的地方:蓝牙扫描当BluetoothAdapter.LeScanCallback最为内部类时要定义成static,如果回调内部需要用到activity的context,要使用弱引用包裹起来。参考:It leaks when I startLeScan in onCreate and stopLeScan in onDestroy...

2019-05-08 13:08:58 1101

原创 Java7 HashMap源码阅读总结

put()方法:计算key的hash值通过hash值找到对用的下标如果该下标不为空,检查是否有重复的 key 存在,如果有则覆盖(hash相同,key相同==、equals)不存在重复的 key,将此 entry 添加到数组中(1) 检查扩容:已经达到了阈值 && 位置已经有元素a. 扩容:新建一个数组,长度是原来的2倍b. 转移:rehash把原数组元素放入到新数...

2019-04-19 17:50:02 314

原创 android 方法卡顿检测

一、使用1.定义两个类:BlockDetector.java、LogMonitor.java。2.在Application中执行初始化方法。二、原理1.主线程所有的操作也是通过handler来执行的,所以只要监测每个msg执行的时间,就能定位出哪个方法造成卡顿。2.在Loop.java的loop()方法中,每次执行msg.target.dispatchMessage(msg)前后都会分别...

2019-03-31 16:24:54 1071

原创 okhttp3上传图片

1.okhttp上传文件步骤public class ImageUpload{ //1.创建对应的MediaType private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); private final OkHttpClient client = new OkHttpClient...

2019-01-01 23:20:21 13857 2

原创 一个简单的左滑删除控件

1、java代码package com.example.administrator.swipelayouttest;import android.content.Context;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.MotionEve...

2018-10-05 12:07:34 410

原创 activity被回收后,点击Tab无法切换fragment

1、原因:当activity在后台并且内存不足时,系统会把activity给回收掉,但也会保存部分(不是全部)信息用于下次页面恢复。这样会导致下次进入页面后布局或数据错乱,并且点击底部Tab无法切换fragment。2、解决方法:(1)方法一:注释掉super.onSaveInstanceState(outState),这样被回收时就不会保存部分数据了,下次进来可以相当于首次进来一样,全部重新...

2018-09-27 17:49:49 554

原创 FragmentPagerAdapter无法刷新问题

1、原因:在FragmentPagerAdapter的instantiateItem()方法里,他会先去FragmentManager里面去查找有没有相关的fragment如果有就直接使用如果没有才会触发fragmentpageadapter的getItem()方法获取一个fragment。所以你更新fragments集合是没有作用的。 @Override public Obje...

2018-08-28 19:53:09 1120 1

原创 Android 数据库debug

依赖:debugCompile ‘com.amitshekhar.android:debug-db:1.0.0’ 浏览器:http://XXX.XXX.X.XXX:8080(例: http://192.168.2.10:8080) 如果不能显示:(adb forward tcp:8080 tcp:8080,http://127.0.0.1:8080)...

2018-03-27 21:21:30 177

原创 一个简易的MVP框架

创建两个接口:MvpView、MvpPresenter 一个类:MvpActivity(MvpFragment)1、MvpViewpublic interface MvpView {}2、MvpPresenter(泛型)public interface MvpPresenter<V extends MvpView> { /** * 添加View * @param vie

2018-03-13 18:31:55 211

原创 LoopView实现滚轮选择器

GitHub:https://github.com/juwuguo1988/LoopViewProject核心类是com.example.administrator.loopviewapplication.loopview包里的7个类只要给LoopView设置数据即可使用

2018-01-23 16:36:17 630

原创 SmartRefreshLayout实现下拉刷新上拉加载

GitHub:https://github.com/scwang90/SmartRefreshLayout禁止上拉加载:refreshLayout.setEnableLoadmore(false); 使上拉加载具有弹性效果:refreshLayout.setEnableAutoLoadmore(false); 禁止越界拖动:refreshLayout.setEnableOverScroll

2018-01-19 13:53:11 3272 1

原创 recyclerview悬浮条效果

java代码:private class SuspensionOnScrollListener extends RecyclerView.OnScrollListener { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(re

2018-01-18 18:27:27 221

原创 android视图拖动

/** * v.layout(l, t, r, b); * 移动Window里面的View */private View.OnTouchListener followTouch = new View.OnTouchListener() { int startX; int startY; int dx; int dy; @Override publ

2018-01-02 10:54:05 453

原创 TextView 长度不够处理

1. 跑马灯:android:ellipsize="marquee"android:singleLine="true"textView.setSelected(true);2. 结尾省略号android:ellipsize="end"android:maxEms="10"android:maxLines="1"

2017-11-20 10:14:51 603

java注解解析

APT(annotation processing tool)是一个命令行工具,它在编译期对源代码文件进行检测找出其中的annotation,然后使用自定义processor来处理annotation,如生成新的 Java 文件。

2017-10-16

空空如也

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

TA关注的人

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