- 博客(44)
- 收藏
- 关注
原创 Kotlin小利器-TargetFun,让多函数接口的调用更加简单
喜欢直接看代码的读者请移步:Kotlin-TargetFun随着Kotlin的加入,在安卓开发中写代码变得越发的简洁和灵活。比如原来的时候用Java书写一个最简单的View的点击事件,代码是这样: btn1.setOnClickListener(new OnClickListener(){ public void onClick(View v) { ...
2018-12-02 15:59:50 1462 1
原创 带你全方位使用Anko库-上篇
kotlin的伴生库-anko迭代了已经多个版本了,但是目前网上的资源主要集中在官方说明的机械翻译或者旧博客的复制/粘贴上。本文带大家全方位的熟悉anko库的使用。anko库目前主要有四个核心库anko-commons库,一些通用功能,集成方式:dependencies {//anko_version脚本配置,下同,本文中,该值为0.10.0 compile "org.jetbrain
2017-06-03 23:46:57 15075 4
原创 重温DialogFragment,让自定义布局更加简单
最近使用自定义布局的对话框的场景比较多,github上找的或多或少感觉缺点什么,于是封装了一个易用全面的对话框工具库,专注于更简单的自定义布局的对话框的展示和交互。目前该库有以下特性:使用简洁;可以给对话框设置锚点View大量的定制属性全局配置部分属性屏幕旋转时保持数据和点击事件;可以简单的这样调用,就能展现一个自定义界面的对话框,且对话框可以有锚点view...
2019-09-24 10:18:19 703
原创 KtDevBox--一款基于Kotlin+MVP+组件化的快速开发框架
这是一个快速开发框架,表面上看,也是个完整的app。麻雀虽小,五脏俱全。本app比较符合麻雀的特点:小而全。小,即轻量级,一是指app只专注于实现常见app基础的逻辑业务功能,并没有在某个功能点或者UI上做更为细节的实现;二是指app使用了简洁的的Kotlin语言作为实现语言,使用了相对简单的一种MVP实现方式,使用了一种比较轻量级的组件化方案。全,当然是相对的,一是指app的后端也是本人开...
2019-01-17 15:43:30 1594
原创 华为手机WebView长按不能复制,记一次少见奇葩bug解决之旅
class MainActivity : AppCompatActivity() { @SuppressLint("SetJavaScriptEnabled") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setCon...
2018-11-29 17:41:29 6346 1
原创 简单library上传至JCenter,简明版
说来汗颜,上传JCenter好几次了,过程依然记不得。趁着这次刚上传了个新的,把过程记录下来。感谢网上的那些教程,但总感觉不够结构清晰明了,所以写此博客记录一下。下面的就是上面脑图的解释:发布JCenter-基于bintray-release注册账号基本如网上所说,到官网先注册官网地址 https://bintray.com/注意,要普通用户,不是开源用户open source a...
2018-11-29 00:06:57 337
原创 Rxjava2的lint提示:The result of subscribe is not used的分析与解决
随着Android Studio的进一步升级,其Lint能力愈加强大,比如现在项目中生成一个Obervable之后,若没subscribe给Observer,而仅仅是给了几个Consumer,则会被醒目的提示代码有问题,如下图:代码提示主要是The result of subscribe is not used,即订阅的结果未使用。这为什么会提示,又会造成什么后果呢?原因为AS并不知道这个没...
2018-11-25 19:29:17 14174 1
原创 Python对象转json【包括嵌套对象转json,django的model转json】
背景:给app写接口时经常会遇到将一个model转为json返回。问题:网上也有类似方法,只是搜索结果多少有些问题,总是搜了好一会儿才找到最简便的方法,但是只是简单些的对象,对于复杂的对象,还是不容易找到好的方式。方案(python3.6):对象转json:model类class People(): def __init__(self, name, age,...
2018-08-07 17:59:13 21068 5
转载 《阿里巴巴Android开发手册》正式发布,安卓开发者的福音
先上核心内容:认证考试地址请点击阿里巴巴Android开发手册-点击下载春节余味尚未消,我们为移动开发者准备了一份迟到的新年礼物——《阿里巴巴Android开发手册》,继《阿里巴巴Java开发手册》之后,阿里巴巴开发规范家族又添一丁,「阿里巴巴Android开发规范」认证考试也同步上线。阿里Android开发经验结晶 2017年天猫双11,成交额再创新高达到1682...
2018-03-01 09:03:22 1064
原创 记录一次集成第三方功能遇到的问题,包含so包问题,最小sdk问题还有资源覆盖问题
第三方sdk简介: 一个aar包,内部有一个armeabi的so包,一个jar包,一个res资源包;制作: 本着解耦和模块化的原则,建了一个module,单独来实现相关的功能;这个module叫做tvu小成果: demo里依赖这个module,成功能接入功能;But: 将这个module导入项目中时,问题就多了,本项目,涉及多个module,几乎每个module里都有so包;
2018-01-10 15:22:53 496 1
原创 flask以及扩展库使用踩坑记录
flask已经使用了一段时间了,不过还是会遇到一些问题,记录一下。flask-restful 中文返回的响应变成了 unicode literal,见代码:app = Flask(__name__)api = Api(app)app.config.update(RESTFUL_JSON=dict(ensure_ascii=False))class HelloWorld(Resource):
2018-01-04 13:51:07 614
原创 Apache部署flask的一些踩坑记录(win64+python36)
基础配置: 将一个Flask应用部署到本地的Windows服务器上。操作系统是64位的,程序是基于Python 3.6开发的。部署选择: mod_wsgi + Apache注意事项:不能混用32位和64位的文件安装Python时要选择“Install for all users”构建Apache使用的编译器版本要与构建Python的一致构建mod_wsgi使用的编译器版本要与构建Pyth
2018-01-02 16:21:16 4198
原创 常见View特别是WebView引发内存泄漏解决办法
内存泄漏是安卓开发中常见的一种情况,其原因本质上是一个生命周期更长的对象持有了一个本该回收对象的引用,几种具体的表现已经有很多博客进行了分析,比如全局/单例对象,集合,内部类,线程,资源对象等等。然而,还有一类泄漏,往往是View相关的源码层造成的泄漏:比如当一个Drawable被附加到View时,这个View会被设置为这个Drawable的callback,即持有其引用;还有EditText的
2017-12-13 16:33:37 2729
原创 安卓API指南之Fragment回顾
本系列的文章全部为学习摘要,不偏重各种细节展示,更多的是安卓体系重要节点的罗列,并适时加入少量自己的理解分析,以便能快速的回顾安卓体系结构和那些重要的技术点。片段Fragment必须始终嵌入在 Activity 中,其生命周期直接受宿主 Activity 生命周期的影响。 例如,当 Activity 暂停时,其中的所有片段也会暂停;当 Activity 被销毁时,所有片段也会被销毁。 不过,当 A
2017-11-01 18:12:04 321
原创 安卓API指南之Activity回顾
本系列的文章全部为学习摘要,不偏重各种细节展示,更多的是安卓体系重要节点的罗列,并适时加入少量自己的理解分析,以便能快速的回顾安卓体系结构和那些重要的技术点。每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。比如透明主题或者Dialog主题的Activity。一个应用通常由多个彼此松散联系的 Activity 组成。Activit
2017-11-01 15:26:53 295
原创 安卓API指南之Intent 和 Intent 过滤器
本系列的文章全部为学习摘要,不偏重各种细节展示,更多的是安卓体系重要节点的罗列,并适时加入少量自己的理解分析,以便能快速的回顾安卓体系结构和那些重要的技术点。Intent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:启动 Activity:通过将 Intent 传递给 startActivity()
2017-11-01 11:17:21 381
原创 安卓API指南之应用基础知识简介
本系列的文章全部为学习摘要,不偏重各种细节展示,更多的是安卓体系重要节点的罗列,并适时加入少量自己的理解分析,以便能快速的回顾安卓体系结构和那些重要的技术点。安卓apk文件安装到设备后,成为设备中的一个应用,每个应用都在其自己的 Linux 进程内运行,每个进程都具有自己的虚拟机 (VM),默认情况下,系统会为每个应用分配一个唯一的 Linux 用户 ID,因此应用代码是在与其他应用隔离的环境中运
2017-11-01 11:12:13 501
原创 pycharm安装第三方库
最近研究了下python,idea工具怎可能少,pycharm我是必须要安装的。要用python,第三方库不可少,用pycharm安装还是灰常方便的。但是网络环境经常不可描述,经常连接不上国外资源,这里也总结了一下解决方式。首先打开pycharm的设置,ctrl+alt+s或者file菜单里找,然后出来那个大设置框,搜索interpreter,基本光标定位的那个就是,然后会出现下图的样子。 右边列
2017-10-26 09:57:46 26898 4
原创 Java并发编程学习记录#4
组合对象探讨一些构造类的模式,使得类更容易成为线程安全的。设计线程安全的类设计线程安全的类的过程应该包含三个方面: - 确定对象状态是由哪些变量构成–变量; - 确定限制对象状态的不变约束–不变约束; - 制定一个管理并发访问对象状态的策略–后验条件。不变约束:用来判定一个状态是合法的还是不合法的,比如int的取值范围,是施加在状态上的约束;后验条件:指出某种状态转变是否合法,是施加在状态操作
2017-08-29 23:59:13 319
原创 Java并发编程学习记录#3
共享对象我们已经见识到同步方法和同步代码块能够保证操作执行的原子性,但同时这也是一个常见的误区:同步仅仅关于原子性。其实,同步还有另一个重要而微妙的方面–内存可见性。我们不仅仅希望阻止一个线程修改另一个线程正在使用的对象,我们还希望当一个线程修改了某个对象后,其改变后的状态能够被其它线程观察到。可以使用具体的同步或是已经封装好的类库,来保证对象改变后,能将状态安全的发布出去。可见性可见性是个微妙的话
2017-08-27 16:52:16 281
原创 Java并发编程学习记录#2
线程安全篇B为了保持状态的一致性,需要在一个原子性操作中更新相关的状态变量,加锁,可以将一些混合操作变为原子性操作,从而保证线程安全。锁1.内部锁Java提供了一个加强原子性的内在锁机理-同步块,其包含两部分,一部分是一个可以作为锁的对象的引用,另一部分是由这个锁保护的阻塞代码。同步方法是同步块的一个快捷体现,其作用于所有的方法体。每一个Java对象都可以作为一个潜在的同步锁,这种内部构建的锁叫做内
2017-08-24 10:24:58 252
原创 Java并发编程学习记录#1
线程安全篇A其实,并发编程理论并不过多的涉及线程和锁,虽然构建并发程序需要正确的使用线程和锁,然而这只是内部机理带来的手段而已;本质上来说,写出线程安全的程序,在于状态的访问管理,特别是共享和可变状态。一个对象的状态是其数据,它可以存储在其实例或者静态域中,这些数据也可以来自其它独立的实例对象。对象的状态,包括了那些所有会影响其外部可见行为的数据。说到共享,意思是一个变量可以被多个线程访问;说到
2017-08-22 10:47:48 383
原创 安卓中扩展数据结构的探究解析
数据结构是编程工作的一项基本功,虽然现在很多应用程序的开发工作不会涉及数据结构的设计和实现,但是往往绕不开数据结构的使用,特别在一些特殊需求下,对数据结构的理解显得更为重要。安卓应用的开发自然也会涉及一些数据结构的使用,由于其开发语言是Java,大体上来说,数据结构的很多使用场景仍在Java的集合框架之内。不过安卓自有其特殊的地方,在这些场景下,源码中是扩展了一些数据结构来进行优化,但还是基于Jav
2017-08-17 15:40:18 795
原创 滑动内联动效的实现之item的伴生变换
本文属于滑动内联动效系列的第二篇。仓库地址滑动内联动效 指的是 在容器滑动的过程中,其子View对应展现出来的一些效果。本篇主要记录的是在容器滑动过程中,它的item伴随进行缩放和透明度变化。上图,明了。图1中,随着滑动,内部item呈现先变大再变小的趋势,同时透明度上也是先变亮在变暗的趋势。图2中,主要是横向的一些特效,分别有图片逆差效果,缩放效果以及透明度变换效果。方案分析思路基本同滑动内联动
2017-08-16 12:23:12 1384
原创 滑动内联动效的实现之图片平行逆差效果
本文属于滑动内联动效系列的第一篇。仓库地址滑动内联动效 指的是 在容器滑动的过程中,其子View对应展现出来的一些效果。而图片平行逆差效果,就是在容器滑动过程中,图片也跟着移动的效果。语言太苍白,直接上效果。 上面图片还带了透明度的变化,但这不是本文的描述范围。 想要提前看整体实现,请直接移步到github仓库图片平行逆差效果早见于网络,常见思路有两种: 1- 继承滑动容器或者在滑动
2017-08-11 17:37:18 1295 1
转载 Android 开发者必知必会的权限管理知识
导语感觉分析的挺全面,故转载,有小细节删改,原文请点击: 原文在这里本文主要讲解了Android 权限管理方面几个点:Android 权限背景知识;权限检查及权限兼容;跳转到app管理权限页面一、Android 权限背景知识提到Android 权限管理,业内人士都知道Google 在Android 6.0时提出了运行时权限管理机制,在Android 6.0之前,所申请的权限只需要在And
2017-08-08 10:51:52 821 2
原创 TabLayout的指示器宽度问题
最近碰到一个需求,因为是我比较感兴趣的TabLayout的,所以记录一下吧。产品需求:希望上部导航栏中的指示器宽度略大于文字宽度;技术方案:TabLayout配合ViewPager;问题分析: 原生TabLayout的指示器宽度等于每个tab的宽度,远大于 tab内文字标题的宽度。原因分析: TabLayout(TL)继承自HorizontalScrollView,其只能添
2017-07-19 10:33:52 7950
原创 简单速记-3句话浓缩Handler四件套
Handler四件套:Looper,MessageQueue(MQ),Handler和Message Looper:消息轮询器,持有消息队列,并轮询该队列以提供给Handler消息。私有构造器,构造器内创建消息队列MQ,使用前需调用其封装函数prepare(),其内为初始化校验,并结合ThreadLocal,保证本对象的线程作用域的有效且本线程内该对象的唯一性;类级别持有主线程的Looper对
2017-07-06 12:04:14 947 8
原创 ThreadLocal工作机制-基于安卓sdk 25
ThreadLocal类(TL 代替)主要是为应用提供线程作用域的局部变量,即这些变量的值的获取只在其存放的线程里有效。TL对象并不是这个局部变量,其更像一个引导者。当某个线程还在运行且ThreadLocal对象还可以访问,那么该线程将持有ThreadLocal对象的一个隐式引用,线程回收,则TL回收。一个线程可以具有多个TL对象。每个Thread都将维护一个ThreadLocalMap类,即线程局
2017-07-04 18:58:15 941
转载 探索Kotlin的隐性成本-2
原文转自探索Kotlin的隐性成本-2第二部分将继续Kotlin编程语言,如果未读第一部分,请先阅读part 1. 让我们重新审视幕后并且发现更多的实现细节关于Kotlin特性。Local functions(局部函数)这种函数在第一篇文章中没有涉及:使用正规语法在其他函数内部声明的函数。这些被称为局部函数,他们能够访问外部函数的作用域。fun someMath(a: Int): Int {
2017-07-04 16:34:11 872
转载 探索Kotlin的隐性成本
转载 自 探索Kotlin的隐性成本2016年, Jake Wharton发表了一系列有趣的言论关于Java的隐性成本。同一时期他也开始拥护使用Kotlin开发Android,但是几乎不提Kotlin的隐性成本除了推荐使用内联函数。由于Kotlin被Google官方推荐。通过研究它产生的字节码,我认为写有关这门语言方面的东西将是一个好主意。 同Java相比,Kotlin是一门提供了大量语法糖的现代
2017-07-04 16:24:25 1830
原创 Kotlin特色风格实现gof设计模式
虽然设计模式偏重于思想层面,但是不同的编程语言有着其独特的语法展现,这使得在某个特定语言内,可能会更灵活和更有张力的实现某些设计模式。同时,对于kotlin来说,由于其完全兼容Java,若是只是谈设计模式的实现的话,完全可以把java实现的设计模式convert成kotlin就可以了,但是这样的话,便会埋没一些kotlin的特色。Kotlin对比java而言,其大大扩大了函数的灵活性:高阶函数(可以
2017-06-24 20:24:41 1785
原创 Kotlin实现多函数接口的简化调用
对于一个声明了多个方法的接口,我们使用的时候有时仅仅关注于几个关键方法,并不需要实现所有的。可是由于接口调用的语法限制,使得我们不得不在代码中也显示声明实现了那些我们不关心的方法。在java中也有简化接口调用的方式,比如安卓中ViewPager监听页面切换时的接口PageChangeListener,官方提供了简单类: ViewPager.SimpleOnPageChangeListener来简化调
2017-06-18 13:50:44 8679 1
原创 带你全方位使用Anko库-下篇
本文接上篇,继续带大家全方位的熟悉anko库的使用。本文主要介绍的是anko库的另外两个子库,anko-coroutines和anko-sqlite库。anko-coroutines的使用 要想使用该库,必须要对协程(coroutines)的概念有一定的理解。协程对于java来说是个全新概念,但对于其它语言如c#来说,也是个发展相对成熟的一种技术。目前协程的设计还处于实验过程中,未来kotlin
2017-06-07 19:09:13 3172
原创 聊聊安卓开发中主题样式的一种组织架构
在现阶段的安卓开发中,有着大量高级的开发组织架构,例如MVP,MVVM或者Clean Architecture,还有些疯狂点的例如RxJava或者Dagger,甚至还有新语言出现,比如Kotlin。 但是在大多数项目中,主题和样式仍然是使用了最老式的方法,并没有考虑其组织结构。但是这些xml文件也是项目代码的一部分,所以展示它们也应该像展示我们喜欢的Java代码一样。一个常见问题在一个新项目里,A
2017-05-29 23:55:30 636
原创 Kotlin在安卓中的一些tips
在本次谷歌IO大会上Kotlin终于转正成为安卓官方语言。虽然每年都会出来一些编程语言,很多都小众且容易消亡,但这次,由于Oracle和Google的在Java版权问题,以及Google的安卓生态圈保卫战等原因,这次kotlin多半会真正上位,起码在安卓开发方面,相信随着Kotlin的完善和安卓生态圈的继续成熟,java的使用将越来越少。本文主要记录学习Kotlin的一些基本技能点。 1-Kotl
2017-05-23 16:19:42 3481 6
原创 安卓中MVC模式的深度思索和实践(三)
这是一个有关安卓MVC框架模式的短系列,目的是思索和分析安卓中MVC模式更为真实的一面。系列: - 安卓中MVC模式的深度思索和实践(一) - 安卓中MVC模式的深度思索和实践(二)在上一篇中,主要通过一个demo项目,介绍了控制器的优化,简单回顾下:控制器C,或者叫做调度器,主要用来委托操作和调度,它不应该着眼于业务逻辑或者视图逻辑;而要将业务逻辑和视图逻辑,都还给对应的V层和M层。视图业务
2017-05-22 17:17:37 751
原创 安卓开发中很多人都不知道的两个log技巧
在安卓开发中,打印日志是个非常重要的功能,虽然相关的博客有很多了,但本文的两个技巧还是有看头的。本文第一个技巧,就是不引用第三方库的情况下,使用liveTemplate,实现快速输入、格式化以及定位功能。大体功能有3点,先看截图。快速,截图所示,输入ld,回车,即可输入截图中的代码;清晰,如上图所示,文件名,方法名,行数一目了然;定位,使用这种格式输入的日志,自带超链接,可以点击定位到代码位置
2017-05-12 14:19:29 6297 1
原创 安卓中MVC模式的深度思索和实践(二)
这是一个有关安卓MVC框架模式的短系列,目的是思索和分析安卓中MVC模式更为真实的一面。系列: - 安卓中MVC模式的深度思索和实践(一)在上一篇中,主要从一个比较传统但又精致的角度重新审视了一下安卓中的MVC模式。首先回顾一下上篇中最后有关MVC的观点,核心是分层,重点是职责如何单一和清晰化: - 视图V,具备展示职责,职责的划分是通过与控制者的改变无关这条原则来进行的;比如在安卓中,以Li
2017-05-09 18:31:31 1158
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人