自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

android的博客

一条走不完的路......

原创 adb命令大全

设备连接操作:adb关闭:adb kill-serveradb开启:adb start-serveradb设备查看:adb devicesadb查看手机网络adb shell ifconfig wlan0从电脑上传文件到手机上:adb push /Users/caochang/apk/BBox.apk /sdcard/xbd/BBox.apk从手机上发送文件到电脑上:adb pull /sdcard/xbd/BBox.apk /Users/caochang/a

2020-06-03 15:10:23 73

转载 动画库 Lottie 的使用

本文主要介绍动画开源库 Lottie 在 Android 中的使用。前言在日常APP开发中,为了提升用户感官舒适度等原因,我们会在APP中加入适量动画。而传统手写动画方式往往存在诸多问题: 动画复杂而实现困难 图片素材占用体积过大 不同Native平台都需各自实现,开发成本高 不同Native平台实现的最终效果不一致 后期视觉联调差异化大...

2020-04-24 19:22:31 163

转载 LiveData && ViewModel 使用详解

什么是 LiveDataLiveData 是一个可观测的数据持有类,但是不同于通常的被观察者,LiveData 具有生命周期感知能力。通俗点说,LiveData 就是具有 “Live” 能力的 “Data” 持有类。当它所持有的数据发生改变的时候,并且 Lifecycle 对象(比如 Activity 或者 Fragment 等)处于活跃状态(STARTED 或者 RESUMED),LiveD...

2020-03-13 14:11:26 138

原创 android CMake开发

环境需求要进行jni开发,AS需要以下环境:方式一、在工程创建的时候添加首先使用AS(3.0)新建一个JniTest工程在创建工程的过程中就有是否支持jni调用的选项当你把这个选项勾选上后,你会发现项目的App模块下自动就把cmake相关的内容配置好了,我们来看看与无jni调用的工程有什么不同。首先,app目录下多了CMakeLists.txt文件,内容如下:# F...

2019-11-13 15:08:44 61

原创 activity在屏幕旋转时的生命周期

************横竖屏切换不配置*************07-13 15:30:42.459 3220-3220/fhk.com.mytest E/lifeCycle: onCreate07-13 15:30:42.461 3220-3220/fhk.com.mytest E/lifeCycle: onStart07-13 15:30:42.463 3220-3220/fhk.co...

2019-07-13 15:58:31 256

转载 Android自定义View全解

目录目录.png1. 自定义View基础1.1 分类自定义View的实现方式有以下几种类型 定义 自定义组合控件 多个控件组合成为一个新的控件,方便多处复用 继承系统View控件 继承自TextView等系统控件,在系统控件的基础功能上进行扩展 继承View 不复用系统控件逻辑,继承View进行功能定义 继承系统ViewGroup ...

2019-07-12 18:46:57 49

转载 Android.mk 文件语法详解

0. Android.mk简介:Android.mk文件用来告知NDK Build 系统关于Source的信息。 Android.mk将是GNU Makefile的一部分,且将被Build System解析一次或多次。所以,请尽量少的在Android.mk中声明变量,也不要假定任何东西不会在解析过程中定义。Android.mk文件语法允许我们将Source打包成一个"modules"...

2019-04-23 09:46:56 65

原创 git命令合集整理

# git 切换成远程分支git clone只能clone远程库的master分支,无法clone所有分支,解决办法如下:1. 找一个干净目录,假设是git_work2. cd git_work3. git clone http://myrepo.xxx.com/project/.git ,这样在git_work目录下得到一个project子目录4. cd project5. git ...

2019-04-19 09:27:08 102

转载 图解四种启动模式 及 实际应用场景解说

在一个项目中会包括着多个Activity,系统中使用任务栈来存储创建的Activity实例,任务栈是一种“后进先出”的栈结构。举个栗子,若我们多次启动同一个Activity。系统会创建多个实例依次放入任务栈中。当按back键返回时,每按一次,一个Activity出栈,直到栈空为止。当栈中无不论什么Activity。系统就会回收此任务栈。上面这个样例中的Activity并没有设置启动模式,你会发...

2019-04-19 09:06:56 468

转载 git 切换成远程分支

git clone只能clone远程库的master分支,无法clone所有分支,解决办法如下:1. 找一个干净目录,假设是git_work2. cd git_work3. git clonehttp://myrepo.xxx.com/project/.git,这样在git_work目录下得到一个project子目录4. cd project5. git branch -a,列出所有...

