- 博客(28)
- 资源 (5)
- 收藏
- 关注
翻译 Android的文字渲染
一种使用OpenGL渲染文字的常用方法,是计算出一个包含了显示文字的纹理图片,这通常是使用相当复杂的打包算法来最小化纹理中的冗余部分,在创建这样的图片之前必须清楚应用运行时使用的字体,包括了字体形状,尺寸和其他的一些属性。在Android上,提前生成文字纹理图片是不太实际的,因为没有方法提前知道应用使用了哪些字体和字形,应用甚至可以在运行时加载自定义字体,这是许多限制因素中的主要一个,Android
2015-05-19 20:36:07
3261
原创 Android OpenGL ES向导学习笔记(扫盲专用)
Android 目前支持下面几个版本的OpenGL ES API :OpenGL ES 1.0 和 1.1 :Android 1.0和更高的版本支持这个API规范。OpenGL ES 2.0 : Android 2.2(API 8)和更高的版本支持这个API规范。OpenGL ES 3.0 : Android 4.3(API 18)和更高的版本支持这个API规范。OpenGL
2015-04-24 13:59:51
2383
翻译 Android OpenGL ES绘图教程之六 :响应触摸事件
使对象根据预设的程序进行运动,比如旋转三角形,可以吸引人的注意力。但是如果你想让用户同你的OpenGL ES图形进行交互会怎么样呢?使你的OpenGL ES应用程序触摸互动的关键是要扩展GLSurfaceView,复写onTouchEvent()方法,来监听touch事件。本教程展示了,如何监听透出事件,让用户旋转一个OpenGL ES对象。1. 设置一个Touch Listener
2015-04-22 23:04:14
3129
翻译 Android OpenGL ES绘图教程之五 :加入运动
在屏幕上面绘制对象是OpenGL的一个非常好的基本功能,但是你也可以在其他的Android图形框架上面实现这些功能,比如Canvas和Drawable对象。OpenGL ES提供了额外的功能在三维坐标系里移动和变换绘制的对象或者用其他特殊的方式创建复杂的用户体验。 在本教程里,通过学习如何给图形添加旋转运动,使你对OpenGL ES有更加深入的了解。 1. 旋转图形
2015-04-22 22:28:09
810
翻译 Android OpenGL ES绘图教程之四 :投影和相机视图变换
在OpenGL ES环境中,投影和相机视图可以使被绘制的对象在某种方式上看起来更像实际的物体,这个模拟实际对象的场景是通过被绘制对象坐标的数学转换实现的: 投影 - 这种调整绘制对象坐标的变换是根据GLSurfaceView显示位置的宽度和高度。没有这个计算,OpenGL ES绘制的对象就会在不同比例的view window中扭曲变形。典型的投影变换只有在OpenGL view比例
2015-04-22 18:36:09
2081
1
翻译 Android OpenGL ES绘图教程之三 : 绘制图形
在定义了将要被OpenGL绘制的形状之后,你当然想要绘制它们。使用OpenGL ES 2.0绘制图形需要的代码可能比你想象的要多,因为API提供了大量的图形渲染管道控制接口。 这一章将介绍如何使用OpenGL ES 2.0 API绘制上一章中定义的形状 1. 初始化形状 在你做任何的绘制操作之前,你都必须进行初始化和加载计划绘制的形状。除非在执行的过程中形状所
2015-04-22 16:12:57
1515
翻译 Android OpenGL ES绘图教程之二 : 定义形状
在OpenGL ES view中可以定义要绘制图形的形状,是你创建高端图形杰作的第一步。在不知道一些基础的情况下来绘制会有点棘手,比如OpenGL ES是如何定义图形对象的。 本教程解释了OpenGL ES坐标系统与Android设备屏幕的关系,如果定义基础的形状,比如三角形和四边形。 1. 定义一个三角形 OpenGL ES允许你在三维坐标系统中定义绘制对象,所以在
2015-04-22 14:39:30
1045
翻译 Android OpenGL ES绘图教程之一 : 构建OpenGL ES 环境
为了在Android应用中使用OpenGL ES绘图,首先必须要创建一个view容器。一个最简单的方法是实现GLSurfaceView和GLSurfaceView.Renderer。GLSurfaceView一个view容器,用来显示OpenGL绘制的图形,GLSurfaceView.Renderer用来控制GLSurfaceView里面图形的绘制。更多的信息,请参考 OpenGL ES 开发向导
2015-04-22 13:12:17
876
转载 用有效的网络访问来最优化下载
也许使用无线电波(wireless radio)进行传输数据会是我们app最耗电的操作之一。所以为了最小化网络连接的电量消耗,懂得连接模式(connectivity model)会如何影响底层的音频硬件设备是至关重要的。 这节课介绍了无线电波状态机(wireless radio state machine),并解释了app的connectivity model是如何与状态机进行交互的。然后会提出建
2015-04-20 15:04:08
541
转载 Graphic Architecture
Android中有几个很重要的概念Surface, SurfaceHolder, EGLSurface, SurfaceView, GLSurfaceView, SurfaceTexture, TextureView与SurfaceFlinger。这篇文章会介绍Android图形架构的基本构成以及它们是如何在程序framework与多媒体系统中运作的。核心关注点是,图形数据的buffer是
2015-04-20 10:49:30
653
转载 Android性能优化典范
2015年伊始,Google发布了关于Android性能优化典范的专题, 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个 方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的总结梳理。
2015-04-16 14:13:30
571
转载 各种排序算法的分析及java实现
各种排序算法的分析及java实现 排序一直以来都是让我很头疼的事,以前上《数据结构》打酱油去了,整个学期下来才勉强能写出个冒泡排序。由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一下。 排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为
2015-04-13 19:15:49
404
转载 JellyBean的VSync与三级buffer的入门介绍(外文翻译)
最近在研究JellyBean在Graphics上面的新改动,最吸引人的在图像的平滑上大作文章,读了一篇关于VSync和三级缓冲的外国文章,很有收获,特别翻译成中文,与大家分享。原文地址:http://www.androidpolice.com/2012/07/12/getting-to-know-android-4-1-part-3-project-butter-how-it-works-
2015-04-12 17:58:47
984
翻译 OpenGL中的Alpha测试,深度测试,模板测试,裁减测试
片断测试其实就是测试每一个像素,只有通过测试的像素才会被绘制,没有通过测试的像素则不进行绘制。OpenGL提供了多种测试操作,利用这些操作可以实现一些特殊的效果。我们在前面的课程中,曾经提到了“深度测试”的概念,它在绘制三维场景的时候特别有用。在不使用深度测试的时候,如果我们先绘制一个距离较近的物体,再绘制距离较远的物体,则距离远的物体因为后绘制,会把距离近的物体覆盖掉,这样的效果并不是我们所
2015-03-31 13:54:33
518
转载 OpenGL ES常用API
OPenGL ES常用API: glClearColor( 0.f, 0.f, 0.f, 1.f ); // 设置模式窗口的背景颜色,颜色采用的是RGBA值 glViewport( 0, 0, iScreenWidth, iScreenHeight );//设置视口的大小以及位置,视口:也就是图形最终显示到屏幕的区域,前两个参数是视口的位置,后两个参数是
2015-03-31 13:49:11
690
转载 Android中SurfaceView的使用详解
通过之前介绍的如何自定义View, 我们知道使用它可以做一些简单的动画效果。它通过不断循环的执行View.onDraw方法,每次执行都对内部显示的图形做一些调整,我们假设 onDraw方法每秒执行20次,这样就会形成一个20帧的补间动画效果。但是现实情况是你无法简单的控制View.onDraw的执行帧数,这边说的执 行帧数是指每秒View.onDraw方法被执行多少次,这是为什么呢?首先我们知
2015-03-31 12:09:53
567
翻译 Systrace
在构建功能,修复bug,整理代码之后,你应该花一些时间来关注应用的性能。应用画像素和执行操作的速度和流畅度影响了用户体验。 Android应用运行在一个共享资源的环境中,你的应用的性能会被与其交互的系统资源的效率所影响。应用也运行在一个多线程的环境中,与其它拥有线程的进程争夺资源,可能会引起很难诊断的性能问题。 Systrace工具允许你收集和审查应用和Andro
2015-03-20 17:56:04
5245
翻译 性能微优化
这篇文档主要包含一些微小优化,将这些微小优化整合起来就可以提高整个应用程序的性能,但是这些改变并不会导致显著的性能提升。选择合适的算法和数据结构应该优先级更高,但是不在本文的讨论范围之内。你应该使用本文档的提示作为通常的编程实践,你可以将这些实践融入到提高代码效率的习惯中。 写有效率的代码有两个基本的原则: 1.不要做不需要的工作 2.
2015-03-20 14:34:17
599
翻译 Android应用内存泄露分析
原文地址http://developer.android.com/tools/debugging/debugging-memory.html 因为Android是为移动设备设计的,所以我们应该一直注意应用使用了多少内存。尽管Dalvik虚拟机会进行常规的垃圾回收,这并不意味这可以忽略应用内存的分配和释放。为了提供一个稳定的用户体验,使app之间迅速的进行切换,当用户不与应用交互时应
2015-03-18 23:29:28
770
原创 Android应用内存管理
内存在任何软件开发环境中都是非常宝贵的资源,尤其是在手机操作系统中。尽管Dalvik虚拟机会通过gc来自动回收资源,但是这并不意味这你可以忽略应用内存的分配和释放,一些被引用的无用对象是不会被gc释放的。 Android没有为内存提供交换空间,但是它使用内存分页和内存映射来管理内存。这意味这任何你修改的内存,不论是分配新对象或者修改映射页,都会保留在内存中。所以唯一的释放ap
2015-03-13 11:16:00
692
原创 Gradle对多版本项目的管理
在实际工作中,我们可能会给很动客户提供apk,而不同的客户又有不同的需求,如果需求不是差别很大的话,通过Gradle来管理是非常方便的。Gradle的Android plugin提供了productFlavors方法来实现对多个项目的管理,具体实现方法为在项目Gradle脚本的android配置下加入以下代码,就加入了两个项目的版本管理,其强大的地方在于可以通过对不同flavor的sourceSe
2015-03-09 17:45:17
1420
原创 深入理解Gradle
在脚本中使用的一些方法,比如apply(),它们是从哪里来的呢?我们之前说过在Gradle中编译脚本定义了一个工程,对每一个编译的工程,Gradle会创建一个类型为Project的对象,并把这个Projcet对象与编译脚本关联起来,当编译脚本执行时,它是在配置Project对象:1.调用任何在编译脚本没有定义的方法,它都会委托给Project对象调用2.使用任何在编译脚本中没有定义的属性,
2015-03-06 10:12:58
728
原创 Gradle命令入门
当使用gradle命令行执行task时,每个task只会被执行一次,所以gradle test test和gradle test命令的执行结果是一模一样的 -x命令用来排除一些命令的执行,比如gradle build -x ext,会在编译的时候不执行ext任务,即使build task依赖ext也不会执行, 但ext所依赖的task如果被其他task依赖是会执行的。--
2015-03-05 17:10:21
934
原创 Gradle之依赖和发布(dependencies and artifacts)
定义一个外部依赖 dependencies { compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final' } 缩写形式 “group:name:version”. dependencies {
2015-03-05 15:38:34
1071
原创 Gradle之java插件入门
Gradle插件是Gradle的扩展,它对project做了一些配置,会给project添加一些已经配置好的task。Gradle自身带了一些插件,你也可以自定义插件,然后提供给别人使用。其中一个是java plugin,它为project添加了一些task来对你的代码进行编译和单元测试,还有将代码打包成jar文件。 Java plugin是基于惯例的,这意味这在plugin内部定
2015-03-05 14:48:22
1434
原创 Gradle脚本基础
Gradle中所有的东西都是基于两个概念:tasks和projects,每一个Gradle构建都是有一个或多个projects组成的。project的概念比较广泛,具体看你在Gradle中是怎么定义的,它可能代表一个jar包或者一个Web 应用,也可能代表由其他project的jar包组成的分布式zip文件。project不仅可以代表一个将要编译的东西,它还可以代表即将要完成的事情,比如部署你的应
2015-03-04 20:05:50
611
翻译 Gradle用户向导(1-2章)
Gradle是以Groovy语言为基础,面向Java应用为主,而Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,Groovy代码能够与Java代码很好地结合,也能用于扩展现有代码。Gradle对多工程的构建支持很出色,本博文翻译自Gradle官网上的用户向导,基本上是自己在在看原文过程中的理解,在此记录下来,一些不重要的部分我会跳过,由于本人接触Gradle时间不是很长,英语水平也确
2015-03-02 18:30:46
607
recyclerview.jar
2014-09-06
深入理解C指针
2014-08-04
《嗨翻C语言》
2014-08-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人