自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 状态栏和导航栏的属性样式

状态栏和导航栏的属性样式

2023-02-02 11:02:44 296

转载 Android混淆使用详解

一、混淆的目的 一款发布到市场的软件原则上都应该做代码混淆。 通过代码混淆可以将项目中的类、方法、变量等信息进行重命名,变成一些无意义的简短名字,同时也可以移除未被使用的类、方法、变量等。所以直观的看,通过混淆可以提高程序的安全性,增加逆向工程的难度,同时也有效缩减了apk的体积。一起来get这个技能吧!二、开启混淆 在基于Android Studio项目的app module的build.gradle中有如下默认代码片段:buildTypes...

2021-06-02 15:21:39 1417

原创 理解音频焦点

Android手机支持多个应用同时播放音频。操作系统会把多个音频流混合在一起播放,但是多个应用同时播放音频,给用户带来的体验往往不佳。为了提供更友好的用户体验,Android提供了一个API,让应用程序可以共享音频焦点,旨在保证同一时段内只有一个应用可以维持音频聚焦。本系列文章旨在让您深入理解音频焦点的含义,使用方法和其对用户体验的重要性。本篇文章是该系列的第一部分,该系列三篇文章包含了:最常见的音频焦点用例和成为一个优秀的媒体事业人员的重要性(此篇文章) 其它一些能体现音频焦点对应用体...

2021-05-31 17:04:45 1079

转载 NinePatch图(9-Patch图,.9图)

一. 什么是点九图点九图其实就是安卓系统中特有的一种图片格式,为了让大家更好的记住,我们只要知道,后缀名是「.9.png」的图片,就是点九图。二. 点九图的作用是什么每个事物都有其存在的价值,所以先弄清楚点九图能为我们解决什么问题,这样后面理解起来就会容易很多。其实点九图的用处就是帮助我们拉伸切图的,比如这个切图:如果它需要纵向拉伸,直接拉会变成下面这个样子:而用了点九图就可以让切图局部拉伸,而不是整体拉伸,这样就可以把容易变形的地方保护起来:是不是拉伸的很完美...

2021-05-24 09:18:24 741

原创 Android混淆解析

一、混淆的目的 一款发布到市场的软件原则上都应该做代码混淆。 通过代码混淆可以将项目中的类、方法、变量等信息进行重命名,变成一些无意义的简短名字,同时也可以移除未被使用的类、方法、变量等。所以直观的看,通过混淆可以提高程序的安全性,增加逆向工程的难度,同时也有效缩减了apk的体积。一起来get这个技能吧!二、开启混淆 在基于Android Studio项目的app module的build.gradle中有如下默认代码片段:buildTy...

2021-05-24 09:16:49 548

原创 项目集成AspectJX及常见问题

AspectJX基于AspectJ并在此基础上扩展出来可应用于Android开发平台的AOP框架,可作用于java源码,class文件及jar包,同时支持kotlin的应用。AOP思想AOP是面向切面编程,它在我们日志系统,权限管理,事件统一回调拦截,有着较好的应用。在项目中,我们的很多的功能都分散到各个模块中,AOP的目的就是把他们集中起来放在一个统一的地方做管理。AspectJAspectJ是AOP思想的一个具体实现方案,就是这样的一个工具。使用AspectJ一般用两种方式,一种是完

2021-05-17 12:22:46 434

原创 Android下面存储相关的知识点

一篇文章搞懂android存储目录结构前言apk文件放在了内部存储目录(路径为:data/data/packagename/files)下面,无法安装,提示解析包出错。后来查询发现,安装apk是调用了PackageInstaller,没有相关权限,这个无法获取内部路径,所以会安装不了。总结一遍Android下面存储相关的知识点。存储分类对于Android存储目录,我总结成一张思维导图,上面这张图很清楚的展示了Android存储的目录,接下来我们详细分析每一个目录。内部存储..

2021-04-14 15:08:27 122

原创 git stash 使用指南

