
android知识类
文章平均质量分 71
hacker_crazy
目前刚刚入职,Android菜鸟一枚
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android png图片彩色转黑白,透明度打印变黑色的解决方法
最近客户有个需求:需要将彩色的图片转成黑白图片用pos机的打印机打印出来。这个在实现的过程中发现个问题:从网上下载png图片,保存到本地发现透明背景变成了黑色。正确的:本地下载的:因为第一次遇到这种情况,导致搞到现在。不过总归水落石出了,我佛了。原因是下载图片将bitmap保存到本地的时候,对图片的保真度做了限制:public enum CompressFormat { JPEG (0), PNG (1), WE原创 2020-07-29 00:28:07 · 2181 阅读 · 0 评论 -
Socket丢包解决对策
socket使用过程中遇到个问题:因为数据量太大,大约有2w个字节的响应数据报,之前同事代码实现的时候没有做完整的接收处理。仅使用InputStream.available()做了一次读取,然后就遇到问题了!会发现,每次读取的时候获得的长度值不固定,且均无法获得完整长度。另一方面,响应的数据报并不会告知发送的长度是多少,但是有结束标志:byte类型03是结束标志。所以做了重新:by...原创 2020-04-15 20:29:59 · 5312 阅读 · 0 评论 -
子线程居然可以更新UI!
一、子线程更新了UI发现了一个奇怪的情况,我在fragment初始化的时候,new了一个子线程。然后在子线程设置了一个textView的字符串,并且设置了ta的click监听事件@Override protected void init() { LogUtils.dThread("<<<<<init>>>>&g...原创 2020-03-24 15:38:41 · 621 阅读 · 0 评论 -
Jetpack之Navigation的学习demo
1.java版demohttps://github.com/fengjw1/NavigationDemoOfJava原创 2020-03-22 20:41:44 · 398 阅读 · 0 评论 -
MQTT源码解析
一、MQTT的创建和connect流程1.Android端实现mqtt,首先会new一个MqttAndroidClient,并传入需要的参数。首先,MqttAndroidClient是如何创建的呢?public MqttAndroidClient(Context context, String serverURI, String clientId, MqttClientPers...原创 2020-03-20 11:10:59 · 2267 阅读 · 0 评论 -
mqtt开发总结
博客推荐https://juejin.im/post/5cd66c4af265da037516bec3原创 2020-03-19 09:52:44 · 1626 阅读 · 3 评论 -
getLocationOnScreen和getLocationInWindow的区别
测试发现,大多数布局情况下,两者获得的内容是没有区别的,唯一的区别就是在window的弹框(比如dialog等)出现的情况下。其他情况下,获得的都是getLocationOnScreen的值。两者并没有区别。参考博客:https://blog.csdn.net/tmj2014/article/details/53283804...原创 2019-12-24 18:12:28 · 592 阅读 · 0 评论 -
viewHolder的作用
viewholder的作用是因为Android有个recycler的反复循环器,viewholder就是借助他来做到循环利用itemview。例如:默认加载10个itemview,初始化的时候创建一个viewholder,并把10个itemview加载到内存里面。接着下滑,加载5-15的item,这个时候,显示的还是只有10个view。我们只是需要重新填充view的数据,而不需要再...原创 2019-12-24 15:56:47 · 8827 阅读 · 0 评论 -
passcodeview的简单使用
最近做一个密码键盘,使用了GitHub的开源库,仓库地址为:https://github.com/kevalpatel2106/PasscodeView做一个类似界面,如图:passcodeview的简单使用:git clone项目到本地,查看simple demo。passcodeview支持两种:按键和画线,demo里面都有详细例子。我这里只使用了按键的部分,并且不需要指纹...原创 2019-12-24 14:29:37 · 323 阅读 · 0 评论 -
使用GreenDao的记录(二)
GreenDao主要是考虑四个对象:DaoMaster,DaoSession,DBHelper和DBManager。1.DaoMaster主要是注册表2.DaoSession主要是做数据库的增删改查的映射,DaoSession的初始化及使用都是依赖DaoMaster。3.DBHelper作为初始化数据库的时候使用4.DBManager作为我们的主要操作类来编码。DBMan...原创 2019-12-24 10:11:36 · 236 阅读 · 0 评论 -
使用GreenDao数据库的记录
1.List<T>自定义数据的增加方法:写一个convert转化器,然后用FastJson的格式转化方法来处理转化问题例如:数据库的一个自定义List,叫priceArray.然后就进行转化:public static class PriceArrayBeanConvert implements PropertyConverter<List<P...原创 2019-12-23 16:48:27 · 243 阅读 · 0 评论 -
Mqtt断开连接disconnect报错原因
最近在用mqtt做及时通信,mqtt服务本身是放在本地的service服务里面运行,在应用关闭的时候,mqtt服务也要断开连接,不然会继续占用服务器的cpu,增加服务器负担。所以,在service的onDestroy中,需要调用MqttAndroidClient.disconnect()方法,但是会出现如下报错Log:Service org.eclipse.paho.android.serv...原创 2019-12-11 11:52:18 · 18058 阅读 · 2 评论 -
javax.net.ssl.SSLPeerUnverifiedException: Hostname xxx.app.xxx.com not verified:
最近遇到Hostname报错问题,使用的sslSocketFactory是网上的常规版本,所以写法是正确的。而这个问题的原因是服务器的host和本地的域名不匹配,我们看一下CA证书,例如baidu.com的证书:主要看使用者的CN和SAN的DNS是否有问题。在使用者可选名称中,一定要包含CN的域名,否则会报错,报错内容如同标题。具体原理可以参考博文:https://...原创 2019-12-03 12:38:11 · 8528 阅读 · 0 评论 -
网络测速全解析之一:自定义View基础知识(三)
一、Path的基本操作速查表~作用 相关方法 备注 移动起点 moveTo 移动下一次操作的起点位置 设置终点 setLastPoint 重置当前path中最后一个点位置,如果在绘制之前调用,效果和moveTo相同 连接直线 lineTo 添加上一个点到当前点之间的直线到Path 闭合路径 close 连接第一个点...原创 2018-08-29 20:43:32 · 248 阅读 · 0 评论 -
GSON格式插件:GsonFormat
一、PostmanPostman是接口测试工具,基于Chrome的插件(自备梯子)。该工具可以获取服务器的数据,发送数据到服务器获取返回结果等操作。该工具使用教程请查看文档。 我们将Postman获得的json数据通过GsonFormat工具来解析,形成Gson的数据格式类。 二、GsonFormat的安装使用 1.安装(搜索GSON就有了) ...原创 2018-10-18 11:05:55 · 646 阅读 · 0 评论 -
RelativeLayout属性详解
官网地址 第一类属性 属性值为true或者falseandroid:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中android:layout_centerInparent 相对于父控件完全居中android:layout_alignParentBottom 贴紧父控件的下边缘android:l...原创 2018-10-18 10:33:14 · 43331 阅读 · 0 评论 -
网络测速全解析之一:自定义View基础知识(七)
一、自定义View的事件分发机制:1.事件分发机制的意义:view是树形结构的,而且view会重叠到一起,当我们点击某个view的时候,他可能有多个层次的view都响应。如何处理这些响应,而让我们可以更好的选择,所以有v事件的分发机制。制定一种规则来解决这些问题,让事件可以有顺序的执行起来。 ...原创 2018-08-30 15:01:15 · 248 阅读 · 0 评论 -
网络测速全解析之一:自定义View基础知识(六)
一、PathMeasure讲解:PathMeasure是一个用来测量Path的类,主要方法如下构造方法方法名 释义 PathMeasure() 创建一个空的PathMeasure PathMeasure(Path path, boolean forceClosed) 创建 PathMeasure 并关联一个指定的Path(Path需要已经创建完成)。 公共...原创 2018-08-30 11:23:20 · 219 阅读 · 0 评论 -
网络测速全解析之一:自定义View基础知识(五)
常用速查表:作用 相关方法 备注 移动起点 moveTo 移动下一次操作的起点位置 设置终点 setLastPoint 重置当前path中最后一个点位置,如果在绘制之前调用,效果和moveTo相同 连接直线 lineTo 添加上一个点到当前点之间的直线到Path 闭合路径 close 连接第一个点连接到最后一个点,形成...原创 2018-08-29 22:49:44 · 269 阅读 · 0 评论 -
网络测速全解析之一:自定义View基础知识(四)
一、Path之贝塞尔曲线(非常重要~)常用速查表:为了兼容性(偷懒) 本表格中去除了在API21(即安卓版本5.0)以上才添加的方法。忍不住吐槽一下,为啥看起来有些顺手就能写的重载方法要等到API21才添加上啊。宝宝此刻内心也是崩溃的。作用 相关方法 备注 移动起点 moveTo 移动下一次操作的起点位置 设置终点 setLastPoint ...原创 2018-08-29 21:51:36 · 245 阅读 · 0 评论 -
descendantFocusability用法
这个属性主要是为了解决焦点问题。两种情况:1.ListView的item有Button时,点击item无响应。2.在ScrollView时,里面包裹的内容超过了屏幕的长度,当进去scrollView直接自动滑动到最底部。 这两个问题都可以通过android:descendantFocusability属性做到。该属性在view获得焦点时,定义ViewGroup和其子控件两者之间...原创 2018-10-16 19:24:23 · 4251 阅读 · 0 评论 -
android进程生命周期和ADJ
一、进程生命周期在回收资源的时候,系统会根据进程的重要性来从低到高的回收,划分为5个级别:1.前台进程(Foreground process)2.可见进程(visible process)3.服务进程(Service process)4.后台进程(Background process)5.空进程(Empty process)重要性依次递减1.1 Foreground process...原创 2018-10-19 16:03:22 · 1259 阅读 · 0 评论 -
多线程之Thread、Runnable、Callable、Future、FutureTask
一、知识基础:1.Thread、Runnable、Callable:都是线程2.Thread特点:提供了线程等待(wait)、线程睡眠(sleep)、线程礼让(yield)等操作。3.Runnable和Callable特点:都是接口,并提供对应的实现方法。4.Runnable和Callable的区别:Runnable无返回值,Callable有返回值。5.Future:提...原创 2018-10-17 09:29:04 · 1199 阅读 · 0 评论 -
MB/s、Mb/s、Mbps区别
1Kb = 1024bit1KB = 1024Byte1Mb = 1024Kb1MB = 1024KB 1Byte = 8 bit1MB = 8 Mb1Mb = 0.125MB 【本质:都是1Byte = 8 bit的换算】 所以换算的时候只需要知道:1MB/s = 8Mb/s = 1024KB/s...原创 2018-10-17 09:51:15 · 5883 阅读 · 0 评论 -
ProcessList.java文件解读
package com.android.server.am;import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;import jav...原创 2018-10-22 22:27:02 · 1581 阅读 · 0 评论 -
Android事件分发机制
一、什么是Android事件分发机制Android事件分发机制是Android最基本的机制之一,不论是按键的事件,还是消息的事件,在Android的系统运行中,事件的分发均采用同一种思想来实现。我们这里通过分析android的按键事件分发来理解。 1.Android View的树形结构我们日常处理的部分为RootView下面的ViewGroup和View部分,那么上面的Ph...原创 2018-12-10 14:50:11 · 291 阅读 · 0 评论 -
ActivityManager 和 内部类 RecentTaskInfo的学习
因为最近在做一个关于获取任务栈列表的功能,所以需要学习了解ActivityManager和RecentTaskInfo类,就写个文章记录一下。首先,阅读官方文档关于这两部分的api介绍(ActivityManager、RecentTaskInfo)一、ActivityManager部分api解读:1.ActivityManager继承自Object对象,主要是对applicat原创 2017-10-27 15:26:35 · 2845 阅读 · 0 评论 -
网络测速全解析之一:自定义View基础知识(二)
一、Canvas 画布操作:画布操作的意义在于帮忙我们用更容易理解的方式做出想要的效果。(所有的画布操作都只影响后续的绘制,对之前的绘制内容没有影响)1.画布操作(1)位移(translate)translate是平移操作,基于当前点的平移一段距离;而不是基于(0,0)圆点的平移。(移动是可叠加的~)(2)缩放(scale)sx、sy是缩放比例,而px和py是控...原创 2018-08-29 16:55:41 · 230 阅读 · 0 评论 -
网络测速全解析之一:自定义View基础知识(九)
一、MotionEvent讲解:单点触控:事件 简介 ACTION_DOWN 手指 初次接触到屏幕 时触发。 ACTION_MOVE 手指 在屏幕上滑动 时触发,会多次触发。 ACTION_UP 手指 离开屏幕 时触发。 ACTION_CANCEL 事件 被上层拦截 时触发。 ACTION_OUTSIDE 手指 不在控件区域 时触发。...原创 2018-08-31 09:47:14 · 651 阅读 · 0 评论 -
网络测速全解析之一:自定义View基础知识(一)
效果如图:整个项目的Github地址一、基础知识:基础知识,也就是最基本的自定义view需要掌握的知识,我这里主要是学习了GcsSloop大佬的view自定义系列博客(这里是博客地址)1.自定义view绘制流程调用链2.android自定义坐标系(向右向下为正)所以屏幕显示部分坐标系如下:子控件和父控件的关系:MotionEvent中:get...原创 2018-08-27 22:53:24 · 526 阅读 · 0 评论 -
TV中RecyclerView添加item的点击事件和删除item之后获取焦点解决
关于在RecyclerView中添加点击事件,已经有无数的博客了,我之所以还要写一遍,主要是为了自己加深影响。RecyclerView的好用之处比起ListView和GridView来说就太多了,这里也不在赘述,而不同之处是RecyclerView没有item的点击事件,所以这里实现方式是模仿ListView的item点击事件,构造一个自定义的点击事件来。一、在自定义的ad原创 2017-10-23 20:09:08 · 1797 阅读 · 0 评论 -
onActivityResult方法的使用
在进行界面间的跳转和传递数据的时候,我们有的时候要获得跳转之后界面传递回来的状态,数据等信息。这个时候,我们不一定需要使用Intent进行跳转回原先设置的界面,而是使用onActivityResult方法就可以解决这个问题。原理如图:我们这里假设有A、B两个Activity,由A跳转到B,然后B返回到A。在这一过程中,我们在A启动B的过程中调用startActivityForR原创 2017-10-25 19:32:15 · 13324 阅读 · 1 评论 -
Android app、process和task的区别
Android应用模块有三种方式,分别是 应用(app)、进程(process)和任务(task)。1.应用(app):里面包含了程序所有的代码和资源文件,用户可以安装 的一个设备整体。2.进程(process):底层级别的代码运行的进程,通常一个apk文件的所有内容会运行在一个进程中,有时候好几个apk共用同一个UID或者process,会放置到同一个进程中使用。3.任务(task)原创 2017-10-25 19:13:40 · 1115 阅读 · 0 评论 -
Activity的四种启动模式和Task的理解
一、Task的理解以及SingleTask的使用。1.Task的理解:我们知道,activity是application的基本组件,而在程序运行的时候,其实就是一系列的activity的使用。所以,我们把对于这一系列的activity的使用的动态过程叫做任务(Task)。2.SingleTask的使用:SingleTask是android中activity四种启动模式中最难理解的,它表示在原创 2017-10-24 20:44:15 · 2641 阅读 · 0 评论 -
android实现选中变大变小效果及边框效果的方式
一、选中变大变小效果的实现方式:1.使用ViewCompat实现:ViewCompat是一个中介方法,主要的作用是提供兼容性。因为在android3.0前后在执行动画效果的时候,调用的api是非常不同的,存在很大的兼容性问题,而ViewCompat却可以自动判断属于哪个版本,并根据当前版本,实现在当前版本下的方法调用,而不用开发者自己判断。关于它的意义,官方文档只给出了一句话: Hel原创 2017-11-09 16:45:13 · 8719 阅读 · 5 评论 -
Android近期任务列表Recent List(Recents Screen)的实现方式
一、明确android的近期任务是什么:我们的手机下方一般有三个键,一个是返回键,中间的是home键,另一个是RecentList键,也就是最近浏览记录的记录键,这个的实现在4.0及以上版本使用,android 5.0(api 21)之后,为了系统的安全性,不再允许被第三方开发人员使用,也就是api中不再被使用。但是,为了向前的兼容性,还是允许使用获得近期浏览记录的api,只是只能获得部分不敏原创 2017-10-31 08:43:33 · 28213 阅读 · 20 评论 -
ConstraintLayout布局 居中|居右 实现。
ConstraintLayout布局出来之后,一直没怎么使用过,今天写一个布局文件刚好使用了一下。界面结构是这样的:这里主要是左边的视图有两部分,一个ImageView控件和LinearLayout组成,LinearLayout控件中又有三个TextView,如果左边的根布局使用LinearLayout的话感觉会很繁琐,而ConstraintLayout控件的强大之处除了其拖拽的作原创 2017-10-23 19:12:51 · 19214 阅读 · 0 评论 -
GridLayoutManager 设置居中对齐问题
最近一直在做RecyclerView下的item布局问题,除了常规的LinearLayout之外,还有比较常用的GridLayoutManager和StaggeredGridLayoutManager,后两种分别是九宫格布局、瀑布布局。本人这次主要适用了GridLayoutManager布局,但是在实现的过程中,发现了item的布局无法居中,每次显示完都会在界面的右边留有很大一部分空白,十分头疼。原创 2017-11-08 15:21:18 · 26680 阅读 · 4 评论 -
android隐藏apk方式以及apk之间的启动方式
一、隐藏apk的方式:在每个项目(apk)中都有一个启动应用的Activity,他的标签是这个: 这里的 android.intent.category.LAUNCHER 就是apk的启动方式,如果要隐藏apk,只需要删除或者将启动方式从LAUNCHER改为DEFAULT。二、启动a原创 2017-11-07 21:18:50 · 5033 阅读 · 0 评论 -
androidstudio更改优先加载系统包framework.jar的顺序
这篇文章主要针对本地开发系统级应用,使用系统源码中的隐藏方法时,优先加载需要的隐藏api而不是官方的SDK的解决策略。一、androidstudio编译时加载的顺序。在我们新建的每一个工程中,在项目名/app目录下都有一个文件,叫做 app.iml .(如图)这个文件是编译器在运行时候加载需要依赖的库文件的顺序表,打开文件,我们可以观察一下:我们看到最上原创 2017-11-07 11:46:52 · 9629 阅读 · 13 评论