前言前面写了《Android涂鸦画板原理详解——从初级到高级(一)》,讲了涂鸦原理初级和中级的应用,现在讲解高级应用。如果没有看过前面一篇文章的同学,建议先去看看哈。准备高级涂鸦涉及到图片操作,包括对图片进行缩放移动、涂鸦等,这里涉及到矩阵的变换。关于矩阵变换的知识,请查看我的另一篇文章《浅谈矩阵变换——Matrix》。根据文中的介绍,接下来使用变换坐标系的空间想象去理解涂鸦中涉及到的矩阵变换。高
本平台的文章更新会有延迟,大家可以关注微信公众号-顾林海,包括年底前会更新kotlin由浅入深系列教程,目前计划在微信公众号进行首发,如果大家想获取最新教程,请关注微信公众号,谢谢在上一小节介绍了重试重定向拦截器RetryAndFollowUpInterceptor和桥接适配拦截器BridgeInterceptor,这节分析缓存拦截器CacheInterceptor。缓存策略mHttpClient
什么是PCM格式声音从模拟信号转化为数字信号的技术,经过采样、量化、编码三个过程将模拟信号数字化。采样顾名思义,对模拟信号采集样本,该过程是从时间上对信号进行数字化,例如每秒采集44100次,即采样频率44.1khz量化既然是将音频数字化,那就需要使用二进制来表示声音的每一个样本。例如每个样本使用16位长度来表示,即音频的位深度为16位编码编码就是按照一定的格式记录采样和量化后的数据,比如顺序存储
转眼间使用Kotlin已经有两个月了,时间不长,我也算搭上了Google宣布Kotlin作为官方支持语言的一波末班车。可能大家早已从纯Java开发Android转为了混合使用开发甚至是Kotlin开发,那你转向Kotlin的初衷又是什么呢?对于我,很简单,只是因为一句话:「Google爸爸都推荐的语言,我们没理由不用!」Kotlin有着诸多的特性,比如空指针安全、方法扩展、支持函数式编程、丰富的语
本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、ADB简介二、ADB的工作方式三、ADB常用命令欢迎关注微信公众号:程序员Android公众号ID:ProgramAndroid获取更多信息我们不是牛逼的程序员,我们只是程序开发中的垫脚石。我们不发送红包,我们只是红包的搬运工。一、ADB简介ADB(AndroidDebugBridge)是一个通用命令行工具,
1.Dart学习入门2.Dart学习-关键词3.Dart学习-变量4.Dart学习-内置类型5.Dart学习-方法6.Dart学习-操作符7.Dart学习-控制流语句8.Dart学习-异常9.Dart学习-类10.Dart学习-库和可见性11.Dart学习-异步支持
在官网下载安装包https://developer.android.com/studio/将zip包解压到相应的位置,如/usr/local/设置环境变量1.在/etc/profile文件中追加#设置环境变量exprotPATH=$PATH:/usr/local/android-studio/bin#设置别名,可用于终端启动ASaliasas=/usr/local/android-studio/b
开头引用一段官网的介绍AFrameLayoutwitharoundedcornerbackgroundandshadow.CardViewuseselevationpropertyonLollipopforshadowsandfallsbacktoacustomemulatedshadowimplementationonolderplatforms.Duetoexpensivenatureofro
一、概述Android插件化技术一直是安卓开发中一个重要的方向,大概12年就被提出,发展至今已逐渐趋于成熟,很多大厂都有自己的一套插件化方案,诸如淘宝的Atlas,滴滴的VirtualAPK,360的RePlugin等。插件化技术的发展得益于业务的不断新增,诸如淘宝APP,里面有聚划算,拍卖,饿了么,淘票票等业务功能模块(这里只考虑原生界面),如果今天饿了么有个Bug要修复发版,明天淘票票想加多个
Livedata是一个数据源的包装类,他可以有效的取代请求信息时用到callback接口,还可以配合Lifecycle感知程序组件生命周期。正常我们请求网络数据时的代码为:publicclassListActivityextendsAppCompatActivity{privateTextViewuserNameTv;@OverrideprotectedvoidonCreate(Bundlesav
使用Lifecycle管理Activity和Fragment组件的生命周期可以减少重复的样板代码以及减少不必要的麻烦。开发中生命周期存在的问题假设我们要实现一个定位的功能,我们需要在Activity的生命周期回调方法中添加定位sdk的启动和停止方法:publicclassLocationActivityextendsAppCompatActivity{privateLocationListener
DataBinding出现的目的旨在取代findViewById()方法,但是它的功能不仅如此。配置在build.gradle中开启功能android{...dataBinding{enabled=true}}在gradle.properties中启用新的编译器android.databinding.enableV2=true基本操作实现一个databinding基本上需要完成三个步骤的工作1.创
之前我在AndroidMVP升级路系列的最后一篇文章中提到过有关MVP的没落,虽然有些无奈但没办法这是这样的时代,技术亦如此更何况我们人呢。很荣幸的是MVP系列的文章得到了好多朋友的回复,其中也有一些对架构设计存在异义的朋友,我基本上也没继续深入探讨因为Android官方推出的架构组件已经逐步成熟,我一直在研究新的架构模式。现在,我希望可以分享我所学,与大家共同探讨。基本介绍Android官方把他
附着调试(AttachDebuger)这个名词不搜一下还真不知道。但是确实是大大的实用。就是这个东西。我们常常调试程序的时候就是点Debugapp按钮,有时候点了Run之后发现效果不对,想调试一下,然后又点Debug按钮重新编译了一遍,非常耗时间,这时候就要用到Attachdebug了。Attachdebug是在你手机连上AS之后,开启了你的手机程序,然后点击Attachdebug按钮,就可以进入
github_DPScreenAdaptationAPKdemo小编尝试过2种屏幕适配方法:1.PX适配使用PXGenerator代码生成各种分辨率的文件夹以及文件,以某分辨率比如480x800为基准,1px=1px,按比例生成其他各种分辨率的dimen文件,会有1px=4px,1px=3px之类的情况,以次达到屏幕适配的目的<dimenname="py11">14.7px</d
于为何选择程序员这份工作,各有各的答案。有的人因为喜欢代码的对话逻辑,有的人因为看中程序员的较高薪资。有人追名,有人逐利,有人为了梦想,还有人仅仅只是想做些实际的小事。你的答案,又是什么?写在前面前几天和两位发小聚餐,我们三个人都选择了程序员作为自己的职业。初始时三个人差不多,往后的十几年开始出现了发展偏差,现在的我们进入到了职业的重要选择点,三个人的选择出现了较大的偏差,幸运的是每个人都走在了适
前面已经封装了很多常用、基础的组件了:base-module,包括了:crash处理常用工具类apk升级处理log组件logcat采集ftp文件上传blur高斯模糊fresco图片处理等等那么,今天继续再来封装一个网络组件,基于volley的二次封装,目的也是为了简化外部使用,以及新项目可快速接入使用。这样一来,开发一个简单的app所需要的公共基础组件基本都已经封装好了,在这些组件基础上,应该可以
图片添加阴影是为了突出图片的效果,有的设计师为了突出某部分的内容会给该部分添加阴影背景,常见的是给图片添加外阴影,之前也遇到要给图片添加内阴影的效果,但是时间紧最后没实现出来,有实现方法的朋友告知一二,多谢~图片添加阴影的几种方式layer-list实现使用.9图实现自定义Drawable实现使用elevation属性使用第三方库利用layer-list实现(不推荐使用,效果不太好)在layer-
文章来源自作者的Android进阶计划(https://github.com/SusionSuc/AdvancedAndroid)前面依次对这两个路由框架做了源码分析,本文就来比较一下这两个框架。这里从两个方面对比这两个框架:路由、模块间通信路由功能WMRouterARouter多scheme和host的支持✅;可随意添加,scheme、host不需要强制配置❎;支持标准URL跳转。有组的概念,一
PhotoMovie(https://github.com/yellowcath/PhotoMovie)可轻松实现类似抖音、微视、美拍的照片电影功能。效果如下滤镜效果转场效果基本用法可参照DemoPresenter//添加图片List<PhotoData>photoDataList=newLinkedList<PhotoData>();photoDataList.add(n