Android 获取屏幕指定坐标的颜色

用到的API

  • MediaProjectionManager
  • MediaProjection
  • VirtualDisplay
  • ImageReader

原理:利用Android系统提供的投影功能把屏幕投影到ImageReader中,通过ImageReader获取到Bitmap,调用BitmapgetPixel(x, y)方法获取到指定坐标的颜色。

代码

创建虚拟显示器

    private static final int REQUEST_MEDIA_PROJECTION = 1;
    private MediaProjectionManager mMediaProjectionManager;
    private MediaProjection mMediaProjection;
    private VirtualDisplay mVirtualDisplay;   
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mMediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);

        assert mMediaProjectionManager != null;
        startActivityForResult(
                mMediaProjectionManager.createScreenCaptureIntent(),
                REQUEST_MEDIA_PROJECTION);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_MEDIA_PROJECTION) {
            if (resultCode != Activity.RESULT_OK) {
                Log.i(TAG, "User cancelled");
                Toast.makeText(this, "User cancelled!", Toast.LENGTH_SHORT).show();
                return;
            }

            Log.i(TAG, "Starting screen capture");

            mMediaProjection = mMediaProjectionManager.getMediaProjection(resultCode, data);
            setUpVirtualDisplay();
        }
    }

    private void setUpVirtualDisplay() {
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getRealMetrics(dm);
        ImageReader imageReader = ImageReader.newInstance(dm.widthPixels, dm.heightPixels, PixelFormat.RGBA_8888, 1);
        mMediaProjection.createVirtualDisplay("ScreenCapture",
            dm.widthPixels, dm.heightPixels, dm.densityDpi,
            DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
            imageReader.getSurface(), null, null);
        GBData.reader = imageReader;
    }

获取指定坐标的颜色

public class GBData {
    private static final String TAG = "GBData";
    static ImageReader reader;
    private static Bitmap bitmap;

    public static int getColor(int x, int y) {
        if (reader == null) {
            Log.w(TAG, "getColor: reader is null");
            return -1;
        }

        Image image = reader.acquireLatestImage();

        if (image == null) {
            if (bitmap == null) {
                Log.w(TAG, "getColor: image is null");
                return -1;
            }
            return bitmap.getPixel(x, y);
        }
        int width = image.getWidth();
        int height = image.getHeight();
        final Image.Plane[] planes = image.getPlanes();
        final ByteBuffer buffer = planes[0].getBuffer();
        int pixelStride = planes[0].getPixelStride();
        int rowStride = planes[0].getRowStride();
        int rowPadding = rowStride - pixelStride * width;
        if (bitmap == null) {
            bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
        }
        bitmap.copyPixelsFromBuffer(buffer);
        image.close();

        return bitmap.getPixel(x, y);
    }
}

在代码中使用

int color = GBData.getColor(x,y)

