android
还不会飞的鸟
这个作者很懒,什么都没留下…
展开
-
Paint画笔高级应用
1.Paint常用方法// mPaint.setColor(Color.RED);// 设置颜色// mPaint.setARGB(255, 255, 255, 0); // 设置 Paint对象颜色,范围为0~255// mPaint.setAlpha(200); // 设置alpha不透明度,范围为0~255// mPaint....原创 2019-05-19 19:04:26 · 193 阅读 · 0 评论 -
Cmake语法详解
一、什么是CMake在Android Studio 2.2及以上, 构建原生库的默认工具是CMake。CMake是一个跨平台的构建工具,可以用简单的语句来描述所有平台的安装编译过程。能够输出各种各样的makefile或者project文件。CMake并不直接构建最终的软件,而是产生其他工具的脚步(如makefile),然后再依据这个工具的构建方式使用。CMake是一个比make更高级的...原创 2019-06-19 23:15:11 · 7559 阅读 · 0 评论 -
Shell语法
什么是shell?命令的集合。执行繁琐的复杂的重复操作,。SHELL语言是指UNIX操作系统的命令语言,同时又是该命令语言的解释程序的简称。SHELL作为语言来说,它既是终端上的用户与UNIX操作系统会话的语言,又可作为程序设计的语言,所以Shell是用户与系统之间的接口,而且是一种比较高级、易被用户理解和使用的程序设计语言,它为用户提供了使用方便、功能强、又容易扩充的程序设计环境。a...原创 2019-06-16 22:53:52 · 898 阅读 · 1 评论 -
CMakeList 文件
使用AS创建一个C/C++ support的项目,会默认在app/src/main 目录下生产cpp目录,里面包含CMakeLists.txt 和 native-lib.cpp.下边为CMakeLists.txt去掉英文注释格式化后的内容cmake_minimum_required(Version 3.4.1)add_library( native-lib...原创 2019-06-23 14:37:35 · 3500 阅读 · 0 评论 -
MVP思想精髓—解耦view与model
MVPPresenter是一个中介,完全隔离了View和Model, Activity 相当于 View, View可以完全不关心Model,View层和Presenter可以通过外观模式进行解耦例子定义接口1. 明确P层与 View Model的需求Presenter, 实现契约接口1.接收View层的指令,完成某个需求2.将完成...原创 2019-07-13 18:29:10 · 455 阅读 · 0 评论 -
MVP示例
1.定义契约接口2.定义Presenter Model View基类, 在Model,View, Presenter 层都是通过基类声明引用 ,避免引入大量的实例对象BaseViewBasePresenterLogin相关模块继承M V P基类ViewPersenter...原创 2019-07-14 20:47:39 · 161 阅读 · 0 评论 -
MVVM与DataBinding
MVVM是和MVC 和 MVP同样是一种架构设计思想,DataBinding是一种工具, DataBinding既可以用于MVC也可以用于MVPMVVM 更节省的设计么事实现数据的双向绑定。M V VMView 层就是一个Layout文件,ViewModel是 View层和Model层中间的桥梁。DataBinding架构会根据View Layout中的布局,自...原创 2019-07-14 21:30:48 · 697 阅读 · 0 评论 -
MVC架构在Android中的应用
MVC架构与经典的三层模式Controller是作为一个媒介,处于Model和View之间, Model和View之间有紧密的联系,耦合性偏强。在Android 中 Acitity相当于 Controller, 做的事情非常多,又要做view层的职责,又要做Model层的职责, 违反了 单一原则, 因此演变成MVP的演变。经典的三层模型,在Java后台是比较经典的三层...原创 2019-07-10 22:11:47 · 316 阅读 · 0 评论 -
android app bundle Split APKs
android app bundleSplit APKsBaseApk:该APK包含所有其他拆分APK都可以访问的代码和资源,并为您应用程序提供基本功能。当用户请求下载您的应用程序时,首先下载并安装该APK。这是因为只有BaseAPK的manifest 包含应用程序的services、content providers、premissions、platform version 和对系统特性的...原创 2019-08-27 17:25:03 · 3815 阅读 · 0 评论 -
app bundle 配置Base module
大多数应用程序项目不需要太多的努力来支持动态交付。这是因为包含应用程序基本APK的代码和资源的模块是标准的应用程序模块,在Android Studio中创建新应用程序项目时,默认情况下会得到这个模块。也就是说,将下面的app插件应用于其构建的模块。gradle文件提供应用程序基本功能的代码和资源。// The standard application plugin creates your ...原创 2019-08-27 17:26:07 · 715 阅读 · 0 评论 -
app bundle 配置 at-install delivery
动态特性模块允许您将某些特性和资源从应用程序的基本模块中分离出来,并将它们包含在应用程序包中。通过动态交付,您可以定制交付选项来控制运行Android 5.0 (API级别21)或更高版本的设备何时以及如何下载应用程序的功能。请记住,这种类型的模块化需要更多的工作,可能还需要重构应用程序的现有代码,因此请仔细考虑哪些应用程序特性将从按需提供给用户中获益最大。如果您希望随着时间的推移逐步模块...原创 2019-08-27 17:26:49 · 376 阅读 · 0 评论 -
app bundle 配置 on demand delivery
动态特性模块允许您将某些特性和资源从应用程序的基本模块中分离出来,并将它们包含在app bundle中。例如,通过动态交付,用户可以在安装了应用程序的基本APK之后按需下载和安装这些组件。 例如,考虑一个包含捕获和发送图片消息功能的文本消息app,但是只有一小部分用户发送图片消息。将图片消息作为可下载的动态特性模块包含进来可能是有意义的。这样,最初的应用程序下载对于所有用户来说都...原创 2019-08-27 17:27:25 · 687 阅读 · 0 评论 -
app bundle 配置 conditional delivery
Conditional delivery允许您设置某些设备配置要求,以便在应用程序安装期间自动下载动态功能模块。例如,您可以配置一个动态特性模块,其中包含增强现实(AR)功能,该功能仅在支持AR的设备的app安装中可用。该交付机制目前支持基于以下设备配置,在app安装时控制模块的下载:设备硬件和软件功能,包括OpenGL ES版本 用户的国家 API级别 如果设备...原创 2019-08-27 17:27:59 · 907 阅读 · 1 评论 -
C/C++基础—SO动态库与编译
1.库在windows平台和linux平台下都存在着库,andorid中也存在库库是指一个容器文件,里面装的是函数和类,由于windows和linux的平台不同(主要是编译器、汇编器和连接器的不同)因此二者库的二进制文件是不兼容的。2.库存在的意义库是别人写好的现有的,成熟的,可以复用的代码现实中每个程序都依赖很多基础的底层库,不可能每个人的代码都是从零开始的,因此库的存在...原创 2019-05-22 22:04:28 · 4054 阅读 · 0 评论 -
C/C++基础—共用体
1.共用体共用体是一个特殊的数据类型,允许在相同的内存位置存储不同数据类型。可以定义一个带有多个成员的公用体,但是任何时候只能有个成员带有值。共用体提供了一种使用相同内存位置的有效方式union Data{ int a; float f;char str[20]} data;共用体占用的内存应足够存储共用体最大的成员。例如上面的事例中,Da...原创 2019-05-22 21:44:07 · 188 阅读 · 0 评论 -
C/C++语音基础-数组和指针
1.数组、指针数据的集合,内存中是一个连续的内存区指针 指向数组的首地址通过移动指针,可以指向数组的各个元素指针 + 1,是根据当前指针类型 加 类型的大少,进行移动2.指针数组数组的每一个元素都是一个指针(指针指向不同的变量)int arr[] = { 100,200,300 }; int *p[3];//指针数组 for ...原创 2019-05-21 22:51:23 · 129 阅读 · 0 评论 -
图层混合
//1.ComposeShader //2.画笔Paint.setXfermode() //3.PorterDuffColorFilter //禁止硬件加速 setLayerType(View.LAYER_TYPE_SOFTWARE, null); setBackgroundColor(Color.GRA...原创 2019-05-19 19:32:26 · 168 阅读 · 0 评论 -
Paint 滤镜效果
LightingColorFliter /** * R' = R * mul.R / 0xff + add.R * G' = G * mul.G / 0xff + add.G * B' = B * mul.B / 0xff + add.B */ //红色去除掉// Ligh...原创 2019-05-19 19:59:34 · 176 阅读 · 0 评论 -
Canvas的使用
1.画布变化操作,对Canvas移动后,坐标系发生变化// //1,平移操作// canvas.drawRect(0,0, 400, 400, mPaint);// canvas.translate(50, 50);// mPaint.setColor(Color.GRAY);// canvas.drawRect(0...原创 2019-05-19 20:13:25 · 178 阅读 · 0 评论 -
Path以及贝塞尔曲线
1.Path路径,可用于绘制直线、曲线构成的集合图形,还可以御用根据路径绘制文字常用Api包括 移动、连线、闭合等////// mPaint.setStyle(Paint.Style.FILL); //一阶贝塞尔曲线,表示的是一条直线 mPath.moveTo(100, 70); //移动// mPath.lineT...原创 2019-05-19 20:23:34 · 780 阅读 · 0 评论 -
Path的测量PathMeasure
PathMeasure:路径测量,用来测量Path的工具类,常用API包括 Path长度的测量、Path跳转、Path片段的获取等 canvas.drawLine(0, getHeight() / 2, getWidth(), getHeight() / 2, mLinePaint); canvas.drawLine(getWidth() / 2, 0, ge...原创 2019-05-19 20:41:08 · 406 阅读 · 0 评论 -
屏幕适配—刘海屏
一、什么时候需要适配刘海屏?全屏模式,并且手机有刘海,则需要适配刘海屏。非全屏模式(有状态栏),则刘海屏的高度为状态栏高度,不需要适配。如果全屏模式,没有适配刘海屏,则系统会做特殊处理,界面在竖屏时,会向下移动,横屏时,向右移动。二、如何适配刘海屏 1.全屏模式-内容延伸到刘海// 需要在setContentView 之前执行// 隐藏标题栏reque...原创 2019-05-09 23:31:57 · 491 阅读 · 0 评论 -
ToolBar的使用以及沉浸式效果
一、ToolBar作为导航栏的优势1.toolbar使用简单,可以定制2.toolbar可复用,不需要复杂的xml3.Google官方推荐,Activity集成Toolbar二、ToolBar的使用方式1.添加Toolbar布局内添加toolbar控件2.将系统导航栏actionbar替换为toolbar// 主题设置为 NoActionBar// activi...原创 2019-05-10 01:36:24 · 443 阅读 · 0 评论 -
事件分发机制
一、事件类型当用户触摸屏幕时,将产生的触摸行为(Touch事件)MotionEvent.ACTION_DOWN 手指刚接触屏幕MotionEvent.ACTION_UP手指从屏幕离开MotionEvent.ACTION_MOVE手指在屏幕上滑动MotionEvent.ACTION_CANCEL非人为因素取消二、事件序列一次手指触摸屏幕的行为触发一系列的点击事件...原创 2019-05-15 00:16:21 · 276 阅读 · 0 评论 -
屏幕适配
一、屏幕适配的目的Android设备碎片化,导致app的界面元素在不同尺寸上显示不一致。需要让布局、布局组件、资源以及用户界面流程,匹配不同屏幕尺寸二、如何进行屏幕适配1.布局适配避免写死控件尺寸,使用wrap_content,match_parentLinerLayout :layout_weight="1"RelativeLayout : layout_center...原创 2019-05-10 22:34:34 · 86 阅读 · 0 评论 -
C/C++基础-函数
1.函数函数是一组一起执行一个任务的语句。每个C程序都至少有一个函数,即主函数main(),所有简单的程序都可以改其他额外的函数。函数的声明:return_type function_name(parameter list) { body of the function}C语音由上到下加载,函数被执行前,需要通过头文件(相当于接口,解决耦合问题)声明函数C语音以函数...原创 2019-05-20 22:33:16 · 279 阅读 · 0 评论 -
C/C++基础—内存
1.内存定义硬件角度:内存是计算机必不可少的一个组成部分,是与CPU沟通的桥梁,计算机中所有的程序都是运行在内存中的。逻辑角度:内存是一块具备随机访问能力,支持读写操作,用了存放程序及程序运行中产生的数据的区域。2.内存单位描述内存的大小位 bit 是计算机中最小的数据单位,每一个单位的状态只能是0或1字节 1Byte = 8bit 是内存基本的计量单位KB 1K...原创 2019-05-21 08:50:20 · 265 阅读 · 0 评论 -
屏幕适配—像素密度
一、像素密度像素密度指手机屏幕一点尺寸区域内像素的个数,在Android中,使用没英寸像素密度(dpi)表示手机屏幕的像素密度,dpi的换算方式为:步骤1:计算得到手机屏幕的斜角像素长度:步骤2:使用屏幕斜角像素长度去除上手机屏幕尺寸得到dpi在Android当中一般讲手机屏幕按每英寸像素密度的值分为:0~120dpi~160dpi~240dpi~320dpi~480...原创 2019-05-10 23:38:29 · 1061 阅读 · 0 评论 -
Android组件化-Gradle 语法以及配置
Gradle构建工程的出现让工程有无限可能Gradle核心是基于Groovy脚本语言,Groovy脚本语言基于Java且扩展了Java。Grale需要依赖JDK和Groovy库。和ant、maven构建有区别,Gradle是一种编程思想。第一行代码 :打印字符串printlIn("hello gradle")println "hello gradle"通过build —...原创 2019-09-08 21:13:05 · 560 阅读 · 0 评论