android开发
文章平均质量分 93
只有小松了
这个作者很懒,什么都没留下…
展开
-
新年第一篇,androidHAL层知多少?
最近和同事交流,多次听到HAL层,由于小松以前主要负责应用软件,所以几乎没听说过这一层,搜了一下图片,发现他全名为Hardware Abstraction Laye(硬件抽象层),位于Linux Kernel和FramWork之间,是抽象底层接口传递给上层的,但是我转念一想,如果是控制硬件的话其实这个HAL层完全可以归入Linux Kernel中嘛,难道他还有别的作用?所以今天呢,小松就来好好研究研究这个层的作用与原理存在的意义Hardware Abstraction Layer 为硬件抽象层,我们原创 2022-02-17 16:30:37 · 1470 阅读 · 0 评论 -
当我们说“嘿,siri”时,会发生什么?
前言今天小松由于工作需要,研究了一下思必驰的一个语音识别模型,这块之前没有接触过,主要看了语音唤醒这一块内容。本地语音唤醒,在做完配置后,只需要实现唤醒回调接口,实例化唤醒引擎,这个唤醒引擎我理解为启动唤醒功能的容器,你可以实现很多接口,比如唤醒引擎检测到说话声,会有对应的回调方法,开发人员可以实现这些回调方法,自定义自己的app的效果部分回调方法会带来约定好的返回值,比如检测到声音变化或者错误码等等,下图表示整个流程,蓝框外面为应用开发来做,框里面除了实现接口回调,其他的都是sdk的工作话说这个原创 2021-12-17 17:36:18 · 3704 阅读 · 0 评论 -
深入理解android 包体积优化,给apk瘦身全部技巧
前言随着iphone13p最大内存放大到了1T,大内存手机的时代悄然降临,在android里面,三星也有,罗老师几年前说:如果我告诉你们我们在做1T的手机,你们可能以为我疯了。看看现在,估计未来会有更多手机有1T版,大家开始真香了。但是,如果现在有人说:要做一个1T大小的app,那他可能是真疯了,至少未来十年不可能。因为手机内存是越大越好,你一个app当然是能小就小呀Android app的文件格式为apk,本文就是探讨对于一个android apk,有哪些方法可以减小体积Apk组成要想减小体.原创 2021-10-23 21:27:40 · 2100 阅读 · 0 评论 -
翻车了,字节一道 Fragment面试题
一道面试题前段时间面试,面试官先问了一下fragment的生命周期,我一看这简单呀,直接按照下图回答面试官点点头,然后问,如果Activity里面有一个fragment,那么启动他们时,他们的生命周期加载顺序是什么?所以今天,我们好好了解了解这个用得非常多,但是对底层不是很理解的fragment吧首先回答面试官的问题,Fragment 的 start与activity 的start 的调用时机调用顺序:D/MainActivity: MainActivity:D/MainActivity原创 2021-10-21 13:45:23 · 1396 阅读 · 0 评论 -
面试官:说说为什么自定义view的wrap_content会失效?
如果你不了解View,那就说明你没有真正入门android无论是TextView小控件,还是LineLayout这种大容器,都是View演化而来,TextView也继承自Viewpublic class TextView extends View implements ViewTreeObserver.OnPreDrawListener {}LineLayout这类布局控件特殊一点,来自ViewGroup,而ViewGroup继承自Viewpublic class RelativeLayout e原创 2021-09-09 19:33:36 · 1297 阅读 · 0 评论 -
关于android 的crash,不知道这个,只能说你还在入门阶段
最近学习了一下BreakPad获取native crash的系统信息和堆栈信息,这是极客时间的一个作业。做android开发的都知道,crash是非常致命的问题,有两种crash,java本地Crash和native crash,第一种比较好解,因为java堆栈已经帮你定位到问题,而第二种,主要指的是C/C++代码,在android中以动态链接的形式存在,由于是跨语言的,所以往往很难定位。因此很多公司都开发了很多工具来进行,比如腾讯的bugly,阿里的啄木鸟。要想做一个可用的崩溃日志收集系统,需要做到原创 2021-06-27 15:31:38 · 1112 阅读 · 1 评论 -
flutter初步入门介绍
flutter1.x简介Flutter 是 Google推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS 和 Android平台。 Flutter提供了丰富的组件、接口,开发者可以很快地为 Flutter添加 native扩展。同时 Flutter还使用 Native引擎渲染视图,这无疑能为用户提供良好的体验。特点跨平台自绘引擎不使用 webview,不使用操作系统原生空间,自己的高性能渲染引擎来绘制widgetS原创 2021-05-24 11:29:29 · 852 阅读 · 2 评论 -
管中窥 Tinker, 一览热修复
关于热修复,这个曾经让小松觉得超级厉害的技术,一直都没敢的接触,最近因为一些事情,注销了王者账号后,时间多了一些,现在来研究下吧本文仅讲述自己的学习进程,涉及到部分源代码和思想,但是不会过于深入,适合了解是什么首先,所谓的热修复,也就是 hotfix,顾名思义,也就是不需要重新写代码发 apk,而是用户不需要更新手机里面的 app 就可以把代码修复,尤其是一些严重影响体验的问题,比如 crash 之类的,如果等新版本发布再改那不得被用户喷死因此,hotfix 就尤为重要,对于开发来说,一般不需要原创 2021-04-16 20:49:40 · 348 阅读 · 0 评论 -
【源码】app是如何启动的?深入解析android应用程序的启动过程(上)
应用程序的进程启动简介当我们打开android手机的时候,不知道你是否想过app是如何启动的呢?接下来,我将从源码角度进行解析,当然,本文作为上篇,是介绍应用程序的进程启动过程,而不是应用程序的启动过程,他们的区别就是煮饭前要准备锅具,没有锅具就无法煮饭,本文就是准备锅具的,但是也不简单哦。文章将从两个方面介绍,一个AMS发送请求,一个是Zygote接受请求。AMS就是Activity Manager System,管理Activity的,而Zygote就是创建进程的一个进程,所以AMS要想创建进原创 2020-07-05 13:03:17 · 595 阅读 · 0 评论 -
【源码】app是如何启动的?深入解析android应用程序的启动过程(中)
前言由上文可知,在启动了应用程序的进程后,接下来,就该启动应用程序本身了,你已经知道AMS(Activity Manager Service)是专门管理Activity的服务,而启动应用程序,本质上来说,就是启动应用程序的第一个Activity,这个Activity被称为根Activity,所以AMS在本文中依然是主角。本文将分为三个部分介绍,Launcher请求AMS,AMS到Application Thread的调用和Activity Thread 启动 Activity。Launcher请求AM原创 2020-07-08 17:06:36 · 510 阅读 · 0 评论 -
用android开发一个识别人形的app,一键切换背景
前言:我是小松,今年大四,在android开发中持续耕耘,快来一起学习把不知道大家有没有这种烦恼,手上有白底的证件照,但是学校偏偏要交红底的,万般无奈只能去照相馆再照,虽说可以进行PS,但是总归麻烦,现在可以用app一键解决啦目录效果如图项目介绍架构布局activity_mainactivity_still_cut功能MainActivityConstantBitmapUtilsImage...原创 2020-04-11 12:00:23 · 1144 阅读 · 34 评论 -
《Android编程权威指南》项目三 MVVM架构实战解析
本文将通过一个BeatBox项目详细解析MVVM架构的使用以及android中主题样式的使用分析目录效果如图项目结构前期准备 SingleFragmentActivityactivity_single_fragment BeatBoxActivityMVVM BeatBox Soundlist_item_sound.xml SoundViewModel核心完成代码fragment_beat_...原创 2020-04-08 20:04:21 · 1638 阅读 · 14 评论 -
【一看就懂】自定义View入门实践,实现外方内圆效果
本文作为自定义View的初步实践,取材自《android开发艺术探索》目录效果如下方法activity_main.xmlattr.xml属性CircleView重写onDraw()重写onMeasure()java源代码效果如下方法activity_main.xml这是我们自己设计的CircleView控件,其在xml中如下表示<?xml version="1.0" enc...原创 2020-03-31 21:34:59 · 603 阅读 · 10 评论 -
《Android编程权威指南》项目二——一个方便快捷便签的诞生
现在看到13章,做了一个简单的便签应用,主要分为新建事件和滑动查看事件两个部分,其他的大部分代码都是在为之后的灵活多变打基础,所以虽然功能很简单,但是代码量也不少项目文件及作用新建事件主要是在CrimeListFragment中完成,使用MVC模式当我们点击NEW CRIME时,跳转到CrimePagerActivity所管理的CrimeFragment中/*** 用户点击菜单...原创 2020-01-25 05:08:24 · 544 阅读 · 0 评论 -
《Android编程权威指南》项目一 地理知识问题(文末送pdf)
最近趁着春节假期,打算系统的再扫一遍androidd知识,学习《Android编程权威指南第三版》,前6章讲了一个项目,关于地理知识问题解答效果如下如果作弊了,会检测到功能点新知识点ShowAnswer按钮点击后会消失的动画代码如下int cx = mShowAnswerButton.getWidth() / 2;int cy = mShowAnswerButton.get...原创 2020-01-23 00:57:50 · 712 阅读 · 0 评论 -
过年回家,和女朋友一起玩的android游戏,单身20年的手速居然输了!
因为手机不方便录屏,所以上传的用模拟器来模拟效果,但是在实战中确实输了~这只是一个很简单的版本,在高铁上突发奇想,然后紧赶慢赶完成的,后续升级版本打算增加各种特效和支持自定义惩罚,文件如下mainactivity写逻辑xml文件写界面color配色strings设定惩罚MainActivitypackage com.example.couplegame;import and...原创 2020-01-17 23:23:00 · 824 阅读 · 0 评论 -
android room的学习与使用(一)——实现增删改查
最近接触了room,可以完成数据库的工作,使用的感觉有点想spring boot,一起来看看吧效果如下,很简单,只是为了显示room的作用作为一个demo,文件结构很简单首先进入room导入依赖包,也就是下面的代码贴到build.gradle中的dependencies中,这里我删除kotlin相关 def room_version = "2.2.1" implementa...原创 2019-11-04 11:23:30 · 1603 阅读 · 0 评论 -
Andorid studio 新建项目时 Manifest的作用
在Andorid studio中,每当新建一个项目,在App栏中的第一栏永远会出现Manifest.xml,虽然我们大多数时候不用管它,但是他的作用非常重要Manifest是项目的配置文件,类似于产品说明书,我给大家解释一下其作用<?xml version="1.0" encoding="utf-8"?>//支持中文,但是图片名字不能用中文<manifest xmlns...原创 2018-08-10 16:04:53 · 2393 阅读 · 0 评论 -
RadioGroup+OnCheckedChangeListener实现安卓按钮切换
点击一下 再点击一下 如图所示,如何实现有几个按钮的情况下进行点击切换呢?分两步,一是xml界面的搭建,一是javaw文件的逻辑支持如果遇到一组相似的按钮,我们需要用到RadioGroup组,而且他是继承自LinearLayout, 可以设置vertical和horizontal两种结构,默认的是vertical结构<RadioGroup android:id...原创 2018-08-10 19:27:09 · 3673 阅读 · 1 评论 -
CheckBox+OnCheckedChangeListener实现复选框切换
效果如图,这是一道心理测试题,可以测试为人 这种效果在界面上用CheckBox实现,逻辑上用OnCheckedChangeListener监听器给每个复选框监听,监听方法就是在下方输出字符串 xml中我们用线性布局,CheckBox继承自CompoundButton,所以他也是Button的一种,和 Button写法类似&amp;amp;amp;lt;LinearLayout android...原创 2018-08-11 00:27:53 · 572 阅读 · 0 评论 -
Switch+OnCheckedChangeListener实现滑动按钮
如何实现图示的滑动按钮呢?核心在于先在xml中用Switch语句实现按钮,但是默认的按钮样式很丑,所以我们还需要自己设置,滑动按钮是由底部和按钮组成,底部变化用strack,按钮变化用thumb<Switch android:id="@+id/switchButton" android:layout_width="wrap_content" android...原创 2018-08-11 13:21:14 · 1537 阅读 · 0 评论 -
安卓xml文件中ImageView及scaleType的用法
容易混淆的是scaleType的用法center型的都是从中间开始装center 按图片原来的size居中显示 center_Crop按比例扩大或缩小size居中显示,使图片长(宽)等于或大于Imageview的长(宽) center_Inside将图片完整居中显示,使得图片长/宽==Imageview的长/宽 从上到下显示的效果 fit型的都是能装下图片的fit_Sta...原创 2018-08-11 14:08:29 · 819 阅读 · 0 评论 -
Andorid studio如何删除之前的项目
最近学习安卓开发,遇到不知道怎么删除项目的问题,本文亲测有效 &nbsp; &nbsp; &nbsp; &nbsp;当你想在Android&nbsp;Studio中删除某个module时,大家习惯性的做法都是选中要删除的module,右键去找delete。但是在android&nbsp;Stud...转载 2018-08-08 23:17:06 · 6637 阅读 · 0 评论 -
解决RecyclerView中item过大的未知错误(间距刚好为一个屏幕高度)
在跟着《第一行代码》第二版学习RecyclerView时,发现每两个item之间间距老是很大,网上查了很多资料无效,认真看了半天,发现两个item的间距刚刚好是一个屏幕的高度,怀疑是layout出现问题,看了一下item.xml中的,果然设置的是match_parent修改成wrap_content即可回头又看了一下《第一行代码》,发现他是写对的,只不过没提……可能人家觉得太简单所以看书...原创 2018-11-22 23:55:50 · 1285 阅读 · 2 评论 -
android Kotlin 实现列表卡片点击选择功能
效果要点会用GridView(和ListView差不多,可以分列排)以及SimpleAdapter有五个参数,在代码中会解释思路定义一个map型列表,存储所有图片,然后将其放到simpleAdapter适配器中接着定义一个GridView设置这个适配器再设置监听事件,当点击到某个子项时在下方显示三个文件MainActivity.javaactivity_main.xml ...原创 2019-01-20 21:00:16 · 979 阅读 · 0 评论 -
andtoid studio画一个简单的跟随手指移动的小球
先看效果,这是在模拟器中展示(稍有延迟)我们需要三个文件Draw.java //操作界面DrawListener.java //监听触摸,画出小球image.xml //界面首先界面image.xml,做一个图像控件,我们的小球就在这个控件中产生并“运动”,很简单,设置为全屏即可,然后设置id <ImageView android:id="...原创 2019-01-16 17:12:27 · 687 阅读 · 0 评论 -
android通过实现简单的图片自动播放功能 简单理解Handler机制
这是小鸡自动跳跃的八张图片核心组件ImageView 防止图片Handler 线程处理Timer 计时思路设定延时,然后每隔一段时间将信号发送给handler,handler接受到信号后切换图片代码xml文件中只有一个id为image_cartoon的ImageView控件,不再演示下面都有注释,不再赘述package com.example.a18307.crazy...原创 2019-01-22 19:52:14 · 1684 阅读 · 3 评论 -
解决andorid studio卡慢的问题
最近开始学习andorid studio,确实产品做得很用心,很多代码人家都准备好了,界面也美观,但是 体验非常不好!很卡,很慢! 如图 ,狂吃内存 敲一个字要等一秒钟的节奏 话不多说解决方案:**首先找到这个软件文件夹里面的bin目录,找到studio64.exe.vmoptions. 把Xmx的后面的参数改大一点,改成2048或者4096 Xmx就是允许使用的最大堆内存**...原创 2018-08-05 11:13:01 · 551 阅读 · 0 评论