2019-04-12 14:15:55 2653

转载 git远程仓库回退版本

1.首先将本地仓库版本回退到自己想要的版本。git log2.回退本地版本库git reset commit_id3.将回退后的版本强制推送到远程仓库。git push -f origin master

2019-04-02 14:01:15 1823

转载 git撤销情况

1.放弃本地更改,未add,未commitgit checkout filename注:与git checkout branch 区别2.放弃已add未commit的更改git reset HEAD filename---------------只是撤销add 操作,本地修改不会丢失3.放弃已经commit的修改git reset --har...

2019-03-29 14:21:07 55

转载 Android流量统计TrafficStats类

对于Android流量统计来说在2.2版中新加入了TrafficStats类可以轻松获取,其实本身TrafficStats类也是读取Linux提供的文件对象系统类型的文本进行解析。android.net.TrafficStats类中,提供了多种静态方法,可以直接调用获取,返回类型均为 long型,如果返回等于-1代表 UNSUPPORTED 当前设备不支持统计。 1 2 ...

2019-03-26 14:46:47 281

转载 手把手教你AndroidStudio多渠道打包

最近不断有朋友向我咨询AndroidStudio多渠道的打包方法,今天整理一下之前积累的打包套路,写一篇文章,手把手的教给大家。 说到多渠道,这里不得不提一下友盟统计,友盟统计是大家日常开发中常用的渠道统计工具,而我们的打包方法就是基于友盟统计实施的。按照友盟官方文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值:<meta-data a...

2019-03-26 11:37:04 41

转载 TCP基础知识

TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下图所示两台计算机通过TCP/IP协议通讯的过程如下所示传输层及其以下的机制由内核提供,应用层由用户进程提供,应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过...

2019-03-19 17:57:55 126

转载 Android开发必备的Gradle知识

我们知道Android studio在发布之初就使用了gradle来构建和管理Android项目,所以很多人在开发Android应用的过程中或多或少都和它打过交道,今天就给大家分享下我对gradle的一些理解,以及在Android开发中使用gradle的一些经验。项目自动化构建工具的发展最早在开发的过程中是没有项目自动化构建这个东西的,每次编译项目的时候都是在命令行下对每个源文件执行编译命...

2019-03-17 19:03:34 60

转载 Android状态栏

Android 4.4 之前,Android 的状态栏是黑色背景,无法修改。Android 4.4 推出了透明状态栏的效果。Android 5.0 提供了方法可以直接修改状态栏的颜色。目录:隐藏 ActionBar 隐藏状态栏 半透明效果的状态栏(5.0 是半透明,4.4 是渐变) 透明效果状态栏 (1) 状态栏与桌面背景颜色相同 (2)状态栏与 Toolbar 背景颜色...

2019-02-28 10:09:49 101

原创 git 撤销回滚

有时候commit后发现commit信息错了或者是添加了不想commit的内容,但还没有push到远程仓库场景1:Git撤销commit消息,保留本地修改git reset --soft commit_id 场景2:Git撤销commit消息,本地不保留git reset --hard commit_idnode:(commit_id = git log查看上一个id)...

2019-02-13 17:56:54 810

转载 Android开发实践:掌握Camera的预览方向和拍照方向

Android的Camera相关应用开发中,有一个必须搞清楚的知识点,就是Camera的预览方向和拍照方向,本文就重点讨论一下这个问题。 图像的Sensor方向:手机Camera的图像数据都是来自于摄像头硬件的图像传感器(Image Sensor),这个Sensor被固定到手机之后是有一个默认的取景方向的,这个方向如下图所示,坐标原点位于手机横放时的左上角: Camera的预览...

2019-01-22 14:47:29 2318

原创 Android相机预览方向

 以前对Camera了解的不是太深入,最近有需求把人脸识别 集成到项目,必然会与Camera打交道,遇到一些坑,与大家分享一下。一、预览方向  Camera.CameraInfo info = new Camera.CameraInfo();  首先理解一下 info.orientation  官方解释官方定义:orientation表示相机图像的方向。它的值是相机图像顺时针旋转到设...

2019-01-21 11:30:12 809

转载 Android GLSurfaceView.Renderer 类 onDrawFrame 方法的刷新机制

