
Android
文章平均质量分 83
进击的代码家
这个作者很懒,什么都没留下…
展开
-
Android自定义View-Paint
View 上的内容是通过 Canvas 绘制出来的,但 Canvas 中的大多数绘制方法都是需要 Paint 作为参数的,例如 canvas.drawCircle(100, 100, 50, paint) 最后就需要传递一个 Paint。内容概览内部类类型简介enumPaint.Cap Cap指定了描边线和路径(Path)的开始和结束显示效果。enumPaint...原创 2025-04-05 18:01:46 · 704 阅读 · 0 评论 -
全局Context无侵入式获取
当我们在使用第三方库,或者自己封装库,如果需要需要用到Context时,一般做法就是将初始化方法暴露给调用方,让调用方在初始化类库时,传入Context。publi class App extends Application { /** * 是否是Debug环境 */ public static final boolean IS_DEBUG = true;...原创 2020-03-23 17:08:54 · 521 阅读 · 0 评论 -
android studio3.2一个坑: Failed to process resources, see aapt output above for details.
最近升级了android studio 3.2,然后我使用的引用是: api 'com.android.support:appcompat-v7:28.0.0'然后就报错了,编译不通过:org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugResources'. a...原创 2018-11-19 17:44:25 · 12935 阅读 · 1 评论 -
谷歌firebase后台hash key 生成
keytool -exportcert -alias 别名 -keystore 路径 -list -v原创 2018-12-28 11:17:23 · 905 阅读 · 0 评论 -
Android从零开始搭建MVVM架构(1)——Databinding入门
1.简介DataBinding是谷歌官方推出的一个库,DataBinding库来写声明的layouts文件,可以用最少的代码来绑定你的app逻辑和layouts文件。Data Binding库不仅灵活而且广泛兼容- 它是一个support库,因此你可以在所有的Android平台最低能到Android 2.1(API等级7+)上使用它。需求:Android Plugin for Gradle ...原创 2019-01-04 17:49:16 · 11075 阅读 · 1 评论 -
Android从零开始搭建MVVM架构(2)——Databinding之BindingAdapter
在上一篇文章中,我们已经学习了原创 2019-01-08 17:46:24 · 3506 阅读 · 0 评论 -
Android常用命令行——gradlew,adb,adb shell
gradlew下面全是针对 windows 操作系统的。如果是 Linux / Mac 请直接用 ./ 前缀。gradlew clean //类似Clean Project gradlew -v //查看Gradle、Groovy、Ant、JVM等的版本gradlew build --info //编译并打印日志gradlew dependencies --info //查看详细的依赖...原创 2019-03-04 15:58:05 · 783 阅读 · 1 评论 -
Android从零开始搭建MVVM架构(3)——ViewModel
ViewModel类是被设计用来以可感知生命周期的方式存储和管理 UI 相关数据,ViewModel中数据会一直存活即使 activity configuration发生变化。ViewModel有什么优势?1.数据持久化activity 在销毁重建时,之前我们可以用 activity 的onSaveInstanceState()机制保存和恢复数据,但缺点很明显,onSaveInstanceS...原创 2019-03-20 11:10:08 · 3697 阅读 · 1 评论 -
删除第三方AAR所请求的权限
1.问题:引了第三方的AAR库要求一些权限,但我APP不需要,我想删除掉,怎么办答:很简单,只要在添加:http://schemas.android.com/tools 这个工具在manifest文件中,然后在相应的权限上增加:tools:node="remove"即可。<manifest xmlns:android="http://schemas.android.com/apk/res...原创 2019-03-22 18:48:26 · 3789 阅读 · 1 评论 -
git提交本地代码到远程新分支
有时候我们回滚项目代码后,常常将本地回滚的分支提交到远程分支,命令如下:1.建立本地仓库查看当前项目根目录中有没有 .git文件(隐藏文件),如果没有,右键->Git bash here ,然后输入命令git init建立本地仓库git init2.本地的代码提交的远程仓库上,步骤如下:1)首先要建立本地的分支,并切换到该分支上(本地建立完分支,默认是在master分支上)gi...原创 2019-05-10 16:35:49 · 38071 阅读 · 3 评论 -
android不用USB线进行adb调试
本方法通过TCPIP网络进行,也就是通过ADB来连接设备。1、首先确定你的电脑和手机连接的wife处于同一个网段,网段的查看方法不懂得请自行百度2、使用usb数据线连接设备3、查看手机的IP地址adb shell ifconfig wlan04、在dos窗口输入命令adb tcpip 5555(5555 是端口号,可以自由指定)5、断开usb数据线(此时也可以连接你需要连接的usb设...原创 2019-07-02 10:54:52 · 7846 阅读 · 2 评论 -
记录一些比较方便的Android Studio快捷键
1.代码中的大小写字母切换点击Android studio的菜单中的”Edit“的选项菜单,就会弹出了一个下拉菜单中进行选择“Toggle case”的选项菜单。快捷键crrl+shift+u...原创 2019-09-28 18:05:25 · 165 阅读 · 0 评论 -
拷贝traces文件到电脑上查看
1、adb shell2、cat /data/anr/traces.txt >/mnt/sdcard/zz.txt3、exit4、adb pull /mnt/sdcard/zz.txt d:原创 2018-11-07 15:42:27 · 625 阅读 · 0 评论 -
Android在手机的通知栏里会出现“XXX正在运行,触摸即可了解详情或停止应用”的消息如何处理
手机上莫名显示我们的app,“XXX正在运行,触摸即可了解详情或停止应用”,我去,这不是让用户知道我们在后台偷偷运行了,什么情况?排查后发现是如下代码导致:startForeground(111, new Notification());其实就是调用startForeground导致的,解决方法就是再开一个service将这个通知取消掉stopForeground(true); ...原创 2018-11-01 15:23:00 · 14314 阅读 · 2 评论 -
浅谈安卓中的MVP模式
该篇博客主要对MVP模式进行了解析,有 MVP简介,为什么使用MVP模式,MVP模式实例,MVP中的内存泄露问题几部分组成原创 2016-06-10 14:21:51 · 12666 阅读 · 7 评论 -
GreenDao 3.0解析
GreenDao 3.0简介: 在Android开发中,数据缓存的开发可能会使用到SQLite,然而在使用它的时候,我们往往要进行许多额外的工作,编写原生的SQL语句与解析查询结果等。所以适应Android的ORM框架就产生了。 目前较为流行的Android的ORM框架就是GreenDao, ORM就是关系映射(Object Relation Mapping),即对象关系映射。它的实现思想就是将原创 2016-08-06 23:56:43 · 4035 阅读 · 0 评论 -
带你解析Dagger2
1. Dagger2简介:Dagger2是Dagger1的分支,由谷歌公司接手开发,目前的版本是2.0。Dagger2是受到AutoValue项目的启发。 刚开始,Dagger2解决问题的基本思想是:利用生成和写的代码混合达到看似所有的产生和提供依赖的代码都是手写的样子。Dagger2具有以下好处: 1) 依赖的注入和配置独立于组件之外,注入的对象在一个独立、不耦合的地方初始化,这样在改变原创 2016-09-11 19:58:44 · 2245 阅读 · 0 评论 -
Android下屏幕锁屏弹窗的正确姿势
最近在做一个关于屏幕锁屏悬浮窗的功能,于是在网上搜索了很多安卓屏幕锁屏的相关资料,鉴于网上的资料比较零碎,所以我在这里进行整理总结。本文将从以下两点对屏幕锁屏进行解析: 1. 如何监听系统屏幕锁屏 2. 如何在锁屏界面弹出悬浮窗如何监听系统屏幕锁屏经过总结,监听系统的锁屏可以通过以下两种方式: 1) 代码直接判定 2) 接收广播1) 代码直接判定 代码判断方式,也有两种方法:原创 2016-09-03 11:13:07 · 14018 阅读 · 6 评论 -
Android设计模式学习之Builder模式
Android设计模式学习之观察者模式建造者模式(Builder Pattern),是创造性模式之一,Builder 模式的目的则是为了将对象的构建与展示分离。Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。模式的使用场景1.相同的方法,不同的执行顺序,产生不同的事件结果时; 2.多个部件或零件,都可以装配到一个对原创 2017-03-03 00:37:55 · 6078 阅读 · 0 评论 -
Android Bitmap 知识点梳理
在日常开发中,可以说和Bitmap每天都会见面,基本上每个应用都会直接或间接的用到,而这里面又涉及到大量的相关知识。 所以这里把Bitmap的常用知识做个梳理,限于经验和能力,不做太深入的分析。区别decodeResource()和decodeFile()这里的区别不是指方法名和参数的区别,而是对于解码后图片尺寸在处理上的区别:decodeFile()用于读取SD卡上的图,得到的是图片的原始尺寸原创 2017-05-27 00:04:55 · 3145 阅读 · 3 评论 -
Android Framework学习(十三)之启动ServiceManager
ServiceManager是Binder IPC通信过程中的守护进程,本身也是一个Binder服务,但并没有采用libbinder中的多线程模型来与Binder驱动通信,而是自行编写了binder.c直接和Binder驱动来通信,并且只有一个循环binder_loop来进行读取和处理事务,这样的好处是简单而高效。ServiceManager本身工作相对简单,其功能:查询和注册服务。 对于Binde原创 2017-05-20 11:57:13 · 1709 阅读 · 0 评论 -
Android Studio常用技巧汇总
工欲善其事必先利其器,学习开发工具的各种技巧,有利于提高我们的工作效率,本篇博客,我们就来学习Android Studio的各种技巧。Android Studio初步使用Project面板 在Android Studio最左边可以找到Project标签,这里是开发者管理项目的地方Project标签下有几个选项卡,点击右边的箭头,可以打开切换菜单 Project标签展示的是整个项目的目录结构,完全原创 2017-05-21 20:49:52 · 9473 阅读 · 8 评论 -
Android Gradle知识梳理
Android Studio已经成为现在Android 开发的主要工具,在开发过程中学习使用gradle显得格外重要,本篇博客,我们一起学习gradle打包的一些知识。Gradle 安装1.安装JDK,并配置JAVA_HOME环境变量。因为Gradle是用Groovy编写的,而Groovy基于JAVA。另外,Java版本要不小于1.5. 2.下载。地址是:http://www.gradle.org原创 2017-06-01 23:27:50 · 23957 阅读 · 2 评论 -
从TargetApi22升级到TargetApi26注意事项
最近谷歌爸爸要求在8月份,在googleplay上架的app必须升级到TargetApi26以上,作为常年使用TargetApi22的我,不得不去研究一下升级为TargetApi26的影响,主要如下:1.运行时权限如果你声明在清单文件的权限,这对用户的隐私或设备的操作不构成很大风险,系统会自动将这些权限授予您的应用程序。否则需要用户必须明确同意授予这些权限。权限危险等级分为3种,其中危险权...原创 2018-06-01 14:47:39 · 17134 阅读 · 0 评论 -
详解java虚拟机方法调用
方法调用方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程。所有方法调用中的目标方法在Class文件里面都是一个常量池中的符号引用,在类加载的解析阶段,会将其中的一部分符号引用转化为直接引用,这种解析能成立的前提是:方法在程序真正运行之前就有一个可确定的调用版本,并且这个方法的调用版本在运行期是不可改变的。 换...原创 2018-06-01 14:48:57 · 3846 阅读 · 0 评论 -
Android Studio:Unable to resolve dependency ,Could not resolve project
问题描述:在Android项目中新建了一个module,然后app依赖这个module然后报错,构建失败,信息如下:Unable to resolve dependency ,Could not resolve project xxx解决方法:项目app中buildTypes与依赖module中productFlavors不一致...原创 2018-10-30 15:25:44 · 2614 阅读 · 0 评论