分类目录 : Android

Android 浅谈SurfaceView

SurfaceView简介 SurfaceView在开发中可能不常用到,但是在游戏、视频或者复杂的交互特效中却独显优势了。可能有些开发者说,还有GLSurfaceView或者TextureView,这两个View不在本文探讨范围内。 SurfaceView也是继承自View,不过现在高版本上面查看源码可能是MockView,如果熟悉单元测试,可以看到这种命名方式就是测试中常用的命名方式,可以在 [...]

Android 正弦和贝塞尔曲线简单应用

本文主要就介绍如何使用正余弦或者贝塞尔曲线实现一个类似水波纹加载的动效。如果有看前面的文章,可以知道现在使用贝塞尔曲线相对比较容易,因为Android的Path中就有贝塞尔曲线的API,可以直接使用。但是,正余弦在Path中确实没有什么API供开发者直接使用,那么只能另寻其它方式了。 先上图,俗话说一图顶千言。 正弦曲线 在Path的API中有lineTo(x,y)方法,使用Math [...]

Android 浅谈贝塞尔曲线

本文也是自定义控件相关的内容,主要介绍贝塞尔曲线在Android开发中的应用。 首先通过理论介绍一下贝塞尔曲线的基本实现原理,然后借助于图片演示了一下贝塞尔曲线的实现方式。文中更多介绍的是关于二阶和三阶贝塞尔曲线的内容,如果想了解更高阶贝塞尔曲线内容,可以上网查看了解更多。 Android中提供了二阶和三阶贝塞尔曲线的API,借助于这些API可以实现许多炫酷的交互,比如加入购物车、水波纹、点赞 [...]

Android Path和PathMeasure

本文继续介绍自定义控件的相关内容,Path在一些高级特效中使用相当广泛,如一些加载特效、刮刮卡和前段时间的比较火的撕衣应用。 Path一般结合xfermode或者贝塞尔曲线做一些很炫的交互效果,有关贝塞尔曲线的内容这里暂不涉及,本文主要介绍Path的一些简单基础用法,相关的类还包括PathMeasure,需要掌握PathMeasure的两个方法:getLength()、getSegment。 [...]

Android Canvas用法之save、restore和saveLayer

本文跟上一篇博文类似,也是介绍自定义控件的相关内容,主要是onDraw()中常使用的方法。 主要涉及三个方法:save()、restore()、saveLayer(),当然了也会涉及到其它的方法,如restoreToCout()、setXfermode()。 重点需要掌握如何使用save()、restore()、saveLayer(),文中会通过示例代码以及运行后截图来对比展示,如果使用sav [...]

Android画笔Paint和FontMetrics

有关自定义控件的许多内容,一直都想抽时间梳理一下,当然了梳理的内容不会很深,都是一些比较常用的类或者方法,主要是为了后续用到时方便查阅与参考。 本文主要整理的是Paint的一些基本使用方法和技巧,其中涉及到文字绘制的,涉及绘制文字时需要知道基线的坐标与View的坐标参考点是不同的,需要知道坐标之间的转换方式。另外需要知道有哪些方式可以测量已经绘制的文字所占的宽度,包括可以精确测量的方式,也有相对 [...]

浅谈ContentProvider

ContentProvider即内容提供者,它是Android系统中提供的专门用于不同应用间进行数据共享的组件。ContentProvider提供了一套标准的接口来获取及操作数据,准许开发者把自己的应用数据根据需求开放给其他应用进行增删改查,而无须担心直接开放数据库权限而带来的安全问题。系统预置了许多ContentProvider用于获取用户数据,比如消息、联系人、日程表等。 在以前介绍其它组件 [...]

浅谈MVP架构模式

MVP即Model-View-Presenter,它是在经典的MVC(Model-View-Controller)架构基础上延伸出来的一种架构模式。Google官方也给出了一个简单的MVP示例。 MVC与MVP MVP和MVC有很多共性,Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理。 模型关系图如下: Model:定义数据的格式,这一点与 [...]

JNI编程笔记四

本文重点介绍JNI字符串部分操作,由于字符串也是对象类型,所以字符串的操作与基本数据类型是有差异的。前面介绍了JNI在操作对象类型时,必须借助于相应的函数,JNI也提供了不同的字符串操作函数。由于不同编程语言之间底层字符串存储格式不同,所以在C与Java之间操作字符串时,如果包含了中文编码,而又没有做特殊处理,直接使用JNI提供的字符串函数,这时候容易出现中文的乱码问题,那么如何解决乱码问题呢? [...]

JNI编程笔记三

在使用JNI时最重要的是Java与C/C++如何传递数据,以及数据类型之间如何映射。本文重点需要了解的是JNI中类型和签名描述符的表示方式,以及它们与Java中数据类型的对应关系。要求可以借助Java虚拟机命令生成JNI签名。最后,列举了一些一般性示例,通过示例演示了如何在Java和C之间进行数据交互,例如基本数据类型之间和数组类型之间。 由于JNI在使用C/C++与Java交互时很相似,所以后 [...]

JNI编程笔记二

在上一篇文章中着重介绍了JNI编程的书写步骤,借助于所建议的操作步骤,我们实现了一个简单的JNI调用示例。今天继续JNI介绍,重点包括JNIEnv在C/C++中的实现方式,使用关键字JNIEXPORT、JNICALL以及extern "C"语法的目的,然后是JNI函数名称的命名规范,最后是JNI中的数据类型,包括基本数据类和引用数据类型。 JNIEnv简绍 在对JNIEnv分析之前,这里先介绍 [...]

JNI编程笔记一

JNI即Java Native Interface,它允许Java与其它计算机语言的代码进行交互。在这里,我们可以简单的理解为JNI就是为了实现和C或者C++交互而存在的。 一般我们称Java中与C或者C++交互的方法为本地方法,每一个本地方法前面都有一个native的修饰符,并且方法不需要在Java层实现,只需要进行方法声明即可。本地方法与抽象方法很相似,不同的地方在于将abstract替 [...]

JNI之C++语言四

这是在JNI之前的最后一篇关于基础知识介绍的博客,从下篇开始就可以正式进入JNI的介绍篇章了。本文介绍C++中剩余的部分点,主要包括C++中的四种显式类型转换符、运算符重载以及模板。显示类型转换符以及模板是我们需要着重理解的部分,特别是模板部分,它跟Java中泛型机制很相似,在C++中也应用场景也非常多。 类型转换 在Java中如果高数据类型向低数据类型转换需要进行强制转换,,如double类 [...]

JNI之C++语言三

在上文介绍了面向对象的部分特性,如类的定义和对象的创建,包括常用的构造函数、析构函数以及复制构造函数的使用。本文继续介绍面向对象的其它特性,包括单继承多继承以及如何解决多继承中的二义性,虚函数的使用和多态的实现,友元函数和友元类的使用。 上述特性涉及到friend和virtual两个关键字的使用,friend是在使用友元时使用,而virtual关键字在定义抽象类和实现时多态时使用。 友元函数和 [...]

JNI之C++语言二

在上一篇博文JNI之C++语言一中介绍了C++中一些与C有差异或者特有的部分,但是还没有涉及到面向对象的一些特性 。在接下来的两篇博文中主要介绍C++面向对象的一些特性,限于篇幅的关系,本文主要介绍类的定义与访问控制,对象的创建和this指针,构造函数初始化列表,静态成员的初始化,构造函数、析构函数和复制构造函数的定义、作用以及执行时机。有关继承、友元、多态、虚函数等特性下篇博文继续。 类 [...]
共 7 页 1 2 3 4 5 6 7