自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JackWaiting

坚持做自己懒得做但是正确的事情,你就能得到别人想得到却得不到的东西。

  • 博客(44)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Jetpack Compose 基础介绍(二)

7. Compose 的渲染7.1 Compose 渲染过程对于任意一个 composable 的渲染主要分为三个阶段:Composition,在这一阶段决定哪些 composable 会被渲染并显示出来。Layout,在这一阶段会进行测量和布局,也就是确认 composable 的大小和摆放的位置。Drawing,在这一阶段主要是完成绘制工作,将要展示的 composable 绘制到 canvas 上。CompositionComposition 分为 initial composit

2022-01-27 21:13:16 3047

原创 Jetpack Compose 基础介绍(一)

1.1 命令式 UI在传统的 XML UI 系统中,创建一个 UI 的逻辑往往分为以下几步:通过 xml 控件完成 UI 布局运行期将 xml 中的各控件转换为 java 对象,对象中的每个会直接或间接改变控件显示效果的属性,都被称为控件的内部状态通过 findViewById 拿到对应的控件对象,并调用其 getXXX 或 setXXX 方法来手动维护其内部状态的更新这种由控件对象提供 setXXX 方法来由外部手动维护控件内部状态更新的操作,就是命令式编程。1.2 声明式 UI在 Je

2022-01-27 20:26:20 4347

原创 BytecodeInjectPlugin -- 一个支持自定义注入 Java 代码的库

最新版本v1.0.4Copyright © 2019-2021 by JackWaiting, All rights reserved.介绍一个使用 Gradle Plugin + Javassist 实现代码自动注入的库支持功能1、支持代码自定义插入方法体2、支持插入自定义变量名 (支持 byte,short,int long,boolean,char,float,double)3、适配 Java 与 Kotlin 代码4、支持 Module 与 Lib 同时代码插入5、支持简单变量

2021-01-05 12:09:09 426 1

原创 Flutter Widgets 总览

提供 Flutter 所有 widgets 总览,方便初学者学习,对Flutter widgets 有一个总体的概念与分类。PDF下载地址:Flutter widgets 总览

2020-07-02 17:28:26 336

原创 虚拟机运行 Android 程序背后的故事

众所周知,Android 最开始面世时,使用的开发语言是 Java,而 Java 是运行在 Java 虚拟机上的,即 JVM。那么为什么 Google 要单独设计一套新的 Dalvik 虚拟机来执行 Android 程序呢?可能是为了解决移动端设备上软件运行效率问题,可能是 JVM 虚拟机无法满足当时移动端的使用场景,也可能是为了规避与 Oracle 公司的版权纠纷问题,最终 Google 专门为 Android 平台设计了一套虚拟机来运行 Android 程序,它就是 Dalvik Virtual Mac

2020-05-09 20:30:18 2297

原创 JackHttp -- HTTPS 为什么是安全的?

HTTP 为什么是不安全的什么是 HTTPS?SSL/TLS 在网络分层中所处的位置HTTPS 与 HTTP & SSL/TLS 之间的关系HTTPS 为什么是安全的HTTPS 连接流程分析 HTTPS 真的一定安全吗?

2019-12-10 17:53:38 2173 1

原创 JackHttp -- 浅谈编码、加密(对称加密,非对称加密,Hash算法)

什么是编码?Base64 解码原理Base64 问题解答什么是加密?加密的诞生对称加密非对称加密Hash 算法

2019-12-06 21:36:59 1321 1

原创 JackHttp -- 从原理来理解 HTTP

简介TCP/IP那么到底什么是 HTTP?为什么定义 HTTP,其目的是什么?HTTP 工作原理请求行(Request - Line)请求头( Request-header)空行(CRLF)请求体(message-body)返回响应响应头部(Response Header)响应码(状态码)对拆分问题进行解答总结————————————————版权声明:本文为CSDN博主「JackWaiting」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

2019-12-04 20:06:56 1409 3

原创 Android APP 卡顿问题分析及解决方案