参考

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
内容简介   《google android sdk开发范例大全(第3版)》在上一版的基础上,以android手机应用程序开发(采用android sdk 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计能力提供了很大的帮助。    全书共分11章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及整合android与google强大的网络服务等内容。随书光盘中包括了所有范例的程序代码。    《google android sdk开发范例大全(第3版)》继承前两版由浅入深的方式,范例总数由原先的160多个增加到了200多个,在用户交互界面、手机控件、交互式通信服务、手机自助服务、娱乐多媒体等方面均增加了相应的范例来介绍新的开发技术,特别是新增加了第11章来专门介绍html5技术在android移动设备里的应用,相信当下两个热门技术的交汇会碰撞出不一样的火花。    《google android sdk开发范例大全(第3版)》内容由android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合android的初学者和android的进阶程序开发者阅读参考。 目录 《google android sdk开发范例大全(第3版)》 第1章 了解、深入、动手做 1 1.1 红透半边天的android 2 1.2 本书目的及范例涵盖范围 3 1.3 如何阅读本书 4 1.4 使用本书范例 5 1.5 参考网站 6 第2章 android初体验 7 2.1 安装android sdk与adt/ddms 8 2.2 创建第一个android项目(hello android!) 11 2.3 android应用程序架构——从此开始 15 2.4 可视化的界面开发工具 18 2.5 部署应用程序到android手机 19 第3章 用户人机界面 22 3.1 更改与显示文字标签 23 3.2 更改手机窗口画面底色 24 3.3 更改textview文字颜色 26 3.4 置换textview文字 28 3.5 取得手机屏幕大小 29 3.6 样式化的定型对象 30 .3.7 简易的按钮事件 32 3.8 手机页面的转换 34 3.9 调用另一个activity 37 3.10 不同activity之间的数据传递 41 3.11 返回数据到前一个activity 44 3.12 具有交互功能的对话框 49 3.13 置换文字颜色的机关 51 3.14 控制不同的文字字体 52 3.15 如iphone拖动相片特效 54 3.16 自制计算器 56 3.17 关于(about)程序信息 58 3.18 程序加载中,请稍候 61 3.19 全屏幕以按钮重写 63 3.20 今晚到哪儿打牙祭 64 3.21 android变脸 67 3.22 打勾显示输入的密码 69 3.23 android多语系支持 71 3.24 判断手机操作系统版本是否允许运行程序 72 3.25 两个不同的程序彼此调用 75 3.26 指定安装应用程序迁移至sd卡 78 3.27 手机动态layout主题随手势物换迁移 79 第4章 史上超豪华的手机控件 84 4.1 edittext与textview共舞 85 4.2 设计具有背景图的按钮 86 4.3 给圣诞老人的信息 88 4.4 我同意条款 90 4.5 消费券采购列表 92 4.6 向左或向右 94 4.7 专业相框设计 96 4.8 自定义下拉菜单模式 99 4.9 动态添加/删除的spinner菜单 102 4.10 心爱小宝贝相片集 104 4.11 快速地搜索手机文件引擎 107 4.12 按钮也能随单击变换 109 4.13 具自动提示功能的菜单 110 4.14 数字及模拟小时钟设计 112 4.15 动态输入日期与时间 114 4.16 猜猜红桃a在哪儿 117 4.17 后台程序运行进度提示 121 4.18 动态文字排版 124 4.19 在activity里显示列表 128 4.20 以动态列表配置选项 130 4.21 查找程序根目录下所有文件 134 4.22 加载手机磁盘里的图片文件 137 4.23 动态放大缩小imageview里的图片 139 4.24 动态旋转图片 142 4.25 猜猜我在想什么 145 4
第1章 android,后起之秀  1.1 android简介  1.2 版本分裂  1.3 谷歌的角色  1.3.1 android开源项目  1.3.2 android market  1.3.3 挑战赛、设备播种计划和谷歌i/o  1.4 android的功能和体系结构  1.4.1 内核  1.4.2 运行库和dalvik虚拟机  1.4.3 系统库  1.4.4 应用程序框架  1.5 软件开发工具包  1.6 开发人员社区  1.7 设备,设备,设备  1.7.1 硬件  1.7.2 设备的范围  1.8 所有设备之间的兼容性  1.9 不同的手机游戏  1.9.1 人手一台游戏机  1.9.2 随时上网  1.9.3 普通用户与游戏迷  1.9.4 市场很大,开发人员很少  1.10 小结 第2章 从android sdk开始  2.1 搭建开发环境  2.1.1 安装jdk  2.1.2 安装android sdk  2.1.3 安装eclipse  2.1.4 安装adt eclipse插件  2.1.5 eclipse快速浏览  2.1.6 一些实用的eclipse快捷键  2.2 android环境下的hello world  2.2.1 创建项目  2.2.2 进一步分析项目  2.2.3 编写应用程序代码  2.3 运行和调试android应用程序  2.3.1 连接设备  2.3.2 创建一个android虚拟设备  2.3.3 运行应用程序  2.3.4 调试应用程序  2.3.5 logcat和ddms  2.3.6 使用adb  2.4 小结 第3章 游戏开发基础  3.1 游戏类型  3.1.1 休闲游戏  3.1.2 益智游戏  3.1.3 动作和街机游戏  3.1.4 塔防游戏  3.1.5 创新  3.2 游戏设计:笔比代码更强大  3.2.1 游戏的核心机制  3.2.2 一个故事和一种艺术风格  3.2.3 画面和切换  3.3 代码:具体细节  3.3.1 应用程序和窗口管理  3.3.2 输入  3.3.3 文件i/o  3.3.4 音频  3.3.5 图形  3.3.6 游戏框架  3.4 小结 第4章 面向游戏开发人员的android  4.1 定义一个android应用程序:清单文件  4.1.1 [manifest]元素  4.1.2 [application]元素  4.1.3 [activity]元素  4.1.4 [uses-permission]元素  4.1.5 [uses-feature]元素  4.1.6 [uses-sdk]元素  4.1.7 10个简单步骤建立android游戏项目  4.1.8 市场过滤器  4.1.9 定义游戏图标  4.2 android api基础  4.2.1 创建测试项目  4.2.2 活动的生命周期  4.2.3 处理输入设备  4.2.4 文件处理  4.2.5 音频编程  4.2.6 播放音效  4.2.7 音乐流  4.2.8 基本图形编程  4.3 最佳实践  4.4 小结 第5章 android游戏开发框架  5.1 制定计划  5.2 androidfileio类  5.3 androidaudio、androidsound和androidmusic  5.4 androidinput和accelerometer-handler  5.4.1 accelerometerhandler:手机哪一面朝上  5.4.2 compasshandler  5.4.3 pool类:重用相当有用  5.4.4 keyboardhandler  5.4.5 触摸处理程序  5.4.6 androidinput:优秀的协调者  5.5 androidgraphics和androidpixmap  5.5.1 处理不同屏幕大小和分辨率的问题  5.5.2 androidpixmap:人物的像素  5.5.3 androidgraphics:满足绘图需求  5.5.4 androidfastrenderview  5.6 androidgame:合并所有内容  5.7 小结 第6章 mr. nom入侵android  6.1 创建资源  6.2 建立项目  6.3 mrnomgame:主要活动  6.3.1 资源:便捷的资源存储  6.3.2 设置:跟踪用户的选项设置和高分榜  6.3.3 loadingscreen:从磁盘获取资源  6.4 主菜单画面  6.5 helpscreen类  6.6 高分榜画面显示  6.6.1 渲染数字  6.6.2 画面的实现  6.7 抽象  6.7.1 抽象mr. nom的世界:模型、视图、控制器  6.7.2 gamescreen类  6.8 小结 第7章 opengl es介绍  7.1 opengl es概述以及关注它的原因  7.1.1 编程模型:一个比喻  7.1.2 投影  7.1.3 规范化设备空间和视口  7.1.4 矩阵  7.1.5 渲染管道  7.2 开始之前  7.3 glsurfaceview:从2008年开始,事情变得简单了  7.4 glgame:实现游戏接口  7.5 绘制一个红色的三角形  7.5.1 定义视口  7.5.2 定义投影矩阵  7.5.3 指定三角形  7.5.4 综合示例  7.6 指定每个顶点的颜色  7.7 纹理映射:轻松地创建壁纸  7.7.1 纹理坐标  7.7.2 上传位图  7.7.3 纹理过滤  7.7.4 释放纹理  7.7.5 有用的代码片段  7.7.6 启用纹理  7.7.7 综合示例  7.7.8 texture类  7.8 索引顶点:重用是有好处的  7.8.1 代码整合  7.8.2 vertices类  7.9 半透明混合处理  7.10 更多图元:点、线、条和扇  7.11 2d变换:操作模型视图矩阵  7.11.1 世界空间和模型空间  7.11.2 再次讨论矩阵  7.11.3 第一个使用平移的示例  7.11.4 更多的变换  7.12 性能优化  7.12.1 测量帧率  7.12.2 android 1.5平台下hero的奇特案例  7.12.3 使opengl es渲染如此慢的原因  7.12.4 移除不必要的状态改变  7.12.5 减小纹理大小意味着需要获取更少的像素  7.12.6 减少opengl es/jni方法的调用  7.12.7 绑定顶点的概念  7.12.8 写在结束之前  7.13 小结 第8章 2d游戏编程技巧  8.1 写在开始  8.2 向量  8.2.1 使用向量  8.2.2 一点三角学的知识  8.2.3 实现一个向量类  8.2.4 一个简单的用法示例  8.3 2d物理定律浅析  8.3.1 牛顿和欧拉,永远的好朋友  8.3.2 力和质量  8.3.3 理论上的运动  8.3.4 运动的实现  8.4 2d碰撞检测和对象表示  8.4.1 边界形状  8.4.2 构造边界形状  8.4.3 游戏对象的属性  8.4.4 宽阶段和窄阶段碰撞检测  8.4.5 一个详细的示例  8.5 2d照相机  8.5.1 camera2d类  8.5.2 示例  8.6 纹理图集  8.7 纹理区域、精灵和批处理:隐藏opengl es  8.7.1 textureregion类  8.7.2 spritebatcher类  8.8 精灵动画  8.8.1 animation类  8.8.2 示例  8.9 小结 第9章 super jumper:一个2dopengl es游戏  9.1 核心游戏机制  9.2 背景故事和艺术风格  9.3 画面和切换  9.4 定义游戏世界  9.5 创建资源  9.5.1 ui元素  9.5.2 使用点阵字体处理文本  9.5.3 游戏元素  9.5.4 用于救援的纹理图集  9.5.5 音乐与音效  9.6 实现super jumper  9.6.1 assets类  9.6.2 settings类  9.6.3 主活动  9.6.4 font类  9.6.5 glscreen  9.6.6 主菜单画面  9.6.7 帮助画面  9.6.8 高分画面  9.6.9 模拟类  9.6.10 游戏画面  9.6.11 worldrenderer类  9.7 是否需要优化  9.8 小结 第10章 opengl es:进入3d世界  10.1 准备工作  10.2 3d中的顶点  10.2.1 vertices3:存储3d空间位置  10.2.2 示例  10.3 透视投影:越近则越大  10.4 z-buffer:化混乱为有序  10.4.1 完善上一个例子  10.4.2 混合:身后空无一物  10.4.3 z-buffer精度与z-fighting  10.5 定义3d网格  10.5.1 立方体:3d中的“helloworld”  10.5.2 一个示例  10.6 矩阵和变换  10.6.1 矩阵堆栈  10.6.2 用矩阵堆栈实现分层系统  10.6.3 木箱太阳系的简单实例  10.7 小结 第11章 3d编程技巧  11.1 准备工作  11.2 3d中的向量  11.3 opengl es中的光照  11.3.1 光照的工作机制  11.3.2 光源  11.3.3 材质  11.3.4 opengl es中如何对光照过程进行运算:顶点法线  11.3.5 实践  11.3.6 关于opengl es中光照应用的一些建议  11.4 材质变换(mipmapping)  11.5 简单的照相机  11.5.1 第一人称照相机或欧拉照相机  11.5.2 一个欧拉照相机的示例  11.5.3 跟随照相机  11.6 加载模块  11.6.1 wavefront obj格式  11.6.2 obj加载器的实现  11.6.3 使用obj加载器  11.6.4 关于加载模型的一些建议  11.7 3d中的一些物理知识  11.8 碰撞检测与3d中的对象表达法  11.8.1 3d中的边界形状  11.8.2 边界球重叠测试  11.8.3 gameobject3d与dynamic-gameobject3d  11.9 小结 第12章 droid invaders游戏  12.1 游戏的核心机制  12.2 游戏的故事背景与艺术风格  12.3 屏幕与场景切换  12.4 定义游戏世界  12.5 创建资源  12.5.1 用户界面的资源  12.5.2 游戏资源  12.5.3 音效与音乐  12.6 开始编写代码  12.7 assets类  12.8 settings类  12.9 主活动  12.10 主菜单  12.11 游戏设置画面  12.12 模拟类  12.12.1 shield类  12.12.2 shot类  12.12.3 ship类  12.12.4 invader类  12.12.5 world类  12.13 gamescreen类  12.14 worldrender类  12.15 游戏优化  12.16 小结 第13章 发布游戏  13.1 关于测试  13.2 成为注册开发人员  13.3 给游戏的apk包签名  13.4 将游戏发布至market  13.4.1 上传资源  13.4.2 产品详情  13.4.3 发布选项  13.4.4 发布  13.4.5 市场推广  13.5 开发人员控制台  13.6 小结 第14章 进阶内容  14.1 社交网络  14.2 位置识别  14.3 多玩家功能  14.4 opengl es 2.0以及更多内容  14.5 框架及引擎  14.6 网络资源  14.7 结束语
android游戏编程入门 《Android4游戏编程入门经典》是2012年清华大学出版社出版的图书,作者是(美)策希纳(Zechner,M.),无(美)格林(Green,R.)。 第1章 Android,后起之秀 1   1.1 Android简介 1   1.2 版本分裂 3   1.3 谷歌的角色 3   1.3.1 Android开源项目 3   1.3.2 Android Market 4   1.3.3 挑战赛、设备播种计划   和谷歌I/O 4   1.4 Android的功能和体系结构 5   1.4.1 内核 6   1.4.2 运行库和Dalvik虚拟机 6   1.4.3 系统库 7   1.4.4 应用程序框架 8   1.5 软件开发工具包 8   1.6 开发人员社区 9   1.7 设备,设备,设备 9   1.7.1 硬件 9   1.7.2 设备的范围 10   1.8 所有设备之间的兼容性 15   1.9 不同的手机游戏 15   1.9.1 人手一台游戏机 16   1.9.2 随时上网 16   1.9.3 普通用户与游戏迷 17   1.9.4 市场很大,开发人员很少 17   1.10 小结 18   第2章 从Android SDK开始 19   2.1 搭建开发环境 19   2.1.1 安装JDK 20   2.1.2 安装Android SDK 20   2.1.3 安装Eclipse 21   2.1.4 安装ADT Eclipse插件 22   2.1.5 Eclipse快速浏览 23   2.1.6 一些实用的Eclipse快捷键 24   2.2 Android环境下的Hello World 25   2.2.1 创建项目 25   2.2.2 进一步分析项目 26   2.2.3 编写应用程序代码 27   2.3 运行和调试Android应用   程序 29   2.3.1 连接设备 29   2.3.2 创建一个Android虚拟   设备 29   2.3.3 运行应用程序 30   2.3.4 调试应用程序 32   2.3.5 LogCat和DDMS 34   2.3.6 使用ADB 36   2.4 小结 37   第3章 游戏开发基础 39   3.1 游戏类型 39   3.1.1 休闲游戏 40   3.1.2 益智游戏 41   3.1.3 动作和街机游戏 42   3.1.4 塔防游戏 44   3.1.5 创新 45   3.2 游戏设计:笔比代码更强大 46   3.2.1 游戏的核心机制 46   3.2.2 一个故事和一种艺术风格 47   3.2.3 画面和切换 48   3.3 代码:具体细节 52   3.3.1 应用程序和窗口管理 52   3.3.2 输入 53   3.3.3 文件I/O 56   3.3.4 音频 57   3.3.5 图形 60   3.3.6 游戏框架 69   3.4 小结 75   第4章 面向游戏开发人员的Android 77   4.1 定义一个Android应用程序:   清单文件 77   4.1.1 <manifest>元素 78   4.1.2 <application>元素 79   4.1.3 <activity>元素 80   4.1.4 <uses-permission>元素 82   4.1.5 <uses-feature>元素 83   4.1.6 <uses-sdk>元素 84   4.1.7 10个简单步骤建立Android   游戏项目 84   4.1.8 市场过滤器 86   4.1.9 定义游戏图标 87   4.2 Android API基础 87   4.2.1 创建测试项目 88   4.2.2 活动的生命周期 91   4.2.3 处理输入设备 96   4.2.4 文件处理 110   4.2.5 音频编程 116   4.2.6 播放音效 116   4.2.7 音乐流 119   4.2.8 基本图形编程 122   4.3 最佳实践 143   4.4 小结 144   第5章 Android游戏开发框架 145   5.1 制定计划 145   5.2 AndroidFileIO类 146   5.3 AndroidAudio、AndroidSound   和AndroidMusic 147   5.4 AndroidInput和Accelerometer-   Handler 152   5.4.1 AccelerometerHandler:手机   哪一面朝上 152   5.4.2 CompassHandler 153   5.4.3 Pool类:重用相当有用 154   5.4.4 KeyboardHandler 156   5.4.5 触摸处理程序 160   5.4.6 AndroidInput:优秀的   协调者 167   5.5 AndroidGraphics和   AndroidPixmap 169   5.5.1 处理不同屏幕大小和   分辨率的问题 169   5.5.2 AndroidPixmap:人物的   像素 174   5.5.3 AndroidGraphics:满足   绘图需求 174   5.5.4 AndroidFastRenderView 178   5.6 AndroidGame:合并所有   内容 180   5.7 小结 184   第6章 Mr. Nom入侵Android 185   6.1 创建资源 185   6.2 建立项目 187   6.3 MrNomGame:主要活动 187   6.3.1 资源:便捷的资源存储 188   6.3.2 设置:跟踪用户的选项设置   和高分榜 189   6.3.3 LoadingScreen:从磁盘获取   资源 191   6.4 主菜单画面 192   6.5 HelpScreen类 195   6.6 高分榜画面显示 197   6.6.1 渲染数字 198   6.6.2 画面的实现 199   6.7 抽象 201   6.7.1 抽象Mr. Nom的世界:   模型、视图、控制器 201   6.7.2 GameScreen类 211   6.8 小结 218   第7章 OpenGL ES介绍 219   7.1 OpenGL ES概述以及关注它的   原因 219   7.1.1 编程模型:一个比喻 220   7.1.2 投影 221   7.1.3 规范化设备空间和视口 223   7.1.4 矩阵 223   7.1.5 渲染管道 224   7.2 开始之前 225   7.3 GLSurfaceView:从2008年开始,   事情变得简单了 225   7.4 GLGame:实现游戏接口 228   7.5 绘制一个红色的三角形 235   7.5.1 定义视口 235   7.5.2 定义投影矩阵 235   7.5.3 指定三角形 238   7.5.4 综合示例 241   7.6 指定每个顶点的颜色 243   7.7 纹理映射:轻松地创建   壁纸 246   7.7.1 纹理坐标 247   7.7.2 上传位图 248   7.7.3 纹理过滤 249   7.7.4 释放纹理 250   7.7.5 有用的代码片段 251   7.7.6 启用纹理 251   7.7.7 综合示例 251   7.7.8 Texture类 253   7.8 索引顶点:重用是有好处的 255   7.8.1 代码整合 256   7.8.2 Vertices类 258   7.9 半透明混合处理 260   7.10 更多图元:点、线、条   和扇 263   7.11 2D变换:操作模型视图   矩阵 264   7.11.1 世界空间和模型空间 264   7.11.2 再次讨论矩阵 265   7.11.3 第一个使用平移的   示例 266   7.11.4 更多的变换 270   7.12 性能优化 273   7.12.1 测量帧率 273   7.12.2 Android 1.5平台下Hero的   奇特案例 275   7.12.3 使OpenGL ES渲染如此   慢的原因 275   7.12.4 移除不必要的状态   改变 276   7.12.5 减小纹理大小意味着需要   获取更少的像素 278   7.12.6 减少OpenGL ES/JNI方法的   调用 278   7.12.7 绑定顶点的概念 279   7.12.8 写在结束之前 282   7.13 小结 283   第8章 2D游戏编程技巧 285   8.1 写在开始 285   8.2 向量 286   8.2.1 使用向量 286   8.2.2 一点三角学的知识 288   8.2.3 实现一个向量类 289   8.2.4 一个简单的用法示例 292   8.3 2D物理定律浅析 296   8.3.1 牛顿和欧拉,永远的   好朋友 296   8.3.2 力和质量 297   8.3.3 理论上的运动 298   8.3.4 运动的实现 299   8.4 2D碰撞检测和对象表示 302   8.4.1 边界形状 303   8.4.2 构造边界形状 304   8.4.3 游戏对象的属性 306   8.4.4 宽阶段和窄阶段碰撞检测 307   8.4.5 一个详细的示例 313   8.5 2D照相机 324   8.5.1 Camera2D类 327   8.5.2 示例 328   8.6 纹理图集 329   8.7 纹理区域、精灵和批处理:   隐藏OpenGL ES 334   8.7.1 TextureRegion类 334   8.7.2 SpriteBatcher类 335   8.8 精灵动画 343   8.8.1 Animation类 344   8.8.2 示例 345   8.9 小结 348   第9章 Super Jumper:一个2D   OpenGL ES游戏 351   9.1 核心游戏机制 351   9.2 背景故事和艺术风格 352   9.3 画面和切换 352   9.4 定义游戏世界 353   9.5 创建资源 355   9.5.1 UI元素 355   9.5.2 使用点阵字体处理文本 356   9.5.3 游戏元素 358   9.5.4 用于救援的纹理图集 359   9.5.5 音乐与音效 360   9.6 实现Super Jumper 361   9.6.1 Assets类 361   9.6.2 Settings类 364   9.6.3 主活动 366   9.6.4 Font类 367   9.6.5 GLScreen 369   9.6.6 主菜单画面 369   9.6.7 帮助画面 372   9.6.8 高分画面 374   9.6.9 模拟类 377   9.6.10 游戏画面 390   9.6.11 WorldRenderer类 397   9.7 是否需要优化 401   9.8 小结 402   第10章 OpenGL ES:进入3D   世界 403   10.1 准备工作 403   10.2 3D中的顶点 404   10.2.1 Vertices3:存储3D空间   位置 404   10.2.2 示例 406   10.3 透视投影:越近则越大 409   10.4 z-buffer:化混乱为有序 411   10.4.1 完善上一个例子 412   10.4.2 混合:身后空无一物 413   10.4.3 z-buffer精度与   z-fighting 416   10.5 定义3D网格 417   10.5.1 立方体:3D中的“Hello   World” 417   10.5.2 一个示例 419   10.6 矩阵和变换 422   10.6.1 矩阵堆栈 423   10.6.2 用矩阵堆栈实现分层   系统 425   10.6.3 木箱太阳系的简单   实例 425   10.7 小结 433   第11章 3D编程技巧 435   11.1 准备工作 435   11.2 3D中的向量 436   11.3 OpenGL ES中的光照 440   11.3.1 光照的工作机制 440   11.3.2 光源 441   11.3.3 材质 442   11.3.4 OpenGL ES中如何对光照   过程进行运算:顶点   法线 442   11.3.5 实践 443   11.3.6 关于OpenGL ES中光照   应用的一些建议 456   11.4 材质变换(Mipmapping) 456   11.5 简单的照相机 460   11.5.1 第一人称照相机或欧拉   照相机 460   11.5.2 一个欧拉照相机的示例 463   11.5.3 跟随照相机 468   11.6 加载模块 470   11.6.1 Wavefront OBJ格式 470   11.6.2 OBJ加载器的实现 471   11.6.3 使用OBJ加载器 475   11.6.4 关于加载模型的一些   建议 475   11.7 3D中的一些物理知识 476   11.8 碰撞检测与3D中的对象   表达法 477   11.8.1 3D中的边界形状 477   11.8.2 边界球重叠测试 477   11.8.3 GameObject3D与Dynamic-   GameObject3D 478   11.9 小结 479   第12章 Droid Invaders游戏 481   12.1 游戏的核心机制 481   12.2 游戏的故事背景与艺术   风格 483   12.3 屏幕与场景切换 483   12.4 定义游戏世界 484   12.5 创建资源 485   12.5.1 用户界面的资源 485   12.5.2 游戏资源 486   12.5.3 音效与音乐 488   12.6 开始编写代码 488   12.7 Assets类 489   12.8 Settings类 492   12.9 主活动 493   12.10 主菜单 494   12.11 游戏设置画面 496   12.12 模拟类 499   12.12.1 Shield类 499   12.12.2 Shot类 500   12.12.3 Ship类 500   12.12.4 Invader类 502   12.12.5 World类 505   12.13 GameScreen类 510   12.14 WorldRender类 516   12.15 游戏优化 521   12.16 小结 522   第13章 发布游戏 523   13.1 关于测试 523   13.2 成为注册开发人员 524   13.3 给游戏的APK包签名 524   13.4 将游戏发布至Market 527   13.4.1 上传资源 527   13.4.2 产品详情 528   13.4.3 发布选项 528   13.4.4 发布 529   13.4.5 市场推广 529   13.5 开发人员控制台 529   13.6 小结 530   第14章 进阶内容 531   14.1 社交网络 531   14.2 位置识别 531   14.3 多玩家功能 532   14.4 OpenGL ES 2.0以及更多   内容 532   14.5 框架及引擎 532   14.6 网络资源 534   14.7 结束语 534
0、ANDROID常用类库说明 6 1、ANDROID文件系统与应用程序架构 7 1.1、ANDROID 文件系统 7 1.2、ANDROID应用程序架构 9 2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 2.1.3、Activity 的创建 16 2.1.4、Activity 的跳转(含Bundle传值) 17 2.1.5.Actvity 堆栈 18 2.1.6、Intent对象调用Activity实例 19 2.1.7、Activity透明 21 2.1.8、一次性关闭所有的Activity 22 2.1.9、PreferenceActivity 用法 22 2.1.10、Dialog风格的Activity 23 2.1.11、横竖屏切换不销毁当前Activity 23 2.2、INTENT RECEIVER 25 2.3、SERVICE 26 2.3.1、什么是Service 26 2.3.2、如何使用Service 27 2.3.3、Service的生命周期 32 2.3.4、判断服务开启状态 33 2.3.5、获取启动的服务 34 2.4、CONTENT PROVIDER 35 3、ANDROID UI LAYOUT 35 3.1、概述 35 3.2、线性布局(LINEAR LAYOUT) 36 3.3、相对布局(RELATIVE LAYOUT) 39 3.4、TABLELAYOUT 40 3.5、ABSOLUTELAYOUT 47 4、ANDROID UI 控件 48 4.1、IMAGEBUTTON 48 4.1.1、图案填充问题 48 4.2、TEXTVIEW 49 4.2.1、动态滚动 49 4.3、EDITTEXT 49 4.3.1、光标选择 49 4.4、TITLEBAR 50 4.4.1、非全屏状态下不显示title标题栏 50 4.4.2、标题栏进度指示器 50 4.4.3、titleBar 高级实现方法(更美观) 51 4.4.4、获取标题栏和状态栏高度 57 4.4.5、标题栏显示简单的进度框 57 4.5、MENU 58 4.5.1、简单的代码 58 4.5.2、menu实现的两种方法 58 4.5.3、自定义MENU背景 62 4.5.4、触发menu 64 4.5.5、Context Menu和Options Menu菜单的区别 64 4.5.6、Context menus for expandable lists 64 4.6、LISTVIEW 66 4.6.1、ListView自定义分割线 66 4.6.2、LIST例一 66 4.6.3、LIST例二 76 4.6.4、LIST例三 80 4.6.5、ListView 被选中item的背景颜色 82 4.6.6、ListView自定义背景颜色 83 4.6.7、List长按与短按消息映射 84 4.6.8、点击ListView改变背景色 87 4.6.9、自动滚动ListView 88 4.6.10、BaseExpandableListAdapter例 88 4.6.11、列表视图(List View) 96 4.6.12、NoteList 99 4.7、TAB与TABHOST 106 4.8、RATINGBAR 110 4.8.1、例一 110 4.8.2、例二 112 4.9、DATE/TIME SET 115 4.9.1、DatePicker/TimePicker 115 4.9.2、DatePickerDialog/TimePickerDialog 119 4.10、WEBVIEW 120 4.10.1、WebView的使用 120 4.11、SCROLLVIEW 121 4.11.1、ScrollView的使用 121 4.12、GRIDVIEW 124 4.12.1、GridView的使用 124 4.13、GAMEVIEW 127 4.13.1、显示到一个布局中 127 4.14、TOASTE 128 4.14.1、短时间显示 128 4.14.2、长时间显示 128 4.15、对话框 128 4.15.1、简单的对话框: 128 4.15.2、包含两个按钮的对话框 128 4.15.3、三个按钮的提示框 129 4.15.4、包含输入的dlg 131 4.15.5、圆形进度框 133 4.15.6、AlertDialog.Builder 133 4.15.7、模式对话框 134 4.16、拖动BUTTON获得位置 135 5、ANDROID UI 美化 137 5.1、简单美化BUTTON、IMAGEBUTTON、TEXTVIEW等控件 137 5.2、BUTTON美化案例☆ 139 5.3、IMAGEBUTTON 按下时的动画效果 142 5.4、滚动条显示与隐藏 143 5.5、LISTVIEW 与 SCROLLVIEW 解决办法 144 方法一:(重写ListView) 144 方法二: 150 5.6、3D魔方 151 6、ANDROID UI 动画 160 6.1、四种2D动画 160 6.1.1、透明度控制动画效果 alpha 160 6.1.2、旋转动画效果 rotate 161 6.1.3、尺寸伸缩动画效果 scale 162 6.1.4、位置转移动画效果 translate 163 6.1.5、四种动画效果的调用 164 7、异步调用 167 开辟一个线程: 167 THREAD: 168 HANDER 170 TIMER 173 ANDROID 界面刷新 174 MESSAGE HANDER 175 用法: 175 线程与子线程调用MessageHander 177 Messagehandler实例 177 8、数据存储与读取 179 1. PREFERENCES 179 2. FILES 180 3. DATABASES 180 4. NETWORK 183 5、CONTENTPROVIDER 183 6、执行SQL语句进行查询 188 用法1 188 其它: 188 详解: 189 查看SQLITE表格内容 192 9、常用功能的实现 193 9.1、获取手机型号以及系统版本号 193 9.2、更改应用程序图标 194 9.3、迎合不同的手机分辨率 194 9.4.ANDROID屏幕适应的四个原则 195 9.5、ANDROID常用单位 196 9.6、取得屏幕信息 197 9.7、横竖屏 197 9.8、程序完全全屏 200 9.8.1锁屏锁键盘 200 9.9、程序的开机启动 201 9.10、动态START页面 208 9.11、彻底退出当前程序 212 9.12、获取应用程序的名称,包名,版本号和图标 212 9.13、调用ANDROID INSTALLER 安装和卸载程序 215 9.14、后台监控应用程序包的安装&卸载 216 9.15、显示应用详细列表 224 9.16、寻找应用 224 9.17、注册一个BROADCASTRECEIVER 225 9.18、打开另一程序 225 9.19、播放默认铃声 225 9.20、设置默认来电铃声 226 9.21、位图旋转 227 9.22、手机震动控制 228 9.23、SENSOR2D感应实例 228 9.24、运用JAVA MAIL包实现发GMAIL邮件 230 9.26、ANDROID键盘响应 236 9.27、后台监听某个按键 238 9.28、VECTOR用法 239 9.29、CURSOR 242 9.30、把一个字符串写进文件 244 9.31、把文件内容读出到一个字符串 245 9.32、扫描WIFI热点演示实例教程 246 9.33、调用GOOGLE搜索 249 9.34、调用浏览器 载入某网址 249 9.35、获取 IP地址 249 9.36、从输入流中获取数据并以字节数组返回 250 9.37、通过ANDROID 客户端上传数据到服务器 251 9.38、文件下载类 255 9.39、下载文件的进度条提示 263 9.40、通过HTTPCLIENT从指定SERVER获取数据 265 9.41、通过FTP传输文件,关闭UI获得返回码 266 9.42、激活JAVASCRIPT打开内部链接 266 9.43、清空手机COOKIES 267 9.44、检查SD卡是否存在并且可以写入 267 9.45、获取SD卡的路径和存储空间 268 9.46、将程序安装到SD卡 268 9.47、创建一个SD映像 269 9.48、查看手机内存存储 269 9.49、在模拟器上调试GOOGLE MAPS 271 9.50、建立GPRS连接 273 9.51、获取手机位置 274 9.5* 获得经纬度,地名标注在地图上 274 9.52、获得两个GPS坐标之间的距离 276 9.53、通过经纬度显示地图 277 9.54、路径规划 277 9.55、将坐标传递到GOOGLE MAP并显示 277 9.56、获取本机电话号码 280 9.57、获得手机联系人 280 9.58、2.0以上版本查询联系人详细信息 282 9.59、2.0以上版本添加联系人 285 9.60、拨打电话 287 9.61、发送SMS、MMS 287 9.62、监听电话被呼叫状态 288 9.63、监听要拨打的电话(可以后台进行修改号码) 290 9.64、后台监听短信内容 291 9.65、删除最近收到的一条短信 292 9.66、调用发短信的程序 293 9.67、后台发送短信 293 9.68、调用发送彩信程序 294 9.69、发送EMAIL 294 9.70、播放多媒体 295 9.71、控制音量 296 9.72、定义CONTENTOBSERVER,监听某个数据表 302 9.73、打开照相机 303 9.74、从GALLERY选取图片 303 9.75、打开录音机 303 9.76、语音朗读 303 9.77、手机获取视频流显示在电脑上 305 9.78、蓝牙的使用 313 9.79、一个很好的加密解密字符串 316 9.80、DRAWABLE、BITMAP、BYTE[]之间的转换 318 9.81、高循环效率的代码 320 9.82、给模拟器打电话发短信 321 9.83、加快模拟器速度 321 9.83.1、模拟器 “尚未注册网络” 322 9.84、EMULATOR命令行参数 322 9.85、如何进行单元测试 323 9.86、ANDROID自动化测试初探 324 9.86.1、捕获Activity上的Element 324 9.86.2、Hierarchyviewer 捕获Element的 328 9.86.3、架构实现 330 9.86.4、模拟键盘鼠标事件(Socket+Instrumentation实现) 332 9.86.5、再述模拟键盘鼠标事件(adb shell 实现) 334 9.87、反编译APK 344 9.88、更换APK图标(签名打包) 348 9.89、利用ANDROID MARKET赚钱 363 9.90、ANDROID-MARKET 使用 365 9.91、传感器 369 9.91.1、获取手机上的传感器 369 9.91.2、 371 9.92、时间类 372 * 获得日期或时间字符串 372 * num天前的日期 373 * num天后的日期 373 * 判断 thingdate 的 dotime 天后是否在今天之后 374 * 判断testDate+testTime是否在两个时间之内 375 附录: 378 附录1、XML布局中的常用属性 378 1.通用属性 378 2.Edit Text部分属性 381 3.layout_alignParentRight android:paddingRight 384 附录2、INTENT ACTION 385 附录3、ANDROID的动作、广播、类别等标志 387 ★★★附带工具包说明 393 1.APK反编译工具.rar 393 2.APK安装工具.rar 393

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值