Kotlin修炼指南(五)—Delegates 委托,是一种比较常见的设计模式,通常采用接口或者抽象类的方式来实现,在Java代码中,一般使用接口来进行封装,而在kotlin中,可以通过委托机制来实现更加方便的委托模式。Kotlin中...
命名这件事 计算机科学只存在两个难题:缓存失效和命名。当我们的宝宝越来越大时,取名这件事情,就愈加紧急了,老婆多次催促我取名,可她不知道,我即将要解决的这个问题,正是计算机科学界都公认的一大难题,哪...
2020+1 -> 2021 2020年从一开始就是不平凡的一年,从最初的疫情在家办公,到后来疫情防疫的常态化,给我们的生活带来的很多很多不一样的改变,但最大最大的改变,还是我们家来的这个新朋友。最早得知他的消息,是...
Gradle自定义插件 Gradle自定义插件在Gradle中创建自定义插件,Gradle提供了三种方式:在build.gradle脚本中直接使用在buildSrc中使用在独立Module中使用开发Gradle插件可以在IDEA中进行开发,也可以在Android Studio中进行开发,它们唯一的不同,就是IDEA提供了Gradle开发的插件,比较方便创建文件和目录,而Android Studio中,开发者需要手动
Android硬件加速 概述 从Android 3.0开始(API L11),Android开始全面使用硬件加速来进行2D渲染,硬件加速是指Android中在View上进行绘制的图形图像都使用GPU来进行绘制,使用硬件加速,在大部分时候都让绘制更加流畅,但付出的代价是需要消耗更多的内存资源。 硬件加速在API L14之上是默认开启的,对于基本的View绘制,通过硬件加速可以增加绘图的流程性,但是要注意的是,并不是所有的2
Android5.0 Lollipop正式发布! 今天早些时候,谷歌正式发布了Android 5.0,一同亮相的还有Nexus 6等新品。跟之前传闻的一样,Android 5.0之所以叫L,其代号是 Lollipop棒棒糖,除了32位版本外,还有64位。至于Android 5.0的新特性,之前谷歌I/O大会上都已经说的很清楚,比如ART作为默认选项,提高设备续航,新的多任务以及全新的界面设计(material design),当然这次还加入了新的
推送 从入门到放弃 推送推送简直就是一种轻量级的骚扰方式自从有了推送,各个公司基本上都在使用推送,这确实是一个比较好的提醒方式,Android较iOS强的一个部分,也就是在于Android的Notification。Google教育我们利用好Android的通知模块,做更多友好的交互,可这句话,翻译成中文,不知不觉,就变成了在Notification中推送各种广告,而且仅仅就是一些广告,Notificatio
图像处理详解之MaskFilter 使用MaskFilterMaskFilter类可以为Paint分配边缘效果。对MaskFilter的扩展可以对一个Paint边缘的alpha通道应用转换。Android包含了下面几种MaskFilter:BlurMaskFilter 指定了一个模糊的样式和半径来处理Paint的边缘。EmbossMaskFilter 指定了光源的方向和环境光强度来添加浮雕效果。
Android异步加载全解析之Bitmap Android异步加载全解析之Bitmap 在这篇文章中,我们分析了Android在对大图处理时的一些策略——Android异步加载全解析之大图处理 戳我戳我 那么在这篇中,我们来对图像——Bitmap进行一个更加细致的分析,掌握Bitmap的点点滴滴。引入 Bitmap这玩意儿号称Android App头号杀手,特别是3.0之前的版本,简直就是皇帝般的存在,碰不得、摔不得。虽然后面的版本And
Android UI开发神兵利器之设计资源 UI设计资源推荐又来了,纯干货,不注水~各种背景资源图库http://subtlepatterns.com/ICON资源https://www.iconfinder.com/HOLO Color生成器http://android-holo-colors.com/
Android打开各种类型的文件方法总结 很简单,通过调用系统的intent,我们可以打开各种文件,不熟悉的朋友可以了解下action、datatype、uri的相关知识。通用方法如下:public static Intent openFile(String filePath){ File file = new File(filePath); if(!file.exists()) return null; /* 取得扩展名
一触即发——App启动优化最佳实践 一触即发 App启动优化最佳实践 文中的很多图都是Google性能优化指南第六季中的一些截图Google给出的优化指南来镇楼 https://developer.android.com/topic/performance/launch-time.html闪屏定义Android官方的性能优化典范,从第六季开始,发起了一系列针对App启动的优化实践,地址如下: https://www.yout
向产品宣战——开发者眼中的Android UI Design 向产品宣战——开发者眼中的Android UI Design 准备了半个月,思考产品设计、交互设计,见证了公司的产品、UE和开发的撕逼,将自己的思考、感悟,整理成下文,谨代表广大程序猿,向设计狮、产品X开战。希望广大程序猿能够坚持贯彻Google的Material Design,切实认真负责的执行Android的设计思想,将MD设计带到产品中去,不做中国特色的App。
我也来开发2048之终极奥义 本次教程跟之前隔了不少时间哈,有点忘记了的建议先看看前面的熟悉下,今天我准备把这个2048给结束了,拖了这么久。按照惯例,我们已经把准备工作都做好了,今天这一部分信息量比较大,也是整个游戏的核心所在,所以我准备分功能来讲,最后大家结合源码来看就不会感觉太吃力了。1、初始化游戏 初始化的时候,我们要干嘛呢,首先要看配置,配置了几行,然后先画好面板,然后要给在面板上随机生成2个数字Item,这涉及到2
图像处理实例之绘图板 本例讲解了一个在图片上绘制路径的实例,绘制的路径可以选择普通、浮雕、喷涂三种效果。效果如下:下面是实现方法:public class Main extends Activity implements OnColorChangedListener{ private MyView myView; @Override protected void onCreate
静若处子动若脱兔-Constraintlayout2.0一探究竟 这篇文章是我去年在公司内部的分享,当时Constraintlayout2.0还没Release,所以只在公司内部进行了分享,希望等Release之后,就可以正式在项目中使用了。那么为什么...
Material Components—预备役选手Transition Transition是Android Framework在4.4引入的一个全新的动画框架,可以说是非常古老了,那为什么我现在还要讲Transition呢,其实是想通过Transition...
JetPack指路明灯—Navigation 国际惯例,官网镇楼https://developer.android.com/guide/navigation很多人在学习JetPack的时候喜欢到处找资料和各种学习的博客,但其实,官网...
Material Component 动画基础—Spring Animation 不管是在Android Material Design,还是Flutter中,Google都在尝试统一动画的行为和实现,在Google看来,动画基本都分为两种,即模拟动画和物理动画,本篇...
Material Components——ShapeableImageView 书接前文,我们讲了在MD Component中的MaterialShapeDrawable,今天则继续讲解在此基础上,MDC封装的一个Image组件——ShapeableImageVie...
Material Components——Shape的处理 Material Components是Google官方对Material Deign的最佳实践,这个库试图在不同的Android版本中统一Material Design UI组件的外观...
FlutterDojo设计之道—状态管理之路(七) Provider在列表中使用在前面的讲解中,我们大部分的场景都是在普通的Box布局中,相信大家对Provider的使用已经非常清楚了,下面来看下在List中的使用场景,相信对于很多App...
向大家介绍一下我的生日礼物 十一期间,终于把自己的网站折腾的差不多了,整个流程跑了一遍,包括写作、图床、文章的发布与管理,终于可以随心所欲的进行创作了,不用再受制于第三方平台的限制,而至于为什么我要搭建自己的网站,...
Kotlin修炼指南(四) Kotlin这门语言极其灵活,这是一把双刃剑,相比Java,大家写的都是白话文,不论水平高低,大家基本都是能非常流畅的阅读彼此的代码的,但是在使用Kotlin之后,由于大家的Kotlin...
FlutterDojo设计之道—状态管理之路(六) 经过前面这么多文章的学习,Flutter的状态管理之路终于要接近尾声了。其实前面讲了这么多,最后的结论依然是——Provider真香。这毕竟是官方推荐的状态管理方案,就目前而言,绝大部分...
FlutterDojo设计之道—状态管理之路(五) 书接上回,我们通过InheritedWidget实现了跨Widget的数据管理。可以发现,在使用InheritedWidget来实现数据管理的方式中,有几个东西是必须的。Inherite...
FlutterDojo设计之道—状态管理之路(四) 在Flutter中,跨Widget的数据共享,可以如下图这样表示。当Child Widget想要跨Widget拿到其它Widget的数据时,通常就需要使用构造函数,将数据一层层传递到Ch...
FlutterDojo设计之道—状态管理之路(三) Dart作为一个现代化的编程语言,吸收了很多语言的特点,特别是响应式编程的风格。通过Dart提供的Stream机制,Flutter可以很轻松的构建响应式的编程方式,同时也让跨页面、跨Wi...
FlutterDojo设计之道——状态管理之路(二) 书接上回,我们讲到Flutter中同Page下跨Widget的数据管理。第一种方案,我们使用ValueNotifier和ValueListenableBuilder来实现了。这次,再介绍...
FlutterDojo设计之道—状态管理之路(一) Flutter万物皆Widget的理念很容易搭建出这样一个WidgetTree。在这个Widget Tree中,通常会存在很多组件之间的相互依赖,时间一长,就很容易变成下面这样。这是申明...
Kotlin修炼指南(三)——奇技淫巧 Kotlin作为Android开发的首选语言,为开发者提供了大量的语法糖和技巧,让开发者可以专注于需求开发,而将语言所带来的影响减少到最少。Java和Kotlin最大的区别,实际上在于K...
Kotlin修炼指南(一) 最近会写一些关于kotlin的文章,主要是为了引出函数式编程的概念,并介绍kotlin中的一些骚操作。第一篇文章主要介绍作用域函数。作用域函数作用域函数是Kotlin中的一个非常有用的函...
【译】Flutter架构综述 本文旨在对Flutter的架构进行高层次的概述,包括构成其设计的核心原则和概念。Flutter是一个跨平台的UI工具包,它的设计目的是允许跨iOS和Android等操作系统的代码重用,同...
Flutter Dojo设计之道——如何打造一个通用的Playground Dojo的设计之初,是为了能够演示Flutter中,多如牛毛的Widget,所以,一个通用的Demo演示界面,就显得非常有必要了,一是可以节省很多通用的代码,二是可以让Demo的演示,专...
Flutter Dojo设计之道——骚气的闪屏动画是如何实现的 这篇文章是对Flutter动画实现思路的一篇剖析,用一个简单的动画,分析Flutter创建动画的一般步骤闪屏,实际上有两个作用。宣传。通过Logo、广告等形式,在启动时,展示要宣传的广告...
Flutter Dojo设计之道——利用Github打造完善的开源项目 Flutter Dojo从最开始就准备打造成一个专业的GitHub开源项目。一个好的GitHub开源项目,不仅仅是一个开发者专业技术的体现,更是一个自我展示的平台,专业的GitHub开源...
Flutter Dojo的设计之道 认识Flutter是在18年,移动端开发日趋成熟的情况下,很多开发者都在寻求跨平台开发的终极法门,在经过了webview、RN的痛苦之后,Flutter的出现,给跨平台开发带来了一线曙光...
你竟然写出这样的代码 上周开会时,跟同事在讨论,什么是好的代码。什么是好的代码,怎么定义好的代码。往简单了说,自己刚写的代码都是好的代码,别人写的都是垃圾。往复杂了说,高内聚,低耦合,OCP、SRP、ISP,...
Flutter你竟是这样的布局 对于Flutter学习者来说,掌握Flutter的布局行为,直接决定了开发者在布局的时候是否能做到高效、快速的开发,但是初学者面对茫茫多的Widget以及各种无法预料的布局行为,总是很难将心中所想,转化为Flutter的代码。本文翻译整理自https://flutter.dev/docs/development/ui/layout/constraints当学习Flutter的人问你,为什么宽度为100的某些小部件在显示的时候,宽度不为100像素时,你的默认答案是告诉他们将小部件放在Center内,对吗?
那些初学者实践 Flutter 最常出现的错误 哔哩哔哩漫画APP实践Flutter也有大半年时间了,我针对线上收集到的错误进行分析,挑选出了一些有一般代表性的错误,列在本文,可供实践 Flutte...
Flutter修仙传——起源 天地玄黄,宇宙洪荒。日月盈昃,辰宿列张。上古时代,手机的江湖,正经历了第三纪元的更迭,塞班王朝的陨灭,让这个世界又重新恢复到了一片蛮荒之中。而几乎就在同时,天地之间诞生了两位宗师,名曰Android,名曰iOS。一瞬间,整个江湖沸腾了,这两位宗师就好像是新世界的灯塔,让整个大陆的人为之向往。短短几年时间,两位宗师在这片大陆上就建立了当今世上最大的两个门派。Android派门众最多,势力范围也最...
Flutter修仙指南——初学者到底需要怎样的Demo Flutter,毫无疑问是今年最火的技术方向,作为最早接触Flutter的一批开发者,从入门,到现在,我也经历了各种阶段,从入门时的无从下手,到略懂之后被各种蜜汁Widget弄的焦头烂额,到现在可以建立起Flutter的整体知识结构,整个过程实际上是非常痛苦的,这跟Flutter的设计思想有关——一切皆组件,这虽然是一个非常好的设计思路,但是茫茫多的Widget,会让开发者陷入泥潭无法自拔,很难建...
Flutter the Future Flutter Interact 2019在双12的凌晨结束了,6个多小时的大会,每一分钟都让一个开发者感到惊艳。Flutter这一年的发展极其迅速,不仅成为GitHub年度最受欢迎项目...
Draw Text in Deep Android系统提供了Textview来提供文字的显示,但很多时候开发者还需要使用Canvas来绘制Text,这时候,canvas.drawText()就不像Textview的使用这么简单了,需要掌握文字的测量以及渲染的流程。Paint.FontMetricsFontMetrics是文字测量的重要方法,它提供了下面这些变量,来展示文字测量的相关参数:baseline:字符绘制基线asc...
Draw Text in Deep Android系统提供了Textview来提供文字的显示,但很多时候开发者还需要使用Canvas来绘制Text,这时候,canvas.drawText()就不像Textview的使用这么...
Kotlin修炼指南(二):lambda表达式的精髓 lambda表达式是Kotlin函数式编程的一个重要概念,要想掌握函数式编程,就必须熟练掌握lambda表达式,并掌握它的各种写法和实现,这些都是掌握函数式编程的基础。lambda基本形式lambda表达式有三大特征:lambda表达式存在于{}中参数及参数类型(可省略)在->左边函数体在->右边lambda表达式返回值总是返回函数体内部最后一行表达式的值这三种形式的l...
Kotlin修炼指南 Kotlin修炼指南作用域函数作用域函数是Kotlin中的一个非常有用的函数,它主要分为两种,一种是拓展函数式,另一种是顶层函数式。作用域函数的主要功能是为调用函数提供一个内部范围,同时结合kotlin的语法糖提供一些便捷操作。作用域函数主要有下面这几种,它们的主要区别就是函数体内使用对象和返回值的区别。run函数体内使用this代替本对象。返回值为函数最后一行或者return...
App安全二三事 首先插播一条自己的广告——有些朋友可能都知道了,我最近创建了一个知识星球,在这里试了一周,发现私密圈子的效率果然比群要好很多,付费门槛过滤掉了大部分广告和没有意愿学习分享的人,希望在这里能聚集更多的热爱学习热爱分享的朋友,长按下面的二维码来加入《程序员修仙指南》App安全二三事客户端防作弊,是一个很重要,但又很难做好的事情,矛与盾永远是道高一尺,魔高一丈。为什么要安全现在几...
创建后台任务的两种代码模式 创建后台任务的两种代码模式后台任务是每个App都需要的一些行为,毕竟主线程是大爷,拖不起,伤不起,脏活累活都只能在不见天日的后台去做。最简单的后台任务,可以说是直接开一个线程就可以了,或者说来个Service,再开个线程。但这些并不是官方认证的最佳实践,实际上,Google早就考虑到了这一点,并把这些需求进行了封装,给我们提供了非常好的后台任务解决方案,并在Training上进行了讲解:官网镇楼:
跳槽?社保?买房? 前言本文专门写给那些想在限购地区买房,又担心跳槽会影响买房资格的开发者,一篇文章了解『跳槽对限购资格的影响,到底是杞人忧天,还是危机四伏』首先我们来了解下现在买房的限购条件(以下均是外地户籍,本地户籍,你可以看看其它技术文章),我们以上海为例:结婚 && (社保连续5年 || 个税连续5年)我们可以发现,实际上最困难的地方,就是这个5年连续的社保或者个税,结婚毕竟只要9块钱,可这个社保、个税,可是
PathInterpolator PathInterpolator在v4 support library:Revision 22.1.0的时候,Google在兼容库中增加了几个新的类,用于创建更加真实的动画效果。Added the following interpolation classes for animation: FastOutLinearInInterpolator, FastOutSlowInInterpolator
看AspectJ在Android中的强势插入 什么是AOPAOP是Aspect Oriented Programming的缩写,即『面向切面编程』。它和我们平时接触到的OOP都是编程的不同思想,OOP,即『面向对象编程』,它提倡的是将功能模块化,对象化,而AOP的思想,则不太一样,它提倡的是针对同一类问题的统一处理,当然,我们在实际编程过程中,不可能单纯的安装AOP或者OOP的思想来编程,很多时候,可能会混合多种编程思想,大家也不必要纠结该使用
微信Mars——xlog使用全解析 微信Mars——xlog使用全解析如约而至,微信在12月19日开源了底层的通信库——Mars,其中有一个部分,是一个高性能的日志模块——xlog。xlog的详细介绍,大家可以参考微信技术公众号的这篇文章——微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog。本篇文章将带领大家将xlog模块抽取出来,作为一个单独的模块来使用。编译so库首先,我们clone下Mars的源码,然后进入其
上次发版我就改了一行代码! 动态更换应用Icon产品:我们可以动态更换App在Launcher里面的Icon吗 开发:不可以 产品:我们可以动态更换App在Launcher里面的Icon吗 开发:不可以 产品:我们可以动态更换App在Launcher里面的Icon吗 开发:不可以 产品:我们可以动态更换App在Launcher里面的Icon吗 开发:让我想想……原理1——activity-alias在Androi
为信仰充值——GoogleDeveloperDay GoogleDeveloperDay12月14日有幸参加了GoogleDeveloperDay大会,本来当天晚上就准备连夜记录下这些参会的感受,但是由于一些事情给耽误了,所以直到周末才有时间给大家分享下。本次大会会场很多,所以我也没法参加所有的会场,这里就我参加的一些会场来进行下分享,总得来说,我将这次大会的分享分为以下几个主题:未来新技术Web引领技术变革Android走向标准化下面我们一
AccessibilityService从入门到出轨 AccessibilityService从入门到出轨AccessibilityService根据官方的介绍,是指开发者通过增加类似contentDescription的属性,从而在不修改代码的情况下,让残障人士能够获得使用体验的优化,大家可以打开AccessibilityService来试一下,点击区域,可以有语音或者触摸的提示,帮助残障人士使用App。当然,现在AccessibilityServi
ELK前端日志分析、监控系统 前端日志与后端日志不同,具有很强的自定义特性,不像后端的接口日志、服务器日志格式比较固定,大部分成熟的后端框架都有非常完善的日志系统,借助一些分析框架,就可以实现日志的监控与分析,这也是运维工作的一部分。什么是ELKELK在服务器运维界应该是运用的非常成熟了,很多成熟的大型项目都使用ELK来作为前端日志监控、分析的工具。那么首先,我们来了解下什么是ELK,ELK实际上是三个工具的集合:E:Elas
华山论剑之契约式编程与防御式编程 背景事情的来由还要从几十几亿年前的一次星球大爆炸说起,sorry,背错台词了,是从几天前讨论接口返回数据和几个月前讨论课件本地数据结构说起,简单的说,就是碰到约定好的内容出现异常,是我们在程序中内部作兼容处理,还是抛出去。打个比方,我们要解析一段json,约定这个json的格式,只能是正常格式,或者是空,那么一旦返回json的方法返回了一个『既不是正常格式,又不是空的异常值』,程序该如何处
Clipboard还能玩出花 Clipboard是Android提供的一个系统服务,它提供了一个全局的剪贴板,让文字、图片、数据,在多App间共享成为可能,今天,我们来了解下它的真面目,以及被玩坏的新姿势。老规矩,Google API文档镇楼: https://developer.android.com/guide/topics/text/copy-paste.html说实话,如果不是为了让Clipboard玩出花,我真不想写
模拟自然动画的精髓——TimeInterpolator与TypeEvaluator 模拟自然动画的精髓——TimeInterpolator与TypeEvaluator在今天的文章开始之前,有个忙想请大家帮一下,希望在京东、淘宝、当当、亚马逊购买了我的书《Android群英传:神兵利器》的朋友们,帮忙去网店上给个简短的评价,举手之劳,还是多谢大家啦~~ 本文绘图软件 https://www.desmos.com/calculator通过属性动画,我们可以模拟各种属
自律给你自由——设计布局的新姿势 ConstraintLayout基本界面在今天的文章开始之前,有个忙想请大家帮一下,希望在京东、淘宝、当当、亚马逊购买了我的书《Android群英传:神兵利器》的朋友们,帮忙去网店上给个简短的评价,举手之劳,还是多谢大家啦~~更新Android Studio 2.2之后,更新了布局设计器,同时,引人了ConstraintLayout,这一布局,旨在降低布局层级,其主要界面如下所示:这个界面主要分成下
《Android群英传:神兵利器》勘误 我的新书《Android群英传:神兵利器》刚刚上市不久,得到了很多开发者的鼓励和肯定,我在此表示由衷的感谢!本篇为本书的勘误,由于时间仓促,书中难免会存在一些错误,特在此列出这些勘误,也希望广大读者发现错误后,及时在本文评论中贴出来,我将收录到下次的修订中,感谢大家的支持和包容~~第二章Git这一章中的代码都是从Mac终端中直接复制出来的,有些开发者可能不太熟悉终端的显示格式,所以看上去可能有点疑惑
Android群英传:神兵利器——出版祭 Android群英传:神兵利器《Android群英传:神兵利器》——看上去好像是第一本书的续集,但实际上,这本书的内容,在我写《Android群英传》的时候就已经写了不少了,碍于出版社的篇幅限制与主题的统一,很多内容并没有放到《Android群英传》中。由于第一本书上市后,受到各位开发者的抬爱,销售情况还算理想,所以出版社一直希望我能出一本续集,因此,我便萌生了想要把这本书补全的想法。
PathMeasure之迷径追踪 PathMeasure之迷径追踪Path,不论是在自定义View还是动画,都占有举足轻重的地位。绘制Path,可以通过Android提供的API,或者是贝塞尔曲线、数学函数、图形组合等等方式,而要获取Path上每一个构成点的坐标,一般需要知道Path的函数方法,例如求解贝塞尔曲线上的点的De Casteljau算法,但对于一般的Path来说,是很难通过简单的函数方法来进行计算的,那么,如何来定位任意
贝塞尔曲线开发的艺术 贝塞尔曲线开发的艺术一句话概括贝塞尔曲线:将任意一条曲线转化为精确的数学公式。很多绘图工具中的钢笔工具,就是典型的贝塞尔曲线的应用,这里的一个网站可以在线模拟钢笔工具的使用:http://bezier.method.ac/贝塞尔曲线中有一些比较关键的名词,解释如下:数据点:通常指一条路径的起始点和终止点控制点:控制点决定了一条路径的弯曲轨迹,根据控制点的个数,贝塞尔曲线
Android Vector曲折的兼容之路 Android Vector曲折的兼容之路两年前写书的时候,就在研究Android L提出的Vector,可研究下来发现,完全不具备兼容性,相信这也是它没有被广泛使用的一个原因,经过Google的不懈努力,现在Vector终于迎来了它的春天。 在文章后面,会给出本文的Demo和效果图,并开源在GithubVector DrawableAndroid 5.0发布的时候,Google提供了Vect
Android Studio集成Bug管理系统 Android Studio集成Bug管理系统在Android开发中,对于Bug的管理、追踪是非常重要的,通常,开发和Bug追踪是分开的,提交代码后,需要打开网页来进行Bug管理。但是!!!你不觉得很麻烦吗,在Android Studio中,你可以进行版本管理,那么为什么就不能进行Bug管理呢?确实,你说的对,完全是可以的!!!配置Bug管理服务器选择Tools菜单中的Tasks & Context
隐藏Boss——ddmlib使用入门 ddmlib使用入门ddmlib是DDMS工具的核心,堪称Android SDK中最不为人知的隐藏Boss,它封装了一系列对ADB的功能封装。DDMS工具虽然已经非常强大,可以展示非常多的Android性能监测数据,但是,它有一个很大的缺点,就是很多数据不能导出,而且很多功能也不能达到自定义的需求,因此,基于这些问题,利用ddmlib来完成自定义的功能定制,就是非常有用的了。完成DDMS功能的自定义
一个字符解决Gradle aar编译参数传递问题是怎样一种体验 aar是Android Studio提供的一个依赖库系统,可以很方便的让主项目来使用库项目的代码、资源。但如何来给一个aar库传递编译参数呢(传递代码配置是很方便的,通过接口即可,但编译参数是不行的)?这个场景还是非常常见的,例如下面的这样一个项目:├── app│ ├── build.gradle│ ├── libs│ └── src├── build.gradle├── g
Bitmap.recycle引发的血案 从Bitmap.recycle说起在Android中,Bitmap的存储分为两部分,一部分是Bitmap的数据,一部分是Bitmap的引用。在Android2.3时代,Bitmap的引用是放在堆中的,而Bitmap的数据部分是放在栈中的,需要用户调用recycle方法手动进行内存回收,而在Android2.3之后,整个Bitmap,包括数据和引用,都放在了堆中,这样,整个Bitmap的回收就全部交给
Badge分析&如何逼死处女座 Badge分析所谓Badge,原本是iOS上的一个效果,但是被Android抄的多了,也就成了Android的标配。图就不上了,大家都懂的。应用icon显示角标实际上是在Launcher中实现的,其实不管是角标还是其他对快捷方式的增删改查,都是需要Launcher支持的,应用在增删改查快捷方式和安装、卸载时,都会发出相应的广播,通过这个广播,Launcher会对快捷方式进行修改。很庆幸,Androi
AS2.0大步更新 Google强势逆天 AS2.0大步更新 Google强势逆天就在不久前,Google高调发布了Android Studio 2.0,是的,他19号才发布了Android Studio 1.5,才过了一个礼拜,很多人都是昨天才更新了1.5,一看今天就2.0了,步子跨的太大,不会疼嘛。不过没事,程序员还怕死嘛,马上更新。New Features in Android Studio 2.0Instant Run: Faste
Android快捷方式解密 Android快捷方式解密Android快捷方式作为Android设备的杀手锏技能,一直都是非常重要的一个功能,也正是如此,各种流氓App也不断通过快捷方式霸占着这样一个用户入口。同时,各大国产ROM和Luncher的崛起,让这个桌面之争变的更加激烈。毕竟大家都只想用户用自己的App资源,所以,现在各大App不仅仅是要抢占入口,同时还要和各大ROM斗智斗勇。本文将对这个快捷方式进行深度解密,同时给出
强迫症的研究——MediaPlayer播放进度条的优化 强迫症的研究——MediaPlayer播放进度条的优化如何做一个优美、流畅而且准确的播放进度条,也许很多人觉得很简单,但实际上,这个问题在大部分时间都被忽略了。计时方式的比较计时方式——主线程中使用Handler– 这种方式最简单,在主线程中通过handler.postDealyed(……, 1000),并在onHandleMessage中继续post消息,这样就实现了每隔1000ms进行一次消息
ViewPager不为人知的秘密 ViewPager不为人知的秘密ViewPager翻页控制关于控制ViewPager的翻页,在网上已经有很多解决方法了,我们一个个来看看。setScanScroll()我们先来看一下具体实现:public class CustomViewPager extends ViewPager { private boolean isCanScroll = true; public Cus
把抽奖活动写成一篇技术博客是怎样一种体验 把抽奖活动写成一篇技术博客是怎样一种体验本次活动预备知识贴:XXXXXXXXXXXXXXXXXXXXXXXX请一定先了解下,不然就真的是为了抽奖了!抽抽抽抽抽抽奖我的新书《Android群英传》上市不久,为了回报各位的大力推荐,也希望更多的人能多多支持,特准备此次抽奖活动。抽奖对象只要在本博客中留言,即可参与抽奖活动。留言内容如下:已购买《Android群英传
《Android群英传》勘误 《Android群英传》勘误我的新书《Android群英传》刚刚上市不久,希望大家多多支持。本篇为本市的勘误,由于时间仓促,书中难免会存在一些错误,特在此列出这些勘误,也希望广大读者发现错误后,及时在本文评论中贴出来,我将收录到下次的修订中,感谢大家的支持和包容~~前言-资源与勘误……都会上传到Github代码分享平台供大家 frok,下载……————->……都会上传到Github代码分享平台供大家
天罗地网——Python爬虫初初初探 环境准备Python我们使用Python2.7进行开发,注意配置好环境变量。IDE我们使用Pycharm进行开发,它和大名鼎鼎的Android Studio、IDEA同出一门——Jet Brains。关于破解,很无耻的贴两个:用户名:yueting3527注册码:===== LICENSE BEGIN =====93347-1204201000001FMHemWIs
对不起!我来晚了!——《Android群英传》出版祭 对不起!我来晚了!——《Android群英传》出版祭历时将近一年,我的第一本书终于就要出版了,虽然经历种种曲折,历经磨难,最终还是赶在八月份的尾巴上,修成正果。 首先,要向大家道歉,本来预计是在6月份上市的书,一拖再拖,直到现在才得以出版,让不少朋友一等再等,这里,向这些朋友的耐心,狠狠的点个赞。写书之前其实,当官杨主编第一次找我写书的时候,其实我是,是想拒绝的,我跟女朋友讲,我拒绝,因为,
一扫天下——ZXing使用全解析 一扫天下——ZXing使用全解析二维码XXXXX 网上很多都是基于ZXing2.3的,但是现在都3.1了,改了很多bug,也进行了很多优化,最好按本文弄一下。参拜ZXingZXing的github地址: https://github.com/zxing/zxing通过git clone git@github.com:zxing/zxing.git 命令我们可以把整个ZXing项
CSDN极客头条使用指南 CSDN极客头条使用指南今天给大家介绍一下CSDN博客最新推出的这个栏目——CSDN极客头条。极客头条是什么极客头条大家分享优质IT资源的聚集地。大家不仅可以分享CSDN的文章,更可以将其他社区的好的文章,在CSDN极客头条这个平台上让更多的开发者知晓。利用CSDN的巨大影响力,让这些优质博文能够获得更多的关注。互联网社区非常的多,好的技术文章却经常无法被很多的开发者发现,这也是现在为什么很多社区都
Git workflow Git workflow大神镇楼:这人不用说,应该都认识,他基本干了两件事,一个是Linux,一个就是git。每一件事,都在IT史上创建了一个巨大的Tag。Git是什么Git能干什么?Git用来做版本控制,这就好比当初在小日本的公司,每次修改文件,都需要在文件第一页新增修改履历,详细记录修改内容,如果多人同时操作,你可以想象下维护的成本有多高。基本每天就在整理这些破
MarkDown编辑器推荐 MarkDown编辑器推荐最近有很大朋友私信我,询问有哪些比较好的Markdown的编辑器,这里做一个汇总哈。非常赞的在线编辑器stackedit https://stackedit.io/editormarkdown-live-editor http://jrmoran.com/playground/markdown-live-editor/老牌编辑器markdownpad http://m
Git学习资源推荐 Git在线练习http://pcottle.github.io/learnGitBranching/https://try.github.io/levels/1/challenges/1Git入门http://code.tutsplus.com/tutorials/easy-version-control-with-git–net-7449http://blog.jobbole.com/25775/
Android Camera探究之路——起步 Android Camera探究之路——起步Camera在手机中有着举足轻重的地位,不管是二维码还是照片、识别,都离不开摄像头,本文将对Android中的Camera进行全面解析。
Ratingbar UseGuide Ratingbar UseGuideRatingbar是一个评分控件,系统给我们提供了这样一个控件,样式如下:相信大家都见过这样一个控件。本文将详细的讲解Ratingbar的使用和改造。
Android Design Support Library使用详解 Android Design Support Library使用详解Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android Design Support Library,在这个support库里面,Google给我们提供了更加规范的MD设计风格的控件。
Android Studio使用jni、so库 Android Studio使用jni、so库在Android Studio1.1之后,AS就已经支持jni和so库了,马上发布的1.3正式版,更是可以在clion环境下编译c、c++,更加方便的使用NDK进行开发,网上有很多讲在Android Studio中使用jni的方法,但大多都是在1.1之前的,那时候还没有直接支持jni,所以需要通过给gradle增加task的方式来添加支持。而现在,这一切
创建兼容Android Studio和eclipse的AS工程 创建兼容Android Studio和eclipse的AS工程虽然我的博客名叫eclipse_xu,但是我已经将近一年多没有用过eclipse了,早已拜在Android Studio门下。但是,最近的项目由于要兼容eclipse和Android Studio,让一些还未脱贫的朋友也能使用AS创建的工程,所以,找到了一种能够同时兼容ant和gradle的方式,来创建兼容的工程。创建普通的Android
Mac Chrome快捷键 转自:http://support.google.com/chrome/bin/answer.py?hl=zh-Hans&answer=165450标签页和窗口快捷键⌘-N打开新窗口。⌘-T打开新标签页。⌘-Shift-N在隐身模式下打开新窗口。按 ⌘-O,然后选择文件。在 Google Chrome 浏览器中打开计算机中的文件。按住 ⌘ 键,然后点击链接。或用鼠标中键(或鼠标滚轮)点击链接。从后
玩转CSDN之自定义博客栏目 玩转CSDN之自定义博客栏目 不得不说,CSDN在IT界还是非常不错的, 不管是文章数量还是质量,都非常不错,很多程序猿也在CSDN建了窝,那么如何把CSDN的主页设置的更加符合自己的口味,就是我们今天要做的事。CSDN博客的栏目指的是这块内容:这里面,有的是CSDN博客自带的内容,比如个人资料、博客专栏等,还有些内容,我们可以自定义,首先,我们需要进入个人的博客首页,点击管理博客,并切换到博
解放双手——Android自动化测试 人们懒的走路,才创造了汽车;人们懒的爬楼,才创造了电梯;人们懒的扫地,才创造了自动扫地机器人。人类的进步,离不开这些喜欢偷懒的人,现在,程序猿将偷懒上升到了一个新的高度——利用程序来进行自动化软件测试,将测试工程师从繁琐的测试用例中解脱出来,从此可以一边喝着咖啡,一边看着程序自动测试,不必看着测试用例重复无数次的测试步骤,也不必担心操作失误而导致不必要的错误,更不用担心压力测试而导致的身心俱疲。想了解程序猿是如
Android中的TRIM优化 要了解Android 4.3 TRIM支持对性能的提升,首先要了解的是TRIM。TRIM 是什么? Trim-一个ATA指令,由操作系统发送给SSD主控制器,告诉它哪些数据占的地址是“无效”的。当你在电脑里删除一个文件的时候,操作系统并不 会真正的去删除它。操作系统只是把这个文件的地址标记为“空”,让它可以被再次使用,这表示这个文件所占的地址已经“无效”。但这会带来一个问题,硬盘并 不知道操作系
AlarmManager机制和系统唤醒锁的总结 转自 http://blog.csdn.net/d_clock/article/details/42968039前段时间,在公司做项目的时候发现原有项目中的代码在Service中使用handler不断发送Message到Looper处理MessageQueue中来维持IM功能的“心跳”,心里瞬间觉得这个地方的代码很不靠谱,主要原因分为两个:1.handler的生命周期和Service不一致,如果S
如何使用利用LaTeX制作个人简历 转自 http://www.cnblogs.com/panpei/archive/2013/02/13/2910680.html前些日子,有点无聊,就在网上逛逛技术大牛的blogs,发现很多大牛都喜欢用pdf版式的简历,发现这种版式的简历排版非常漂亮简洁。深究了一下,发现其实是利用LaTeX生成的(多说一句,不得不佩服DonaldE.Knuth大师发明的TeX排版的确是美观)。LaTeX或许不是很