用户对卡顿的感知, 主要来源于界面的刷新. 而界面的性能主要是依赖于设备的UI渲染性能. 如果我们的UI设计过于复杂, 或是实现不够友好,计算绘制算法不够优化, 设备又不给力, 界面就会像卡住了一样, 给用户卡顿的感觉.如果你的应用界面出现卡顿不流畅的情况,不用怀疑,这很大原因是你没有在16ms完成你的工作。没错,16ms要完成你的工作,再慢点,用户就会感觉到卡顿,也许就会在屏幕对面开始吐槽你...

2018-05-04 19:32:29 24102 3

原创 教你如何玩转 AndroidStudio 一键多渠道打包

如果你还在手动的对每个市场进行打包,先不说 Low 不 Low,自己也会觉得很痛苦对吧,甚至有的同学使用 Windows build 打包一次就得 3-5min;打 6 个市场包半个小时就过去了,最重要的是这个过程中还有可能出现错误,增加测试的难度与成本。多渠道打包也有很多种方式;有远程的 jenkins + gradle +github 等方法;网上资料很多,由于这种方式需要的配置环境比较繁琐;适

2017-12-04 19:05:32 2123 1

原创 关于AndroidStudio3.0 升级你可能遇到的事

升级 3.0 之后打开项目报错,这里记录一下解决的过程首先升级 Gradle 版本,运行我们公司的标案项目,之前的 Gradle 版本是 2.1.2进入正题:运行Gradle报错Gradle sync failed: Cannot choose between the following configurations of project :BaseCloudMusicResource:

2017-11-28 19:01:44 9660

原创 Android 8.0 应用快捷方式(ShortcutManager)的使用

在Android 7.1(API 25)之后添加的新功能,应用快捷方式。ShortcutManager管理一个应用程序的快捷方式。只要长按APP图标支持快捷方式,通过快捷键,用户可以快速访问任意一个Activity。简单地理解:在长按应用图标的情况下,在应用图标上显示的快捷方式,该快捷方式可以点击进入Activity,长按拖动创建一个在Launcher上的图标。 现在市场上已经是有很多应用增加了这项

2017-11-16 18:18:07 12861 3

原创 《项目百态:软件项目管理面面观》三模式总结

模式一:《玩的就是心跳》其中显著的表现为:他们混淆了对紧迫时间的响应和指的赞赏的响应。只要客户提出了需求,不管是否能带来收益(甚至不管有用没有),都会立即转化成项目,且通常截止日期会短的可笑。这个新项目自然会加重已经在超负荷工作英雄们负担,使他们更加手忙较短,无限重复在紧急的过程中。这种“心跳游戏”型的行动是贸然的,思考极其的肤浅,其结果就是大部分工作都处在不断变化,无法固定的状态,需求永远在变更的

2017-09-09 13:18:37 1094

原创 那些年,我们一起踩过的 “Android 坑”

69、多线程同时访问集合(ConcurrentModificationException)问题现象: 多线程同时修改集合时常常容易出现 ConcurrentModificationException ,即便是改成用 Collections.synchronizedCollection() 方法同步也无效。原因分析:当集合正在迭代时,如果进行修改就会出现异常,@问题13 已经说过该问题。而 synch

2017-07-19 14:10:11 20452

原创 universalImageLoader,picasso,glide,fresco图片选择库选择分析

在图片加载这块,picasso,glide,universalImageLoader,fresco 这几个库算是目前做好的四个库了。本博客仅仅作为笔记记录,仅代表个人观点,不对之处,欢迎指出。​universalImageLoader一个强大的图片加载库,包含各种各样的配置,最老牌,使用也最广泛。但现在不维护了,比较遗憾。Picasso​square公司出品,精品之作,专注与加载高质量图片。Pica

2017-02-22 14:24:38 2729 2

原创 2016年年终报告总结

转眼间2016已经飞逝而过,在写这份总结报告的同时也是我对2016的一个回顾,在此,我将从项目与技术两个方面对自我进行一个总结。一. 2016的收获项目:由于2015已经对公司的产品和项目都已经积累了一定的能力和经验,在2016自己更多的精力并不完全放在项目中了,在平时的工作中也有意识的去压缩自己做项目的时间,但是回顾这一年的项目,发现不知不觉中,也开发或参与了20多个项目,主要项目有蜗灯、蜗爱公播