这玩意只要不是设置渲染模式是when dirty,就会一直调用这个函数,我之前一直以为是采集到数据才会调用http://blog.waterlin.org/articles/the-principle-of-glsurfaceview-renderer-ondrawframe.html 在 Android 中,要实现动画效果,要么通过循环调用 canvas.draw 系统方法,要么通过...

2019-01-17 18:23:47 872

原创 解决小米手机缩放窗口问题

使用机型 小米手机6 版本号 V8.2.23.0.NCACNEC 复现概率 100% ROM版本 稳定版 问题描述 权限管理里面只有 悬浮窗设置,按照以前一些人说法先允许后拒绝就好了,但是这样设置后...

2019-01-15 17:56:00 1477

转载 Android App代码混淆终极解决方案

App虽然没有那么的高大上,但是代码的混淆是代表了程序员对App的责任心, 也是对App安全的一点点保证。今天我会将自己做Android混淆的过程和体会分享给大家,也避免大家少走弯路,少跳坑。本篇博客混淆基于Android Studio的IDE开发环境。其实在android Studio中做混淆,基本就是对Proguard-rules.pro文件的操作。混淆的过程也是有规律可循的。下面我将...

2019-01-14 14:42:27 1521

转载 Unable to merge dex

Unable to merge dex原因: 1、包引用重复            2、方法数超限1、打开控制面板的 gradle control ,运行 Run with --stacktrace2、run完之后,可以找到出现的原因,2.1 出现重复的包,解决方法看3、4、52.2 包的数量超过范围在build。gradle加如下代码android {    defa...

2019-01-09 11:22:15 97

转载 compileSdkVersion,minSdkVersion,targetSdkVersion还有buildToolsVersion的区别

compileSdkVersion指的是你当前android sdk的版本minSdkVersion指的是应用最低兼容的android sdk版本targetSdkVersion指的是应用向前兼容的android sdk版本buildToolsVersion指的是当前构建工具的版本minSdkVersion<=targetSdkVersion<=compileSdkVe...

2019-01-08 09:29:49 541

转载 android GLSurfaceView渲染模式

GLSurfaceView的渲染模式。OpenGl ES关于渲染方式有以下两种:RENDERMODE_CONTINUOUSLY和RENDERMODE_WHEN_DIRTY。默认渲染方式为RENDERMODE_CONTINUOUSLY,当设置为RENDERMODE_CONTINUOUSLY时渲染器会不停地渲染场景,当设置为RENDERMODE_WHEN_DIRTY时只有在创建和调用requ...

2018-12-29 15:53:34 479

转载 git删除远程分支文件

当我们错误的 把不需要版本控制的文件提交到远程分支上后,需要删除远程分支上的文件,用以下操作即可: git rm -r --cached dirname //删除远程文件夹,但保留本地文件夹 git commit -m ‘say something’ //提交操作,并添加描述 git push origin master //推送当我们需要删除暂存区或分支上的文件, 同时工作区也不需要...

2018-11-21 16:42:59 1880

转载 html基础

HTML    1、一套规则,浏览器认识的规则。    2、开发者:        学习Html规则        开发后台程序:            - 写Html文件(充当模板的作用) ******            - 数据库获取数据,然后替换到html文件的指定位置(Web框架)    3、本地测试         - 找到文件路径,直接浏览器打开        ...

2018-11-20 15:08:23 47

转载 Android的进程优先级

android对于所有进程的处理态度都是尽可能不杀死。然而,资源总共就那么多,要是对所有进程都保持宽容的话,资源总会有消耗殆尽的时候。因此,在内存不足的情况,android系统需要根据一定的策略,选择性的杀死部分进程。这个策略就是对所有的进程标记优先级,优先级低的先杀死。android将进程的优先级分为5个层次,按照优先级由高到低排列如下: 前台进程(Foreground process...

2018-09-13 09:50:08 135

转载 Android AIDL 原理解析

Android AIDL 原理解析如果去阅读Android的源代码,就会发现里面大量用到了Binder、AIDL相关知识,比如当我们去使用AMS、PMS、WMS这些核心服务,因为他们都运行在 system_server 进程,普通应用想调用他们提供的服务(例如:startActivity(),就需要AMS来实现),就必须要跨进程调用,因此,我们在阅读代码之前,必须先去尝试理解Binder、AI...

2018-09-12 16:26:44 636

转载 JNI函数签名表

2.4.3 JNI方法签名规则有了数据类型之间的对应关系,JNI就可以正确识别并转换Java类型。那JNI又是如何识别Java的方法呢?Java支持方法重载,仅靠函数名是无法唯一确定一个方法的。于是JNI提供了一套签名规则,用一个字符串来唯一确定一个方法。其规则如下:(参数1类型签名参数2类型签名……参数n类型签名)返回值类型签名以上签名字符串之间均没有空格。类型签名又有一些规...

2018-09-12 15:39:16 358

转载 git的学习汇总

GIT是什么GIT是一个免费并且开源的分布式版本控制系统,能够高速有效的处理或小或大的项目。(以上的话是自己翻译github官网)至今,自己用过了window系统的TortoiseSVN, mac系统的CornerStone,最近的大半年也在用GIT(主要管理自己的github项目)。比较下来,还是GIT优势比较明显,虽然目前为止没有用GIT开发过团队项目。GIT跨平台GIT可以在...

2018-09-07 18:05:13 254

转载 Android App压力测试(Monkey和ADB)

压力测试简介压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽。要减少用于测试的资源,可运行一个称为压力器 (stressor) 的工具。Monkey简介什么是Monkey test?...

2018-07-23 12:59:58 891

转载 GreenDao存储自定义类型对象解决方案(转)

最近公司项目选用GreenDao作为Android客户端本地数据库的对象关系映射框架。对于GreenDao虽然以往也有简单用过,但这还是笔者第一次在实际业务中使用。碰到了题目所述的两个问题,虽然在Tutorial里和百度没找到答案,但在官方issue里搜了一圈果然有方案,遂记录下来帮助更多人。综合主键需求场景:某张表里需要两个或多个column组合在一起成为一个综合主键。比如你的表里需要存储一个用...

2018-06-08 19:34:55 3076 1

转载 adapter调用notifyDataSetChanged刷新没有起作用的原因

listview列表中的数据更新后刷新是使用listview的基础,但是有时候在更新数据之后使用notifyDataSetChanged方法刷新页面的时候就出现了没反应的现象。原因是adapter会监听一个数据源,这个数据源在一开始的时候会指向一个内存,当指向此内存的数据源发生变化的时候adapter调用notifyDataSetChanged方法就可以进行刷新,但是问题就出在这里数据源往往会被移...

2018-05-29 10:53:39 2037

转载 React创建组件的三种方式及其区别

React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归;具体的三种方式:函数式定义的无状态组件es5原生方式React.createClass定义的组件es6形式的extends React.Component定义的组件虽然有三种方式可以定义react的组件,那么这三种定义组件方式有什么不同呢?或者说为什么会出现对应的定义方式呢?下面就简单介绍一下。无状态函数式组件创建无状...

2018-04-12 11:29:49 131

转载 30分钟搞定ES6常用基础知识

ES6基础智商划重点在实际开发中,ES6已经非常普及了。掌握ES6的知识变成了一种必须。尽管我们在使用时仍然需要经过babel编译。ES6彻底改变了前端的编码风格,可以说对于前端的影响非常巨大。值得高兴的是,如果你熟悉ES5,学习ES6并不需要花费太多的时间就可以掌握,因为常用的基础语法并不多,花少量的时间,就可以开始我们的ES6之旅了。这篇文章不会详细的告诉你ES6的每一个细节知识,只会根据我自...

2018-04-08 16:24:12 388

转载 【React.js 06】Redux基础知识

Redux是一个专注于状态管理的库,和React是解耦的,用Angular和Vue都可以使用Redux。其具有一个单一状态,单向数据流的特性。Redux概念redux有一个store,记录所有的state,state要改变的时候,就通知dispatch去执行action,reducer拿到state和action去生成新的state,store.subscribe根据新的state重新渲染出改变后...

2018-04-08 15:23:36 236

转载 React 入门实例教程

作者: 阮一峰日期: 2015年3月31日现在最热门的前端框架,毫无疑问是 React 。上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑。React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站。做出来以后,发...

2018-04-04 17:20:54 73

转载 使用 create-react-app 构建 react应用程序 (react-scripts)

前言:create-react-app 是一个全局的命令行工具用来创建一个新的项目react-scripts 是一个生成的项目所需要的开发依赖        一般我们开始创建react web应用程序的时候,要自己通过 npm 或者 yarn 安装项目的全部依赖,再写webpack.config.js,一系列复杂的配置,搭建好开发环境后写src源代码。现在 如果你正在搭建react运行环境,使用 ...

2018-04-04 14:08:54 731

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