stash 一个 git 的新的堆栈区(不同于暂存区),当一个需要开发到一半没办法继续开发下去,此时要开发另外一个需求时,但你又不想用git commit将改动提交到版本库,git stash就发挥了作用。stash类似于一个栈的结构。当你用stash存起来之后,可以随意切换分支,并且可以将存在stash中的改动,恢复到任意一个分支上。说明:实际开发过程中,经常会遇到同时开发多个需求的情况。可以用 git stash 堆栈来解决这个问题。当然,如果你对 git stash 掌握不好,也可..

2021-04-14 13:17:04 167

原创 配置 gitlab 的 SSH key

SSH key允许你用 SSH协议来访gitlab上的代码 首先要判断你有没有 SSH key pair 执行以下命令: cat~/.ssh/id_rsa.pub 如果输出以下结果说明你还没有 SSH key pair, 前往步骤2 cat: /root/.ssh/id_rsa.pub: No such file or directory 如果输出以下结果说明你已经有 SSH key pair, 前往步骤3 ssh-rsa AAAAB3NzaC1yc2EAAAADAQA.

2021-04-02 13:17:13 1396

原创 Could not create task ‘:app:minifyDebugWithR8‘ Cannot query the value of this provider

一定要显示的指定build-tool版本在app下的build.gradle 中 android「buildToolsVersion "xxxx"」buildToolsVersion '31.0.0 rc2'如果是plugin 3.X以上的,不需要指定也可以,AS会自动选择最小的可用的buildTool, 如果你本地没有最小版本的BuildTool的话,就会报如下错误:这时候我们只需 手动指定版本就好了。...

2021-04-02 13:15:23 2679

原创 Android Studio 4.1.1 Mac OS 全屏导致Preferences 全部卡顿

Android Studio 4.1.1 Mac OS 全屏导致Preferences 全部卡顿解决办法:打开OS系统设置 如下图 将 首选以标签方式打开文稿 改为 永不。卡顿bug解除!

2021-04-01 17:16:30 205

原创 Thread.sleep() 和 Object.wait()的区别

sleep()是使线程暂停执行一段时间的方法。wait()也是一种使线程暂停执行的方法。例如,当线程执行wait()方法时候,会释放当前的锁,然后让出CPU,进入等待状态。并且可以调用notify()方法或者notifyAll()方法通知正在等待的其他线程。notify()方法仅唤醒一个线程(等待队列中的第一个线程)并允许他去获得锁。notifyAll()方法唤醒所有等待这个对象的线程并允许他们去竞争获得锁。具体区别如下:1)原理不同。sleep()方法是Thread类的静态方法,是线程用来控制自身..

2021-03-30 16:17:15 492

原创 CountDownLatch CyclicBarrier和 Semaphore

CountDownLatch:计数器,某个线程等待N个线程执行完毕后再继续执行,N就是对应的计数,每个执行完毕就减一,直到所有完成。可以看作是1个等多个。常用方法:public CountDownLatch(int count) { };public void await() throws InterruptedException { }; //调用await()方法的线程会被挂起,一直等待直到count值为0然后继续执行public boolean await(long timeo...

2021-01-04 12:26:42 69

原创 三种滑动方式的比较(scrollTo & view动画 & 改变布局参数)

先看scrollTo/scrollBy这种方式,它可以比较方便地实现滑动效果并且不影响内部元素地单击事件。但是它地缺点也是很显然地:它只能滑动View的内容,并不能滑动View本身。再看动画,如果通过属性动画,没有明显的缺点;如果是使用View动画,均不能改变View本身的属性。在实际使用中,如果动画元素不需要影响用户的交互,那么使用动画来做滑动是比较合适的,否则就不太合适。但是动画有一个明显的优点,那就是一些复杂的效果必须要通过动画才能实现。最后看一下改变布局这种方式,它除了使用起来麻烦外,也没有

2021-01-04 11:14:31 878

原创 Cmake使用

首先写好xxx.cpp ,写好CMakeLists.txt同级目录下创建build文件夹(用来放置cmake 和make 的产物)mkdir buildcd buildcmake ../make产生的test就是 可执行文件科普:Cmake 命令会找到同级目录下的CMakeLists.txt并执行次文件,生成相应的MakeFileMakeFileCMakeList.txt...

