Android
Cui晨
路漫漫其修远兮,吾将上下而求索。
展开
-
己用Okhttp工具类
https工具类,可选。原创 2023-02-20 17:36:41 · 1117 阅读 · 2 评论 -
Android集成FlutterModule
Android项目集成FlutterModule;Android项目和Flutter项目在同一个文件夹;原创 2022-11-08 17:30:38 · 1030 阅读 · 1 评论 -
Android 获取最近几天的日历日程
Android 获取最近几天的日历日程原创 2022-08-24 17:21:48 · 1842 阅读 · 0 评论 -
Android 获取日历日程事件
Android获取手机日程事件 获取系统日历日程事件原创 2022-06-01 19:02:48 · 3135 阅读 · 0 评论 -
Android JTT808协议通讯
先来了解一下基础的数据类型:bit : bit就是位,二进制数据类型,取值只有0或1 ;byte : 1 byte = 8 bit ;取值范围: -127 ~ 128 ;1、JTT808基本数据类型:个人理解:WORD = 长度是2的byte数组 、 DWORD = 长度是4的byte数组 、 byte[n] = 长度是n的byte数组,其它不解释了;2、消息结构每条消...原创 2022-06-01 18:50:25 · 1131 阅读 · 0 评论 -
Window批量修改文件名
需要一个图片组用于帧动画;1、全选需要修改的文件 , 在第一个文件处右击选择重命名,修改后是这样的;这样整体的文件名已经修改,然后需要去除空格和括号;2、把这两个bat文件放在需要重命名的文件夹下 , 双击运行;去空格bat:@echo off&setlocal enabledelayedexpansionfor /f "delims=" %%i in ('dir /s/b *.*') do ( set "foo=%%~nxi" set foo..原创 2021-11-06 17:02:01 · 2603 阅读 · 5 评论 -
Android 自定义字体 使用字体库 修改字体
1、使用Typeface属性或自定义View修改字体 字体文件放在src\main\assets\fonts目录下;可以使用方法直接修改字体:tv.setTypeface(Typeface.createFromAsset(this.getAssets(), "fonts/ziti70.ttf"));也可以自定义View设置自定义字体:public class Font70TextView extends AppCompatTextView { public Font7..原创 2021-08-03 14:54:04 · 1574 阅读 · 0 评论 -
AndroidMvp模式;
普通AndroidMvp模式。Activity 、 Fragmentpublic class HomeActivity extends AppCompatActivity implements HomeView{ private TextView tv; private ProgressBar progressBar; private HomePresenter mPresenter; @Override protected void onCreate(原创 2021-03-30 14:52:20 · 115 阅读 · 0 评论 -
Android 文本高亮
高亮的文本改变 字体颜色、字体大小、以及字体加粗、斜体、下划线等等;工具类public class SignKeyWordTextView extends AppCompatTextView { //关键字 private String signText; //关键字颜色 private int signTextColor; private int changeIndex = 0; public SignKeyWordTextView(Cont原创 2021-02-26 17:40:29 · 559 阅读 · 0 评论 -
Android图片九宫格控件,微信朋友圈;
注:本文是根据https://github.com/jeasonlzy/NineGridView进行扩展;类似QQ空间,微信朋友圈,微博主页等,展示图片的九宫格控件;原作者只有仿朋友圈样式和QQ控件样式,新增平铺样式;效果图如下:一张图、2或4张图 和多张图;一张图:两张图:四张图: 多张图:效果就是一张图、2或4张图时也铺满屏幕;于是就对该开源框架进行了一下扩展,下面上代码;一、新增平铺模式;设置平铺模式的最大高度(也就是一张图时的高度); public .原创 2020-09-23 15:54:57 · 1941 阅读 · 6 评论 -
ScrollView嵌套RecycelrView滑动冲突,RecycelrView展示不全;
记录一下,方便查阅;1、利用RecyclerView的方法 rv.setHasFixedSize(true) rv.isNestedScrollingEnabled = false //rv.setNestedScrollingEnabled(false)2、利用LayoutManager的方法 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this){原创 2020-08-24 16:26:33 · 274 阅读 · 0 评论 -
Android AIDL的使用,进程间的通讯;
AIDLAndroid使用AIDL来实现进程间的通讯;最简单的进程,两个APP(APP1(app_server) , APP2(app_client)),这里app_server可以看作一个进程 , app_client也可以看作一个进程; 所以AIDL可以来实现两个APP之间的通讯;先来写一个最简单的AIDL进程间的通讯;app_client要调用app_server中的数据,首先app_server先把数据暴露出去;app_server端:1、新建AIDL文件;输入名..原创 2020-06-04 17:13:14 · 904 阅读 · 0 评论 -
Android 竖直滚动广告条、上下滚动广告条,View滚动广告条;
四种方式实现仿淘宝滚动广告条:TextView+Handler延时动画 实现滚动效果; 自定义ViewFlipper 实现滚动效果; RecyclerView+子线程延时 实现滚动效果; 竖直ViewPager+Handler延时 实现滚动效果;项目已上传Github:https://github.com/CuiChenbo/UpRollView;其实最早写这个效果是在16年的时候,现在拿出来整理一下,同时也看一下自己之前的代码;Android仿淘宝头条滚动广告条, 之前写的没有传.原创 2020-06-03 11:12:19 · 2024 阅读 · 2 评论 -
Android 淘宝滑动条,淘宝菜单滑动条;
淘宝菜单滑动条,图如下;实现一下这个效果 , 上面是列表,可以用RecyclerView实现 , 下面跟随菜单滑动的条可以用View做位移动画实现;<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" andr原创 2020-06-02 13:55:03 · 1568 阅读 · 1 评论 -
Android 横向列表滑动自动选中,RecyclerView实现;
RecyclerView实现横向滑动后自动选中条目,点击其它条目自动移动到中间位置并选中;横向的列表就是上面的效果,下面是动图;效果就是这样的 , 有当前选中回调 , 也可以设置当前选中的条目;代码无封装,看着更直观;获取中间位置,这个位置就是Item需要停留到的位置; 滑动后计算出距离中间位置最近的一个Item , 然后让此Item滑动到居中位置; 点击其它条目时 , 计算此条目距离中间的位置 , 然后滑动到中间; 可以选中第一个条目和最后一个条目,使用隐藏的View填充;.原创 2020-06-01 17:01:56 · 6999 阅读 · 3 评论 -
Android 弧形列表转盘的实现(二),列表自动选中;RecyclerView滑动后自动选中居中的条目,RecyclerView实现WheelView效果;
这篇主要是列表滑动后停止后,自动选中居中的条目,类似于WheelView的效果;通俗的讲就是用RecyclerView实现WheelView的效果;接上篇:Android 弧形转盘的实现,弧形列表;弧形列表已经实现了,下面就是自动选中的功能了;先来分析一波:红色的这条线是RecyclerView的竖向的中心线,当列表滑动停止后遍历可见区域的所有View,计算出距离中心线最近的一个View(是该View的中心点距离中心线最近),然后移动该View至中心线位置;1、RecyclerView.原创 2020-05-19 11:19:29 · 2773 阅读 · 0 评论 -
Android 弧形列表转盘的实现(三),View跟随RecyclerView做旋转动画;
前两篇博客:Android 弧形转盘的实现(一),弧形列表;Android 弧形转盘的实现(二),列表自动选中;RecyclerView滑动后自动选中居中的条目,RecyclerView实现WheelView效果;已经大致实现了弧形转盘的效果,还有一个动画需要做,这个比较简单;效果图左边的刻度轮盘是个半圆,其实应该是个整圆只显示一半,另外一半在屏幕外面;尝试使用PaddingLift把ImageView挤到屏幕外面,默认效果是可以,但是旋转的时候也是个半圆在旋转,这样就不行了;索性直原创 2020-05-19 14:35:27 · 3812 阅读 · 2 评论 -
Android 弧形列表转盘的实现(一),弧形列表;
Android 弧形列表转盘的实现简单的说一下效果图,横向来区分的话可以把UI图分为三部分(左边是轮盘 , 中间是弧形列表 也是一级菜单 , 右边是列表是二级菜单):要求:实现一个围绕轮盘的弧形列表; 弧形列表滑动后自动选中居中的条目,然后更新右边的二级菜单; 弧形列表点击后自动滑动到居中位置并选中,然后更新右边的二级菜单; 弧形列表所有条目都可以选择; 左边的轮盘跟随弧形列表旋转;好的、需求很明确,一级菜单弧形列表可滑可点自动选中,轮盘跟随旋转;第一步:先实现弧形列表;.原创 2020-05-18 17:07:13 · 4070 阅读 · 3 评论 -
GreenDao的使用;
为什么使用GreenDao?greenDAO的独特功能集:坚如磐石:greenDAO自2011年以来一直存在,并被无数著名应用程序使用 超级简单:简洁明了的API,在V3中带有注释 小型:该库小于150K,它只是普通的Java jar(没有依赖于CPU的本机部分) 快速:可能是智能代码生成的驱动,是最快的Android ORM 安全且富有表现力的查询API:QueryBuilder...原创 2020-04-27 16:56:45 · 322 阅读 · 0 评论 -
Android MVVM模式DataBinding的使用 基础篇;
1、在该module的gradle中配置dataBindingandroid { ****** dataBinding { enabled true }}2、数据类继承BaseObservablepublic class UserBean extends BaseObservable { private String nam...原创 2020-04-12 18:03:58 · 1019 阅读 · 0 评论 -
Android 高德地图无法后台持续定位,缺少后台定位权限#1207;
无法后台持续定位:高德地图持续定位,在后台持续定位一段时间后就会报错;AmapError: ErrCode:12, errInfo:缺少定位权限 请到http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode/查看错误码说明,错误详细信息:后台定位服务没有开启,请在设置中打开后台定位服务开关#1207...原创 2020-04-02 16:09:38 · 12764 阅读 · 19 评论 -
Android startService和bindService混合使用、以及前台服务;
Service简单来说就是一个看不见的Activity,在后台默默运行;可以混合开启Service,无论先startService还是bindService;startService:Intent service = new Intent(mContext , LBSForegService.class);startService(service); //启动stopServi...原创 2020-03-27 17:16:09 · 3763 阅读 · 0 评论 -
Android 悬浮框的使用、画中画的使用;
需求:用户触发了一定的条件会弹出一个悬浮框,用户在关闭APP或把APP退到后台时,点击悬浮框可以打开应用;很简单的一个悬浮框很快就创建出来了,退出APP后点击悬浮框可以通过包名启动APP,但是把APP退到后台后怎么都启动不了,原因是:从后台启动 Activity 的限制,于是有了骚操作:从ActivityManager中根据本应用正运行的Task唤醒到前台(不是每次都能成功), 然后就有了...原创 2020-03-20 16:52:36 · 4591 阅读 · 0 评论 -
AndroidStudio Plugin with id 'com.android.application' not found.
一般腾讯的SDK或腾讯给的Demo容易报这个错!先看一下目录结构:没有app目录,所以也就没有app目录下的build.gradle;只有一个项目级的build.gradle,此gradle还缺少配置;把这些代码放在gradle中,就放最外层就行;buildscript { repositories { google() jcen...原创 2020-03-20 10:05:40 · 407 阅读 · 0 评论 -
Android 语音播报 , 百度在线语音合成封装;
Android自带的语音播报不支持中文;科大讯飞开始收费了;百度离线语音合成也收费,但是! 在线语音合成不收费,需要在百度开放平台申请AppId;文档:https://cloud.baidu.com/doc/SPEECH/index.htmlSDK下载:https://ai.baidu.com/sdk#tts百度在线语音合成:没有找到百度在线语音合成的文档,自己参考百度语...原创 2020-03-18 18:39:15 · 1286 阅读 · 4 评论 -
Android 列表倒计时,和对列表刷新的优化,RecyclerView刷新单个控件;
单个计时器,然后遍历数据 刷新条目;两种实现方式:1、Handler轮询; 2、子线程睡眠(时间到后 移除列表中的条目会有问题);代码很简单,没有任何难度,列表使用 RecyclerView+BaseRecyclerViewAdapterHelper实现; implementation 'androidx.recyclerview:recyclerview:1.1.0' ...原创 2020-03-17 18:07:16 · 1977 阅读 · 4 评论 -
Java Unreachable statement异常原因;
Unreachable statement :遥不可及的声明;它的意思是你的这行代码不能被执行,原因是你的上一行代码已经return或者是个死循环;1、上一行代码已经return;2、上一行代码是个死循环;仔细检查一下代码就会发现;...原创 2020-03-13 15:55:56 · 3817 阅读 · 0 评论 -
Android将后台应用唤起到前台,唤醒APP;
包名驱动即可:Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());context.startActivity(intent);原创 2020-03-10 15:58:01 · 8794 阅读 · 0 评论 -
Android JT808协议通讯,使用OkSocket实现长连接;
先看一下JT808数据的组成和OkSocket接收消息方式;1、JT808数据的组成标识位采用0x7e 表示,若校验码、消息头以及消息体中出现0x7e,则要进行转义处理,转义 规则定义如下: 0x7e <————> 0x7d后紧跟一个0x02; 0x7d <————> 0x7d后紧跟一个0x01。 转义处理过程 如下: 发送消息时:消息封装...原创 2020-03-10 14:51:57 · 1372 阅读 · 0 评论 -
Socket 粘包 拆包;
为什么会粘包?举个栗子:Socket连接成功就相当于通讯管道已经建立,客户端就一直从管道中取数据,如果数据一次没有取完就会发生遗留,这些遗留的数据就会和下次的数据包一起传输过来,然后就粘包了;再看个数据:采用0x7e 表示,若校验码、消息头以及消息体中出现0x7e,则要进行转义处理,转义 规则定义如下: 0x7e <————> 0x7d后紧跟一个0x02; ...原创 2020-03-10 10:44:23 · 773 阅读 · 0 评论 -
Android OkSocket设置消息头,获取消息体长度;使用OkSocket实现JT808协议通讯;
查看Android JT808协议通讯请移步;OkSocket需要设置解析头://设置自定义解析头OkSocketOptions.Builder okOptionsBuilder = new OkSocketOptions.Builder(mOkOptions);okOptionsBuilder.setReaderProtocol(new IReaderProtocol() { ...原创 2020-03-06 17:55:06 · 2628 阅读 · 0 评论 -
Android JT808协议通讯
消息编码: /** * 包装808数据,分包消息 * * @param msgId 消息id * @param phone 终端手机号 * @param msgBody 消息体 * @param subpackage 是否分包 0:不分包 1:分包 * @param totalPkg 总包数...原创 2020-03-06 17:20:36 · 3599 阅读 · 0 评论 -
Android Socket长连接的使用和封装;
这次的项目JT/T 808协议使用Socket通讯,对原生的Socket研究了一下,把使用方法和心得写一下;这个时必须要加的权限:<uses-permission android:name="android.permission.INTERNET" />Android主线程中不允许做耗时操作,Socket需要放在子线程中;1、创建Socket连接,拿到输入输出流:...原创 2020-03-06 16:04:23 · 2586 阅读 · 1 评论 -
Android aar包的使用 打包aar后报错ClassNotFoundException,aar中有dependencies依赖的情况;
1、如何打AAR包:如上图所示,选中你需要打aar包的Module,然后点击Build中的“Make Module”就OK了;这个是AAR包的输出位置;2:如何引用AAR包:将相应AAR包复制到APP的某个目录如(app\libs),同时将加入到在APP的dependencies内,如下: repositories { flatD...原创 2020-03-05 15:06:45 · 7212 阅读 · 1 评论 -
OkSocket接收所有数据,可以不固定协议头;
这个是OkSocket的源码地址:https://github.com/xuuhaoo/OkSocket这个框架必须要固定包头,我们在实际的使用中一般都是固定包头的,但是为了方便调试或者没有固定包头的,我们需要修改一下源码;把源码中的这个接收消息类'ReaderImpl'修改一下:public class ReaderImpl extends AbsReader { pri...原创 2020-02-13 18:10:15 · 2957 阅读 · 0 评论 -
如何把自己的代码开源,将类库部署到JitPack上;
一、使用AndroidStudio把代码开源到Github:输入自己的Github账号和密码,一路下一步就上传了;二、配置Github开源许可证:例:1、创建新文件:2、输入文件名称:LICENSE,点击右边的Choose a license template3、点击Choose a license template后跳转到协议配置界面(选择 Apache Lic...原创 2019-12-31 16:33:46 · 573 阅读 · 0 评论 -
AndroidQ FileNotFoundException: open failed: EACCES (Permission denied),权限都允许了还是报错
解决方法:在清单文件AndroidManifest.xml中添加 :android:requestLegacyExternalStorage="true"再说问题:选择手机中的文件(照片)同样的代码,在compileSdkVersion = 27 是没有问题的;但是在compileSdkVersion = 29 AndroidX ,AndroidManifest.xml中的...原创 2019-12-17 15:45:04 · 8858 阅读 · 0 评论 -
Retrofit返回数据不是Json,返回String或Bytes;MalformedJsonException: Use JsonReader.setLenient(true)异常解决;
使用Retrofit接收的数据一直是Json,这次遇到了一个返回数据不是Json的,Gson解析当场报错:com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 17 path $.forumbits[0] ...原创 2019-12-13 15:18:59 · 2636 阅读 · 2 评论 -
Fragment切换动画和回退栈的使用,和使用动画后导致回退时的崩溃问题;
先说一下出现崩溃的问题:页面是一个有很多下一步的界面,不想点击下一步就打开一个新的Activity,所以就点击下一步时切换Fragment,并使用回退栈处理返回事件;单Activity多Fragment有回退栈,使用replace的方式切换Fragment,非常简单的就完成了;在初步体验一下时发现Fragment切换有点生硬,于是我给Fragment加了切换动画;在使用回退栈返回时问题就来了;...原创 2019-12-13 12:17:59 · 1327 阅读 · 0 评论 -
Android 高德地图选点,定位;实现地图选点上车功能;
实现的就是一个拖动地图,显示地图中心点的位置信息;大部分打车软件的地图选点上车功能;先上图:实现的功能:1、显示地图,以及当前位置的蓝点;2、获取当前位置信息(定位);3、获取地图中心点坐标,移动地图后获取地图中心点坐标;4、逆地理编码,根据当前经纬度获取附近的地理位置信息;①、显示地图和蓝点,设置一些地图上面的显示信息:if (aMap == null) {...原创 2019-12-05 11:07:21 · 6518 阅读 · 1 评论