Android
文章平均质量分 64
skateboard1
这个作者很懒,什么都没留下…
展开
-
在游戏中看状态机与状态模式
状态机与状态模式状态机最早接触状态机这个词来自编译原理的学习,在词法分析中,通过有限状态机来进行单词识别。状态机在里面被定义为一个数学模型,一个五元组。 截图来自维基百科对于Android开发者,可能最为熟知的就是MediaPlayer的状态机图了状态机一般有四个要素现态:状态机当前所处的状态条件:触发动作或者状态迁移的条件(在按键系统中,就是指按键的值)动作:条件满足后执行的动作(也就是响应各个任务,在代码中往往一个动作对应一个方法)次态:动作完成后要迁移的下个状态上图中蓝色圆圈原创 2021-07-27 09:47:13 · 379 阅读 · 0 评论 -
Kotlin写一个解释器(3)---解释执行
前言之前通过Kotlin写一个解释器(1)—词法分析,Kotlin写一个解释器(2)—语法分析,我们得到了一个抽象语法树,通过遍历抽象语法树,我们就可以得到相应的计算结果。计算通过后续遍历,我们可以得到相应的计算结果。class Interpreter(private val parser: Parser) { fun interpret():Int { val ast = parser.parse() return visit(ast) }原创 2021-06-07 19:43:08 · 278 阅读 · 3 评论 -
无用系列——3D球体文字云
起因前些日子在网上看到了一个h5的比较炫的3D球体文字效果,感觉挺有意思,就准备在Android侧进行一下复现,废话少说,先看一下效果(gif看上去有些卡,实际不会)卡核心原理文字坐标首先要做的就是为每个文字确定一个坐标,Android采用的是左手坐标系,而且我们的效果又是一个球体,所以我采用了球面坐标系计算每个文字的坐标。y = radius * cos(Math.toRadians(this.upDegree))z = -radius * sin(Math.toRadians(this.u原创 2021-05-16 17:29:46 · 522 阅读 · 0 评论 -
Kotlin写一个解释器(2)---语法分析
语法之前的文章中我们写了一个简单的词法分析器,具体见文章(Kotlin写一个解释器(1)—词法分析),有了词,那么如何将这些词组合成正确的句子呢?这里就是语法分析要做的了,首先说什么是语法,简单来说语法就是用词构成句子的规则。比如说汉语中我们常见的句子构造一般由主语+谓语+宾语构成,比如小明玩游戏,其中小明按照词类来看属于名词,这里作为主语,玩按照词类来看是动词,属于谓语,游戏按词类来看是名词,属于宾语。语法分析的目的就是根据之前词法分析获得的词法单元的序列判断是否符合相应的语法要求。上下文无关语法.原创 2021-04-30 08:54:57 · 327 阅读 · 0 评论 -
Kotlin写一个解释器(1)---词法分析
为什么学最近对编译器很感兴趣,为什么要学习编译原理,于我而言是因为最近需要写一个DSL,需要一个解释器,而对于大部分程序员来说,学习编译器可能有一下三个方面:(1)学习编译器设计,可以帮助更好的理解程序以及计算机是怎么运行的,同时编写编译器或者解释器需要大量的计算机技巧,对技术 也是一个提升。(2)面试需要,所谓“工作拧螺丝,面试造火箭”。学习编译器设计有助于加强计算机基础能力,提高编码素养,更好的应对面试,毕竟你不知道你的面试官是不是对这个也感兴趣。(3)工作需要,有的时候你可能需要创造一.原创 2021-04-20 10:58:37 · 332 阅读 · 5 评论 -
使用vscode开发Android从开始到放弃
使用vscode开发Android从开始到放弃原创 2021-03-15 08:59:29 · 28181 阅读 · 15 评论 -
老砒霜写插件(1)----Gradle插件基础以及一个简单的打印插件
Gradle干嘛的Gradle是一款自动化开源构建工具,目前android开发者好像没有谁离开它(当然,有那种大神自己通过命令行编译的,不在范围内)。什么是构建工具,对于android开发者简单来说就是将你的代码和资源等等构建出相应的apk或者aar。下面这张图是android的打包流程图可以发现是身份复杂的,包括java代码的编译,dex文件的生成,apk签名等等一系列工具过程,如果每一个节点都由开发者自己去做,那无疑对生产效率是大打折扣,而gradle通过自身提供的api可以让这一系列流程结合起来原创 2021-02-26 17:49:02 · 315 阅读 · 0 评论 -
搞基础系列-Linux系统-shell脚本的编写
前言作为一个Android开发者,可能大部分时间都放在了上层的代码编写和学习上,对于一些基础的东西像操作系统、网络、数据结构与算法还有设计模式可能了解不多,搞基础系列准备以个人的经验为出发,整理一些个人认为比较重要的,对工作有帮助的一些基础知识点,虽不能面面俱到,但力求包含重点常见知识,这不仅是一个分享,也是个人学习的记录和总结。Linux学习路线(这个路线图只是从自己的经验和实际出发得出...原创 2020-03-29 16:18:26 · 131 阅读 · 0 评论 -
搞基础系列-Linux系统-文件权限与目录配置
前言作为一个Android开发者,可能大部分时间都放在了上层的代码编写和学习上,对于一些基础的东西像操作系统、网络、数据结构与算法还有设计模式可能了解不多,搞基础系列准备以个人的经验为出发,整理一些个人认为比较重要的,对工作有帮助的一些基础知识点,虽不能面面俱到,但力求包含重点常见知识,这不仅是一个分享,也是个人学习的记录和总结。Linux学习路线(这个路线图只是从自己的经验和实际出发得出...原创 2020-03-23 21:37:21 · 214 阅读 · 0 评论 -
android LiveData源码分析--源码阅读100天(2)
0.介绍LiveData,同属于JetPack构建集合,根据文档描述LiveData是一个可观察的数据持有者类。与常规observable不同,LiveData是生命周期感知的,这意味着它尊重其他应用程序组件的生命周期,例如Activity,Fragment或Service。此感知确保LiveData仅更新处于活动生命周期状态的应用程序组件观察者。优势(以下摘自google文档,google翻...原创 2018-11-21 21:27:08 · 166 阅读 · 0 评论 -
android Lifecycle源码分析--源码阅读100天(1)
1.使用Lifecycle框架用来感知组件执行操作以响应另一个组件(例如Activity和Fragment)的生命周期状态的更改。这些组件可帮助您生成更易于组织且通常更轻量级的代码,这些代码更易于维护。举个例子:如果你需要在Activity或者Fragment的声明周期里做一些处理:override fun onCreate(savedInstanceState: Bundle?) { ...原创 2018-11-20 21:16:01 · 176 阅读 · 0 评论 -
一个Demo学习Notification
Notification 、Android原创 2016-04-11 19:05:38 · 612 阅读 · 0 评论 -
Android bind service讲解以及跨进程通信
Android bind service讲解以及Messenger跨进程通信原创 2016-04-26 19:05:45 · 4313 阅读 · 1 评论 -
使用ViewGroup实现RecyclerView
viewgroup recyclerview原创 2016-03-27 10:47:14 · 405 阅读 · 0 评论 -
Surface、SurfaceView和SurfaceHolder的理解
Surface、SurfaceView和SurfaceHolder的理解原创 2015-03-21 11:35:45 · 472 阅读 · 0 评论 -
BaseAdapter中的ConverView的作用和ListView的优化
BaseAdapter中的ConverView的作用和ListView的优化原创 2015-03-21 11:26:12 · 608 阅读 · 0 评论 -
3月23--3月27工作总结
3月23--3月27工作总结原创 2015-03-29 19:45:28 · 311 阅读 · 1 评论 -
Android Fragment使用中遇到的几点问题
Android Fragment使用中遇到的几点问题 首先要讲一下LayoutInflater对象的inflate方法,在这个方法中有三个参数(int resource,ViewGroup root,boolean attachToRoot),resource为要实例化的布局文件,root为该布局文件的原创 2015-03-14 20:08:24 · 463 阅读 · 0 评论 -
4月13-4月17工作总结
工作总结原创 2015-04-18 22:14:04 · 337 阅读 · 0 评论 -
4月6日——4月10日工作总结
4月6日——4月10日工作总结原创 2015-04-11 20:05:57 · 336 阅读 · 0 评论 -
Service学习
Service学习原创 2015-04-11 20:44:51 · 398 阅读 · 0 评论 -
3月30日——4月6日工作总结
3月30日——4月6日工作总结原创 2015-04-06 18:49:40 · 392 阅读 · 0 评论 -
Android Deeplink 功能实现
要实现DeepLink功能原创 2015-04-25 19:37:57 · 25456 阅读 · 0 评论 -
那些年接入Google程序内购买遇到的坑
Google程序内购买原创 2015-05-10 16:27:33 · 400 阅读 · 0 评论 -
小知识点
根据包名来判断设备是否安装了某程序try原创 2015-05-03 07:43:36 · 420 阅读 · 0 评论 -
Android Studio在集成了ShardSDK的项目中进行代码混淆
1、这里使用默认的混淆规则,所以只要将app里的build.gradle中的minifyEnabled的值设为true即可,这个参数就是允许代码混淆。 2、要保证ShardSDK module里的类不被 混淆,所以要在app下的proguard-rules.pro里添加两行代码 (1)-keep class cn.sharesdk.**{*;} 这段代码就是保证在cn.shardsdk包名下的原创 2015-07-31 08:18:48 · 466 阅读 · 0 评论 -
一周工作问题总结
一周工作问题总结 (1) SimpleAdapter 不支持非drawable资源的图片,也就是说图片要放在drawable文件里 (2)浏览器无法使用,提示代理服务器连接失败或无法连接到代理服务器的解决方法: 首先在浏览器中打开Internet选项,然后选择连接选项卡,点击局域网设置,在局域网设置的代理服务器下面有一项为LAN使用代理服务器,如果它选中了,就取消选中。重原创 2015-03-21 10:44:30 · 357 阅读 · 0 评论