2020-11-18 17:57:19 59

原创 ORB_SLAM安装Pangolin步骤

在学习SLAM时时常会用到Pangolin,Pangolin是对OpenGL进行封装的轻量级的OpenGL输入/输出和视频显示的库。可以用于3D视觉和3D导航的视觉图,可以输入各种类型的视频、并且可以保留视频和输入数据用于debug。安装过程:1)依赖库安装:$sudoapt-getinstalllibglew-dev$sudoapt-getinstallcmake$sudoapt-getinstalllibboost-devlibboost-thread-...

2020-11-06 10:51:22 500

原创 compileSdk&buildTools。Gradle的关系

GradleGradle是一个依赖管理工具,也是一个编程框架。基于Groovy语言,面向Java应用为主,摒弃了基于XML的繁琐配置,采用的是一种基于Groovy的内部领域特定(DSL)语言,该工具可以完成app的编译打包等工作。默认下载目录Windows下会默认下载到如下路径:C:\Users\用户名\.gradle\wrapper\dists下载完成后,可以看到该目...

2019-10-11 12:06:33 293

转载 属性动画的监听器(取消监听器)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/pengbo6665631/article/details/99459544前言动画分为好几类,逐帧动画和补间动画就不说了,重点看一下属性动画吧ViewPropertyAnimator// 使用方法view.animate(...

2019-10-11 10:37:26 688

原创 记一个自定义View所遇到的问题

记一个自定义View所遇到的问题

2019-10-09 22:11:56 137

原创 dp转像素

安卓工程师统一用dp去适配不同手机的密度dpi,getDisplayMetrics()获取metrics;metrics.densityMI 8 dpi=440 1dp表示160ppi时的1px的长度 440/160=2.75 所以density(密度)=2.75public class Utils { public static float dpToPixel(fl...

2019-10-09 15:16:39 155

原创 检查手机是否成功root

使用 adb shell 连接手机看看能不能使用Root权限。adb -d shell 连接模拟器。(ps: -d表示外设 ;-e 表示虚拟设备)adb -d shell,如果有连接多个USB设备先用adb devices查看连接的设备的ID,再adb -d ID shell。默认情况下,连接后在命令行开头显示$,这里输入su,手机上会弹出一对话框,点允许,$如果变成#,就说明手机已经...

2019-09-10 15:15:28 612

原创 git操作

git status 查看仓库状态,显示有变更的文件git branch -a 显示(-a代表所有)本地和远程分支 当前所在分支上,它前面有个星号(*)。git checkout -b dev -t remotes/m/dev 本地创建一个dev的分支 -t 代表追踪远端remotes/m/dev 分支git branch dev2 创建一个本地分支git ch...

2019-07-09 17:52:05 122 1

转载 Git、Gerrit、Repo使用

三者各自功能git,版本管理库,在git库中没有中心服务器的概念,真正的分布式。repo,repo就是多个git库的管理工具。如果是多个git库同时管理,可以使用repo。当然使用gerrit,就必须用repo。gerrit,提交审核代码,图形化的界面,简单的操作使用三者管理代码流程repo init xxx初始化repo sync xxx同步要改动的项目在该项目下面repo sta...

2019-07-02 11:55:20 406

原创 Linux 基本指令

filename.tar.gz的解压:tar -zxvf filename.tar.gz其中zxvf含义分别如下z:   gzip          压缩格式x:   extract         解压v:  verbose        详细信息f:   file(file=archieve)    文件1. touch + akk.txt(文件名 ...

2019-06-28 11:28:55 67

原创 gradle 基本命令

1、./gradlew -v 查看当前项目所用的Gradle版本2、./gradlew clean 清除app目录下的build文件夹3、./gradlew build 编译项目并生成相应的apk文件4、./gradlew assembleDebug 编译并打Debug包5、./gradlew assembleRelease 编译并打Release的包6、./gradlew i...

2019-06-28 11:19:21 570 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除