2017-01-18 11:50:20 2312 7

翻译 官网翻译篇--在 SQL 数据库中保存数据

在 SQL 数据库中保存数据本课程假定您基本熟悉 SQL 数据库并且可帮助您开始在 Android 中使用 SQLite 数据库。 您在 Android 中使用数据库所需的 API 在 android.database.sqlite 软件包中提供。定义架构和契约SQL 数据库的主要原则之一是架构:数据库如何组织的正式声明。 架构体现于您用于创建数据库的 SQL 语句。您会发现它有助于创建伴随类,即契

2016-12-30 14:29:49 927

原创 Android Jackson、Gson、FastJson解析框架对比

目前Android在使用的Json解析框架主要有Jackson、Gson、FastJson、org.json; 因为Android Studio自带的org.json解析 XML 文件时会将整个 XML 文件的内容解析成树型结构存放在内存中并创建新对象,比较消耗时间和内存,解析速度和效率慢,解析方式和性能完败Gson等开源框架,导致org.json慢慢的也在被淘汰,Andorid开发中还在使用or

2016-08-22 17:00:11 7687

原创 Android数据库框架GreenDao&Realm实战分析

Android开发的童鞋应该都知道,使用官方的SQLite数据库,可以满足我们大部分增删改查的需求,然而随着Android技术的逐步成长,你会慢慢发现SQLite越来越不能满足我们的需求。总结为以下主要几点:1、创表,增删改查需要些大量代码,开发效率极低。2、需大量封装,测试繁琐。3、效率极低(当你使用了GreenDao||Realm你会发现它完全不能接受)。4、加密等操作需手动处理。正因

2016-08-09 17:35:35 13827 7

原创 Android TV APPs 的介绍与创建

最近开始接触到Andorid TV编程,发现目前这方便的资料与比较还比较少,但现在随着产品与用户的升级,涉及到Android TV与 Android Watch的编程离我们越来越近了,本篇博客开始,将以笔记的方式记录我Android TV从零到有的一个过程。本博客创建步骤主要参考Android官方文档。 Get Started with TV AppsTV应用程序使用相同的结构与手机和平板电脑。这

2016-07-19 18:00:04 13837 4

原创 Android 通过图片进行自定义View绘制

通过Android自定义图表:ChartView和自定义View实现渲染 我们已经了解了如何简单的去绘制一个自定义View-图表和在如何去对一个自定义View中起部分内容进行渲染。 这次我们来了解一下,在自定义View的过程中如何通过图片来绘制一个View。首先还是先看效果图Images:这个View其实是2张图片组成的,其中一张是背景图,一张是指针,现在我们传给这个View一个0-10的值,让

2016-06-30 18:50:35 2846

原创 自定义View实现渲染

阅读前可以先看Android自定义图表:ChartView需求:通过以上例子我们修改测试数据后,拿到的View图像是这样的:而我们要的效果是纵坐标7.45以上与5.97以下的部分为红色,7.45与6.43间为绿色,6.18与6.43之间为黄色,效果如下:有了解自定义View的同学应该清楚从一个点画到另一个点的过程中,通过Paint与canvas.drawLine()绘制一条不同颜色的线是很不容易做到

2016-06-29 17:15:45 6759

原创 Android自定义图表:ChartView

