android
JackWaiting
坚持做自己懒得做但是正确的事情,你就能得到别人想得到却得不到的东西。
展开
-
虚拟机运行 Android 程序背后的故事
众所周知,Android 最开始面世时,使用的开发语言是 Java,而 Java 是运行在 Java 虚拟机上的,即 JVM。那么为什么 Google 要单独设计一套新的 Dalvik 虚拟机来执行 Android 程序呢?可能是为了解决移动端设备上软件运行效率问题,可能是 JVM 虚拟机无法满足当时移动端的使用场景,也可能是为了规避与 Oracle 公司的版权纠纷问题,最终 Google 专门为 Android 平台设计了一套虚拟机来运行 Android 程序,它就是 Dalvik Virtual Mac原创 2020-05-09 20:30:18 · 2367 阅读 · 0 评论 -
自定义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 · 6813 阅读 · 0 评论 -
Android 通过图片进行自定义View绘制
通过Android自定义图表:ChartView和自定义View实现渲染 我们已经了解了如何简单的去绘制一个自定义View-图表和在如何去对一个自定义View中起部分内容进行渲染。 这次我们来了解一下,在自定义View的过程中如何通过图片来绘制一个View。首先还是先看效果图Images:这个View其实是2张图片组成的,其中一张是背景图,一张是指针,现在我们传给这个View一个0-10的值,让原创 2016-06-30 18:50:35 · 2876 阅读 · 0 评论 -
Retrofit源码分析以及MVP框架封装使用
阅读此文前请先阅读Retrofit+okhttp网络框架介绍 从上文中我们已经了解通过如下代码即可得到返回给我们call 以及 response对象,今天我们通过源码来分析这个过程是如何实现的。 /** * 获取天气数据 * @param cityname * @param key * @return */ @GET("/weather/in原创 2016-06-23 17:29:51 · 6535 阅读 · 1 评论 -
Android TV APPs 的介绍与创建
最近开始接触到Andorid TV编程,发现目前这方便的资料与比较还比较少,但现在随着产品与用户的升级,涉及到Android TV与 Android Watch的编程离我们越来越近了,本篇博客开始,将以笔记的方式记录我Android TV从零到有的一个过程。本博客创建步骤主要参考Android官方文档。 Get Started with TV AppsTV应用程序使用相同的结构与手机和平板电脑。这原创 2016-07-19 18:00:04 · 13916 阅读 · 4 评论 -
Android数据库框架GreenDao&Realm实战分析
Android开发的童鞋应该都知道,使用官方的SQLite数据库,可以满足我们大部分增删改查的需求,然而随着Android技术的逐步成长,你会慢慢发现SQLite越来越不能满足我们的需求。总结为以下主要几点:1、创表,增删改查需要些大量代码,开发效率极低。2、需大量封装,测试繁琐。3、效率极低(当你使用了GreenDao||Realm你会发现它完全不能接受)。4、加密等操作需手动处理。正因原创 2016-08-09 17:35:35 · 13917 阅读 · 7 评论 -
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 · 7772 阅读 · 0 评论 -
官网翻译篇--在 SQL 数据库中保存数据
在 SQL 数据库中保存数据本课程假定您基本熟悉 SQL 数据库并且可帮助您开始在 Android 中使用 SQLite 数据库。 您在 Android 中使用数据库所需的 API 在 android.database.sqlite 软件包中提供。定义架构和契约SQL 数据库的主要原则之一是架构:数据库如何组织的正式声明。 架构体现于您用于创建数据库的 SQL 语句。您会发现它有助于创建伴随类,即契翻译 2016-12-30 14:29:49 · 961 阅读 · 0 评论 -
universalImageLoader,picasso,glide,fresco图片选择库选择分析
在图片加载这块,picasso,glide,universalImageLoader,fresco 这几个库算是目前做好的四个库了。本博客仅仅作为笔记记录,仅代表个人观点,不对之处,欢迎指出。universalImageLoader一个强大的图片加载库,包含各种各样的配置,最老牌,使用也最广泛。但现在不维护了,比较遗憾。Picassosquare公司出品,精品之作,专注与加载高质量图片。Pica原创 2017-02-22 14:24:38 · 2785 阅读 · 2 评论 -
那些年,我们一起踩过的 “Android 坑”
69、多线程同时访问集合(ConcurrentModificationException)问题现象: 多线程同时修改集合时常常容易出现 ConcurrentModificationException ,即便是改成用 Collections.synchronizedCollection() 方法同步也无效。原因分析:当集合正在迭代时,如果进行修改就会出现异常,@问题13 已经说过该问题。而 synch原创 2017-07-19 14:10:11 · 20623 阅读 · 0 评论 -
关于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 · 9703 阅读 · 0 评论 -
Android 8.0 应用快捷方式(ShortcutManager)的使用
在Android 7.1(API 25)之后添加的新功能,应用快捷方式。ShortcutManager管理一个应用程序的快捷方式。只要长按APP图标支持快捷方式,通过快捷键,用户可以快速访问任意一个Activity。简单地理解:在长按应用图标的情况下,在应用图标上显示的快捷方式,该快捷方式可以点击进入Activity,长按拖动创建一个在Launcher上的图标。 现在市场上已经是有很多应用增加了这项原创 2017-11-16 18:18:07 · 13062 阅读 · 3 评论 -
教你如何玩转 AndroidStudio 一键多渠道打包
如果你还在手动的对每个市场进行打包,先不说 Low 不 Low,自己也会觉得很痛苦对吧,甚至有的同学使用 Windows build 打包一次就得 3-5min;打 6 个市场包半个小时就过去了,最重要的是这个过程中还有可能出现错误,增加测试的难度与成本。多渠道打包也有很多种方式;有远程的 jenkins + gradle +github 等方法;网上资料很多,由于这种方式需要的配置环境比较繁琐;适原创 2017-12-04 19:05:32 · 2225 阅读 · 1 评论 -
Android APP 卡顿问题分析及解决方案
用户对卡顿的感知, 主要来源于界面的刷新. 而界面的性能主要是依赖于设备的UI渲染性能. 如果我们的UI设计过于复杂, 或是实现不够友好,计算绘制算法不够优化, 设备又不给力, 界面就会像卡住了一样, 给用户卡顿的感觉.如果你的应用界面出现卡顿不流畅的情况,不用怀疑,这很大原因是你没有在16ms完成你的工作。没错,16ms要完成你的工作,再慢点,用户就会感觉到卡顿,也许就会在屏幕对面开始吐槽你...原创 2018-05-04 19:32:29 · 24284 阅读 · 3 评论 -
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 · 4886 阅读 · 1 评论 -
高仿微信朋友圈
写这个微信朋友圈的目的是今年公司开展了一个趣味运动会,有一个比赛项目是微信点赞,对于我们程序员来说,这不是送分嘛,于是我们团队光荣的把这个写一个朋友的任务交给了我,要求是相似度百分之99以上,能上传自定义照片,能更改点赞数与评论数,包括姓名,日期等都能改,于是花费了3天时间写了这个高仿的微信,由于时间关系,代码写的不是很好,多多谅解。需要的朋友也可以继续完善。由于功能也不少,就不贴代码,直接上图,后原创 2016-01-22 12:06:44 · 20286 阅读 · 5 评论 -
Android开发屏幕适配全攻略
Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因、重要概念、解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获!Android屏幕适配出现的原因在我们学习如何进行屏幕适配之前,我们需要先了解下为什么Android需要进行屏幕适配。由于Android系统的开放性,任原创 2015-11-23 17:38:00 · 11893 阅读 · 0 评论 -
Gradle基础--认识Gradle
有人用android studio开发android项目,发现经常接触到Gradle,但是对它又不会有很大的关注,而当你的Gradle报错,或者从github,csdn上下载开源项目的时候,一旦出现gradle的错误,你就棘手了,所有我们还是很有必要去了解一下Gradle的世界。什么是Gradle?Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁原创 2015-11-18 15:25:04 · 13423 阅读 · 10 评论 -
gradle的使用,依赖管理
引用依赖 对Gradle不是很亲切的朋友可以先认识以下Gradle Gradle基础–认识Gradle1. 什么是依赖管理依赖管理可以分为两部分:一是依赖,即项目构建或运行时所需要的一些文件;二是发布,即构建完成后上传到某个地方。1.1 依赖大部分的项目都需要第三方库类或项目文件,这些文件就是项目的依赖了。比如JDBC的jar包,junit的jar包等等。Gradle需要你告诉它工程的依赖是什么原创 2015-11-19 17:37:23 · 13655 阅读 · 0 评论 -
Onmeasure报空指针
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2015-11-12 16:57:32 · 17246 阅读 · 0 评论 -
解决Android6.0蓝牙无法扫描设备或闪退
目前待的这家公司是做智能家居的,最近客户那边有反馈说为什么我的手机蓝牙也打开了,设备的蓝牙也打开了,为啥总是扫描不到呢,但是我们公司的测试人员几经排查,并未发现客户的所描述的扫描不到设备,但客户所说的问题确实又存在,几经周折,找到了原因,原来是现在市场上出来的android6.0手机需要添加两个权限,android官网也已经说明了,直接上图具体权限官网说的很清楚了解决办法Android6.0设备通过原创 2015-12-15 15:25:28 · 8129 阅读 · 8 评论 -
Android通用适配器
重所周知,关于”ListView的优化”的问题,大量的理论和实践足以证明,是可以由几个方面进行优化的: 1.复用已经生成的convertView; 2.添加viewHolder类; 3.缓存数据(图片缓存); 4.分页加载。 但我们在开发中,经常会在不同的界面中用到很多ListView,一般的写法是:每个Listview写上对应的适配器,去继承BaseAdapter复写几个方法,getVi原创 2015-12-02 11:42:04 · 15420 阅读 · 3 评论 -
Android获取图片任意一点的RGB值
最近要做一个点击图片任何一个地方取色值然后传给蓝牙设备的一个功能。在网上搜索了一番,大部分都是重复,有的功能实现了,但是效果不好,大部分都取色值不准确,偏差有点大,于是决定还是自己动手写了一个,在这里分享给大家,有需要的朋友可以下载我写的这个小demo。效果:基本介绍思路:一首先需要一张图片,这里由于我的强迫症,我没有写死,而是去图库选择一张照片。二获取图片的宽、高,为了精度,这里一定要设置Bitm原创 2015-12-01 14:43:46 · 30729 阅读 · 15 评论 -
android样式和主题
样式(Style)是用来指定View或者window的外观和格式的一组属性集合。可以用来指定高度、内边距、字体颜色、字体大小、背景颜色等属性。样式定义在独立于布局文件的XML文件中。保证了内容和设计的独立性。例如<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" a原创 2015-12-03 16:25:55 · 8935 阅读 · 0 评论 -
监控电量和充电状态
查询当前充电状态BatteryManager 会广播一个包含所有电池和充电信息的粘性的intent(sticky intent),其中就包含当前充电状态。Sticky Intent是Broadcast Intent的有用变体,可以保存它们最后一次广播的值,并且当有一个新的接收器被注册为接收该广播时,它们会把这些值作为Intent返回。由于是粘性的intent,我们不需要注册一个广播接收器,在调用re原创 2015-12-03 16:38:30 · 12480 阅读 · 0 评论 -
如何让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 · 8906 阅读 · 0 评论 -
什么是内存溢出与内存泄露,几种常见导致内存泄露的写法
最近朋友推荐了一篇关于内存溢出与内存泄漏的文章,感觉写的还不错,于是便在网上搜索了一番,对这块进行了加固,发现自己之前写的代码也存在一些内存泄漏的风险,所以弄懂内存泄漏与内存溢出是很有利于我们提高代码水平的,特别是对我们移动端的程序员来说,内存可是硬伤,可不能随意挥霍。下面把我整理的内容写出来吧,写的不好的地方,欢迎指正。首先简单的介绍一下什么是内存溢出与内存泄漏内存溢出 out of memory原创 2015-12-24 11:44:14 · 20002 阅读 · 10 评论 -
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 · 15660 阅读 · 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 · 5130 阅读 · 3 评论 -
Android 百度自动更新(升级)SDK的流程简介
最近上传百度应用市场突然出现给我这样的提示我相信很多朋友肯定也发现百度现在需要用他的sdk进行百度升级,否则不让你通过他的市场,吐槽一下,百度也开始流氓啦,那么问题就来了,我们如何来解决这个问题呢。看了一下百度给的SDK文档,很详细,但是写的不是很完善,有的朋友看起来云里雾里的,最近我对这个地方做了一下总结。解决办法第一步:需要引入BDIntegrationSDK_LibProject工程这里去我的原创 2015-11-16 18:17:26 · 25260 阅读 · 0 评论