[Android]从入门到精通
Androidfoolish
成功之路贵在坚持!
展开
-
View的滑动冲突
分为三种情况:1. 内外部滑动方向不一致 ->最简单,两种解决方式:外部拦截法,内部拦截法2. 内外部滑动方向一致 ->较复杂,根据需求解决3. 包含以上两种情况的嵌套 ->复杂,根据需求解决后续更新详细解决方案...原创 2022-04-11 00:54:53 · 262 阅读 · 0 评论 -
View的事件分发机制
源码分析:入口:Activity的dispatchTouchEvent:->->->->->View.dispatchTouchEvent原创 2022-04-10 22:51:32 · 273 阅读 · 0 评论 -
Android inputType
详细请参考源码:frameworks/base/core/java/android/text/InputType.javaTextView | Android:inputType 输入类型的完整的列表:none没有内容类型。文本不可编辑。text只是老文本。对应于type_class_text | type_text_variation_normal。textCapCharacters可以与文本及其变体相结合,以请求所有字符的大写。对应于type_text_flag_cap_chara原创 2020-11-25 19:05:38 · 523 阅读 · 0 评论 -
Handler内存泄露原因及解决方法
三种方案:1.非静态内部类+弱引用2.静态内部类+弱引用3.Activity不可见时,清空消息队列Android 中handler机制太重要了,无时不刻的都在处理消息队列和任务队列,很多人不注意,在处理延时任务的时候持有activity,导致activity不能被早早的回收,从而降低了APP的效率和性能。比如下面经典的写法(很多人都会这样写): new Handler().postDelayed(new Runnable() { @Override原创 2020-11-25 18:06:23 · 740 阅读 · 0 评论 -
Android seLinux单编方法
在Android P上如果修改了selinux的内容, 可以通过以下方法来验证是否生效:1. 单编system/sepolicymmm system/sepolicy2. push system/etc/selinux 和 vendor/etc/selinux 到手机里面, 并重启手机. adb push $(PRODUCT_OUT)/system/etc/selinux /system/etc/ adb push $(PRODUCT_OUT)/vendor/etc/.原创 2020-11-20 16:35:06 · 2621 阅读 · 0 评论 -
[Android] 如何在代码中执行adb shell命令
直接上干货:通过Runtime.getRuntime().exec()实现具体请参考以下:input text 模拟输入内容input keyevent 模拟 手机的按键 比如音量键 home 键 返回键 input keyevent 3 模拟按下返回键,很强大的 还有 手柄的一系列按键,可以自己查查input tap 模拟点击 屏幕 生成 down-up事件 ,例如 input tap 300 400; 这个是 PX 值input swipe 模拟滑动屏幕 例如...原创 2020-11-04 16:09:49 · 4707 阅读 · 0 评论 -
You can configure Gradle wrapper to use distribution with sources. Apply后同步报错:Failed to open zip
Apply:You can configure Gradle wrapper to use distribution with sources.It will provide IDE with Gradle API/DSL documentation.后报错gradle同步失败:Failed to open zip file.Gradle's dependency cache may be corrupt (this sometimes occurs after a network connect原创 2020-11-04 14:39:43 · 3437 阅读 · 0 评论 -
Android app系统签名方法
1. 如果有项目代码那就非常简单了, 直接吧apk放到vendor下面,添加Android.mk,然后mm编译即可得到系统签名后的产物.Android.mk文件参考源码vendor/google/apps/Android.mk文件,因为该目录下都是apk文件,一部分是需要系统签名的apk(LOCAL_CERTIFICATE := platform),而另一部分是不需要签名的apk(LOCAL_CERTIFICATE := PRESIGNED)具体内容如下 LOCAL_PATH := $(c...原创 2020-06-10 17:58:32 · 1330 阅读 · 0 评论 -
Android 取得系统开机的时间
SystemClock.elapsedRealtime();//返回的是系统从启动到现在的时间,单位:msSystemClock.uptimeMillis();//返回的是系统从启动到当前处于非休眠期的时间,单位:ms//从某一时间开始计时long startTime = SystemClock.elapsedRealtime();// ......做某它事情long timer =...原创 2020-05-08 10:09:41 · 2189 阅读 · 0 评论 -
[Android基础] Activity加载模式
1.standard: 标准模式,这是默认的加载模式。2.singleTop: Task栈顶单例模式。3.singTask: Task内单例模式。4.送了Instance: 全局单例模式。原创 2020-04-19 12:42:53 · 118 阅读 · 0 评论 -
单编方法
make 包名 / mm记住是报名不是文件夹名,到Android.mk中查找原创 2020-03-19 09:26:05 · 449 阅读 · 0 评论 -
单编报错:fatal error: runtime: out of memory
不用搜了,真的是内存不足了,把占内存的软件关掉再试。原创 2020-03-18 19:56:16 · 6684 阅读 · 1 评论 -
Android key store
1. androidkeystore 安全存储2. android keystore存储字符串https://www.jianshu.com/p/65b2aa6ec85fhttps://blog.csdn.net/zhangyi0618/article/details/83978407https://blog.csdn.net/sinat_29321583/article/deta...原创 2020-03-12 00:00:20 · 214 阅读 · 0 评论 -
[Java环境] Error: This Java instance does not support a 64-bit JVM
解决版本:打开控制面板,卸载32位java,安装64位javajre,jdk官网下载非常慢,稍后会上传可以从我这里下载~原创 2020-02-25 23:34:01 · 1995 阅读 · 0 评论 -
dpkg: error processing package grub-efi-amd64-signed
使用如下的办法解决:sudo apt-get cleansudo apt-get updatesudo apt-get install --reinstall python-minimal python-lockfile原创 2020-02-03 10:27:56 · 1832 阅读 · 0 评论 -
备战面试:MVC MVP MVVM MVPVM应用架构模式区别
分析主要是通过它的控制链、控制流向,View 的变化如何反馈到Model,以及Model的变化如何作用到View上。MVCView 持有了Controller,把事件传递给Controller,Controller 由此去触发Model层的事件,Model更新完数据(网络或者本地数据)之后触发View的更新事件MVC.pngMVPMVP.png咋看一下MVP只...原创 2019-12-16 00:02:53 · 559 阅读 · 0 评论 -
备战面试:MVC MVP MVVM应用架构模式区别
MVVM可以算是MVP的升级版,其中的VM是ViewModel的缩写,ViewModel可以理解成是View的数据模型和Presenter的合体,ViewModel和View之间的交互通过Data Binding完成,而Data Binding可以实现双向的交互,这就使得视图和控制层之间的耦合程度进一步降低,关注点分离更为彻底,同时减轻了Activity的压力。在比较之前,先从图上看看三者的异...原创 2019-12-16 00:01:02 · 429 阅读 · 0 评论 -
备战面试:MVVM应用架构模式
MVVM 模式,即指 Model-View-ViewModel。它将 View 的状态和行为完全抽象化,把逻辑与界面的控制完全交给 ViewModel 处理。如下图:MVVM 由下面三层组成:View:主要进行视图控件的一些初始设置,不应该有任何的数据逻辑操作。 Model:定义实体类,以及获取业务数据模型,比如通过数据库或者网络来操作数据等。 ViewModel:作为连接 V...原创 2019-12-15 23:57:13 · 173 阅读 · 0 评论 -
备战面试:MVP应用架构模式
MVC的缺点在Android开发中,Activity并不是一个标准的MVC模式中的Controller,它的首要职责是加载应用的布局和初始化用户 界面,并接受并处理来自用户的操作请求,进而作出响应。随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致变得庞大臃肿。什么是MVP?MVP从更早的MVC框架演变过来,与MVC有一定的相似性:Controller/Prese...原创 2019-12-15 23:46:38 · 149 阅读 · 0 评论 -
备战面试:MVC应用架构模式
MVC模式介绍:MVC是Model-View-Controller的简称Model:模型层,负责处理数据的加载或者存储View:视图层,负责界面数据的展示,与用户进行交互Controller:控制器层,负责逻辑业务的处理MVC模式的特点:1.耦合性低;2.可扩展性好;3.模块职责划分明确MVC模式的不足:XML文件作为视图层,所做的事情比较有限,所以Ac...原创 2019-12-15 23:34:21 · 148 阅读 · 0 评论 -
Process 'command 'git'' finished with non-zero
因为通过网页下载的代码没有将git库一起下载下来,缺少git库,可以尝试通过clone将完整代码下载下来。原创 2019-12-12 15:14:00 · 4906 阅读 · 2 评论 -
Linux ubuntu常用工具
1. Beyond CompareBeyond Compare4安装及破解步骤请参考:https://blog.csdn.net/qq_26012495/article/details/86514147亲测可用~原创 2019-05-12 18:21:44 · 162 阅读 · 0 评论 -
开关机动画:Shutdown animation实现方案
android7.0代码没有关机动画的实现,默认是使用关机对话弹框完成。如果需要定制化关机动画,则需要重新设计。思路分为两种:一是新建一个shutdown animation服务,完全仿照bootanimation重新拷贝一份代码然后进行相关的修改,因为动画的显示逻辑都是一样的,不同的只是文件读取路径不一样,然后就是触发地点不一样。正因为差异很小,这样做的代价很大,而且涉及到很...原创 2019-05-23 20:48:02 · 2586 阅读 · 0 评论 -
linux ubuntu系统下U盘只读文件系统问题
请参考:https://blog.csdn.net/ITBigGod/article/details/79914534原创 2019-06-26 09:50:47 · 700 阅读 · 0 评论 -
[Android Studio 日常奇怪问题记录] 之自定义view报错Error inflating class com.example.myapplication.widget.Day
检查两点:1.AndroidMainfiest.xml确认antivity都已正常添加至xml文件中。2.自定义的布局文件对比我的截图确认是否缺少信息。检查以上两点问题一般可以解决~...原创 2019-04-20 13:10:24 · 2727 阅读 · 1 评论 -
Linux ubuntu Eclipse安装步骤
Eclipse和Android Studio是android开发这常用的两个工具,今天介绍一下Eclipse在Linux ubuntu上的安装方法。如果电脑上没有JDK请先安装JDK.JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html我使用的是:jd...原创 2019-03-26 19:19:48 · 1708 阅读 · 0 评论 -
OpenGrok搭建方法
兄弟们我已经上传了源码,大家如果想要深入学习android尽快看起来吧~俗话说:工欲善其事必先利其器。这句话没毛病啊,学习android源码也需要好的工具才能事半功倍。强烈推荐大家使用opengrok工具,下面给大家详细说一下opengrok的搭建过程。导语阅读源码最常见操作的就是在函数/方法的调用与定义之间跳转,对于只有大部分源码来说,都可以通过ctags+vim获得比较好的体验...原创 2019-05-12 16:54:47 · 2920 阅读 · 3 评论 -
git nano/vim 编辑器如何退出
vim编辑器:Esc ->Shift+: →wq! →EnterNano编辑器:Ctrl+x→Y->Enter修改git默认的编辑器nano为vim的方法:git config --global core.editor vim原创 2019-05-24 15:57:49 · 2887 阅读 · 0 评论 -
[Android Studio 日常奇怪问题记录] 之module not specified
误删Module app导致报错module not specified。解决方法:File->Sync Project With Gradle原创 2019-04-02 13:44:04 · 214 阅读 · 0 评论 -
[Android Studio 日常奇怪问题记录] 之canvas.save(Canvas.ALL_SAVE_FLAG)
canvas.save(Canvas.ALL_SAVE_FLAG); 在androidP上会报错,修改方法:canvas.save(Canvas.ALL_SAVE_FLAG); --> canvas.save();原创 2019-04-11 13:10:35 · 12084 阅读 · 5 评论 -
[Android Studio 日常奇怪问题记录] 之Cannot choose between the following variants of project :map:
问题简单描述:项目Modules中没有app,不显示app build.gradle。报错信息:Cannot choose between the following variants of project :map: - debugApiElements - debugRuntimeElements - releaseApiElements - releaseRunt...原创 2019-04-11 10:25:26 · 7715 阅读 · 1 评论 -
[Android Studio 日常奇怪问题记录] 之Failed to resolve: com.github.chrisbanes:PhotoView:1.2.6
解决方法:在build.gradle中添加maven{url "https://jitpack.io"}原创 2019-04-04 20:53:40 · 1297 阅读 · 0 评论 -
Linux ubuntu JDK安装方法
JDK安装方法很简单,请参考以下步骤~JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html我使用的是:jdk-8u201-linux-x64.tar.gz下载后安装命令: sudo mkdir /usr/lib/jvm sudo...原创 2019-03-26 19:21:29 · 130 阅读 · 0 评论 -
Linux操作系统截屏方法
如果只需要获取一张屏幕截图,不对其进行编辑的话,那么键盘的默认快捷键就可以满足要求了。而且不仅仅是 Ubuntu ,绝大部分的 Linux 发行版和桌面环境都支持以下这些快捷键:PrtSc – 获取整个屏幕的截图并保存到 Pictures 目录。 Shift + PrtSc – 获取屏幕的某个区域截图并保存到 Pictures 目录。 Alt + PrtSc –获取当前窗口的截图并保存到 ...原创 2019-03-23 16:54:48 · 1412 阅读 · 0 评论 -
通过Git命令从GitHub上下载源码
本文以下载Vim的YouCompleteMe插件源码为例进行说明如何使用Git从GitHub中下载源码,实验环境为Ubuntu 16.04。1 确定源码地址YouCompleteMe在GitHub中的主页如下图所示:由上图可见,网址为:https://github.com/Valloric/YouCompleteMe,可以通过这个网址来下载YouCompleteMe:git c...原创 2019-03-23 16:45:28 · 2010 阅读 · 1 评论 -
[Android开发] Git&GitHub基础知识
在之前的外企不可以上外网,所以一直没有写博客的习惯,如果进入了一家新公司管理不像以前那样严格,准备把自己的成长之路分享给大家,希望能够帮助那些想在程序员道路上有一番作为的年轻人。言归张转,今天给大家分享一下Git&GitHub的基础知识。Github作为一个开元平台,一个程序员尽早了解和使用它是大有裨益的。基于Linux Ubuntu系统Git和GitHub的安装:如...原创 2019-03-23 16:41:13 · 341 阅读 · 0 评论 -
Linux ubuntu repo安装方法
首先简单介绍一下repo是什么:repo是Android为了方便管理多个git库而开发的Python脚本。repo的出现,并非为了取代git,而是为了让Android开发者更为有效的利用git。Android源码包含数百个git库,仅仅是下载这么多git库就是一项繁重的任务,所以在下载源码时,Android就引入了repo。 Android官方推荐下载repo的方法是通过Linux cur...原创 2019-03-25 20:31:30 · 41540 阅读 · 6 评论 -
[Android Studio 日常奇怪问题记录] 之Could not get unknown property 'assembleRelease' for project
解决方法:在外面加上gradle.projectsEvaluated { assembleRelease.doLast { }}原创 2019-04-03 16:01:17 · 3711 阅读 · 1 评论 -
[Android Studio 日常奇怪问题记录] 之Failed to resolve: com.android.support:appcompat-v7:28.0.0
在build.gradle中添加google()原创 2019-04-03 16:18:28 · 351 阅读 · 0 评论 -
[Android Studio 日常奇怪问题记录] 之ERROR: Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.21
kotlin插件升级到1.2.41时kotlin-stdlib-jre7已过时解决方法:将kotlin-stdlib-jre7换成kotlin-stdlib-jdk7,问题解决。原创 2019-04-16 09:28:56 · 405 阅读 · 2 评论