效果图 Design images : View Code:/** * Created by JackWaiting on 2016/6/24. */public class CharView extends View { private Paint mRowLinePaint,mColLinePaint; //横线、竖线的画笔 private Paint redPain

2016-06-27 16:44:06 4811 1

原创 Retrofit源码分析以及MVP框架封装使用

阅读此文前请先阅读Retrofit+okhttp网络框架介绍 从上文中我们已经了解通过如下代码即可得到返回给我们call 以及 response对象,今天我们通过源码来分析这个过程是如何实现的。 /** * 获取天气数据 * @param cityname * @param key * @return */ @GET("/weather/in

2016-06-23 17:29:51 6477 1

原创 Android AudioRecord介绍与Android 6.0后的改变

AudioRecord介绍在android中采集音频的api是android.media.AudioRecord类其中构造器的几个参数就是标准的声音采集参数以下是参数的含义解释public AudioRecord (int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInByte

2016-06-08 16:22:16 5097 3

原创 Retrofit+okhttp网络框架介绍

网络框架选择过程目前Github上使用比较多的Android Http库依次是Retrofit,okhttp,android-async-http,okhttp-utils,async-http-client,等等; 中间经过一系列的分析,根据start,更新速度,作者,库的实用性,性能,以及拓展性等等,最终选出了3个PK.(Retrofit,okhttp,okhttp-utils) 其中Ret

2016-06-02 18:06:34 15567 1

原创 如何使域名跳转到个人博客

需求:众所周知,要想在我们自己申请的独立域名直接跳转到个人博客的话,是需要URL转发技术的,(当然,如果是跳转自定义的主机,如Github是不需要的)如果直接使用注册商的URL转发,是需要备案的,备案就得需要服务器,一个服务器虽然不贵,但就因为显示一个博客或微博,而买个服务器甚是不划算。那么如何解决这个问题呢?这个其实通过第三方域名转发就可以了,一般显性转发(就是跳转以后还是显示你现在的网址)是免费

2016-02-27 11:11:52 4948 2

原创 年终工作总结

不知不觉间,来到蜗爱生活公司已经快一年时间了,在工作中,经历了很多酸甜苦辣,认识了很多良师益友,获得了很多经验教训,感谢领导给了我成长的空间、勇气和信心。在这几年的时间里,通过自身的不懈努力,在工作上取得了一定的成果,但也存在了诸多不足。回顾过去的一年,现将工作总结如下一、项目与调研在这一年的时间里主要负责公司Android应用的开发,回想起这一年,发现不知不觉已经参与开发了10几个项目,主要参与的

2016-01-25 14:15:24 7476

原创 高仿微信朋友圈

写这个微信朋友圈的目的是今年公司开展了一个趣味运动会,有一个比赛项目是微信点赞,对于我们程序员来说,这不是送分嘛,于是我们团队光荣的把这个写一个朋友的任务交给了我,要求是相似度百分之99以上,能上传自定义照片,能更改点赞数与评论数,包括姓名,日期等都能改,于是花费了3天时间写了这个高仿的微信,由于时间关系,代码写的不是很好,多多谅解。需要的朋友也可以继续完善。由于功能也不少,就不贴代码,直接上图,后

2016-01-22 12:06:44 20216 5

原创 什么是内存溢出与内存泄露,几种常见导致内存泄露的写法

最近朋友推荐了一篇关于内存溢出与内存泄漏的文章,感觉写的还不错,于是便在网上搜索了一番,对这块进行了加固,发现自己之前写的代码也存在一些内存泄漏的风险,所以弄懂内存泄漏与内存溢出是很有利于我们提高代码水平的,特别是对我们移动端的程序员来说,内存可是硬伤,可不能随意挥霍。下面把我整理的内容写出来吧,写的不好的地方,欢迎指正。首先简单的介绍一下什么是内存溢出与内存泄漏内存溢出 out of memory

2015-12-24 11:44:14 19655 10

原创 解决Android6.0蓝牙无法扫描设备或闪退

目前待的这家公司是做智能家居的,最近客户那边有反馈说为什么我的手机蓝牙也打开了,设备的蓝牙也打开了,为啥总是扫描不到呢,但是我们公司的测试人员几经排查,并未发现客户的所描述的扫描不到设备,但客户所说的问题确实又存在,几经周折,找到了原因,原来是现在市场上出来的android6.0手机需要添加两个权限,android官网也已经说明了,直接上图具体权限官网说的很清楚了解决办法Android6.0设备通过

2015-12-15 15:25:28 8053 8

原创 监控电量和充电状态

查询当前充电状态BatteryManager 会广播一个包含所有电池和充电信息的粘性的intent(sticky intent),其中就包含当前充电状态。Sticky Intent是Broadcast Intent的有用变体,可以保存它们最后一次广播的值,并且当有一个新的接收器被注册为接收该广播时,它们会把这些值作为Intent返回。由于是粘性的intent,我们不需要注册一个广播接收器,在调用re

2015-12-03 16:38:30 12416

原创 android样式和主题

样式(Style)是用来指定View或者window的外观和格式的一组属性集合。可以用来指定高度、内边距、字体颜色、字体大小、背景颜色等属性。样式定义在独立于布局文件的XML文件中。保证了内容和设计的独立性。例如<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" a

2015-12-03 16:25:55 8912

翻译 如何让APK文件更小

Android最初版本的APK文件只有2MB左右的大小,而现在的应用变得越来越大,动辄就是10几20MB。用户体验和开发者经验的积累是造成APK文件越来越大的直接原因,还有以下一些原因:dpi种类的增加([l m tv h x xx xxx]dpi))安卓平台、开发工具、libraries生态系统的演进用户对于高品质UI的期望的不断增长……在Play-store上发布轻量

2015-12-03 15:41:29 8851

原创 Android通用适配器

重所周知,关于”ListView的优化”的问题,大量的理论和实践足以证明,是可以由几个方面进行优化的: 1.复用已经生成的convertView; 2.添加viewHolder类; 3.缓存数据(图片缓存); 4.分页加载。 但我们在开发中,经常会在不同的界面中用到很多ListView,一般的写法是:每个Listview写上对应的适配器,去继承BaseAdapter复写几个方法,getVi

2015-12-02 11:42:04 15401 3

原创 java中多种排序算法总结

之前整理的排序算法分享给大家。//插入排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;public class InsertSort implements SortUtil.Sort{ public void sort(int[] data) { int temp

2015-12-02 11:21:43 14879

原创 Android获取图片任意一点的RGB值

最近要做一个点击图片任何一个地方取色值然后传给蓝牙设备的一个功能。在网上搜索了一番,大部分都是重复,有的功能实现了,但是效果不好,大部分都取色值不准确,偏差有点大,于是决定还是自己动手写了一个,在这里分享给大家,有需要的朋友可以下载我写的这个小demo。效果:基本介绍思路:一首先需要一张图片,这里由于我的强迫症,我没有写死,而是去图库选择一张照片。二获取图片的宽、高,为了精度,这里一定要设置Bitm

2015-12-01 14:43:46 30483 15

原创 算法分析:方阵的主对角线之上称为“上三角”。

4、方阵的主对角线之上称为“上三角”。请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。例如:当n=3时,输出: 1 2 3 6 4 5 当n=4时,输出: 1 2 3 4 9 10 5 8 6 7 当n=5时,输出: 1 2 3 4 5 12 13 14 6

2015-11-25 14:14:50 11835 2

原创 Android开发屏幕适配全攻略

Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因、重要概念、解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获!Android屏幕适配出现的原因在我们学习如何进行屏幕适配之前,我们需要先了解下为什么Android需要进行屏幕适配。由于Android系统的开放性,任

2015-11-23 17:38:00 11874

原创 gradle的使用,依赖管理

引用依赖 对Gradle不是很亲切的朋友可以先认识以下Gradle Gradle基础–认识Gradle1. 什么是依赖管理依赖管理可以分为两部分:一是依赖,即项目构建或运行时所需要的一些文件;二是发布,即构建完成后上传到某个地方。1.1 依赖大部分的项目都需要第三方库类或项目文件,这些文件就是项目的依赖了。比如JDBC的jar包,junit的jar包等等。Gradle需要你告诉它工程的依赖是什么

2015-11-19 17:37:23 13629

gradle-7.4-bin

gradle-7.4-bin

2024-01-23

高仿微信朋友圈

具体内容参考http://blog.csdn.net/zhanggang740

2016-01-22

Android获取图片的RGB值

点击可以获取任何一张图片的RGB值,精度高。

2015-12-01

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

TA关注的人

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