10 孙群

美团 前端开发

关注前端HTML5,关注地理数据可视化,热爱移动互联网,爱开源,爱分享!

等级
TA的排名 1k+

HTML5原生WebGL开发系列教程

1. OpenGL中的坐标变换、矩阵变换2. OpenGL ES 2.0编程基础3. 原生WebGL简单Demo4. 在WebGL中使用drawElements绘图5. WebGL不同几何图形的渲染方式6. 使用自定义glTranslate与glRotate7. 原生WebGL+ArcGIS JS API绘制旋转的地球8. WebGL矩阵、Camera基础操作9. WebGL使用一张贴图纹理绘制地球

2017-05-02 12:20:56

JavaScript原型链以及ES3、ES5、ES6实现继承的不同方式

本文首发于GitHub,《JavaScript原型链以及ES3、ES5、ES6实现继承的不同方式》,欢迎关注我的GitHub。原型执行代码var o = new Object();,此时o对象内部会存储一个指针,这个指针指向了Object.prototype,当执行o.toString()等方法(或访问其他属性)时,o会首先查看自身有没有该方法或属性,如果没有的话就沿着内部存储的指针找到Object

2017-03-15 12:33:50

[GitHub开源]基于HTML5实现的轻量级Google Earth三维地图引擎,带你畅游世界

A WebGL virtual globe and map engineWebGlobe WebGlobe是基于HTML5原生WebGL实现的轻量级Google Earth三维地图引擎。GitHub:https://github.com/iSpring/WebGlobeDemo: https://ispring.github.io/WebGlobe/index.html如果觉得不

2016-09-27 12:49:11

Android源码解析Activity#setContentView()方法

在Activity初始化的过程中,会调用Activity的attach方法,在该方法中会创建一个PhoneWindow的实例,将其作为Activity的mWindow成员变量。在执行完了Activity#attach()方法之后,会执行Activity#onCreate()方法。我们在Activity#onCreate()方法中会就调用setContentView()方法,我们将一个Layout的资

2016-07-27 11:13:43

[GitHub开源]Android自定义View实现微信打飞机游戏

之前写了很多自定义View理论方面的文章,具体可以参见《Android中自定义View、ViewGroup理论基础详解》 。 理论指导实践,本博文演示了如何通过自定义View实现微信打飞机游戏。全部源码已经开源到GitHub,如果觉得不错,欢迎大家Star和Fork!GitHub: https://github.com/iSpring/GamePlane/游戏说明飞机一直发射子弹,用手指滑动可以

2016-07-24 17:26:21

Android中AIDL实现进程通信(附源码下载)

AIDL概述之前的博客《Android中通过Messenger与Service实现进程间双向通信》演示了如何通过Messenger实现与Service进行跨进程通信,即IPC。但用Messenger实现的IPC存在一点不足:Service内部维护着一个Messenger,Messenger内部又维护着一个Hanlder,当多个client向该Service发送Message时,这些Message需要

2016-07-10 15:01:10

Okhttp使用详解

在Android开发中,发送HTTP请求是很常见的。SDK中自带的HttpURLConnection虽然能基本满足需求,但是在使用上有诸多不便,为此,square公司实现了一个HTTP客户端的类库——Okhttp 。Okhttp是一个支持HTTP 和 HTTP/2 的客户端,可以在Android和Java应用程序中使用,其具有以下特点: 1. API设计轻巧,基本上通过几行代码的链式调用即可获取结

2016-06-24 13:39:46

HTTPS理论基础及其在Android中的最佳实践

我们知道,HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等敏感数据的话,会非常危险。为了解决这个问题,Netscape 公司制定了HTTPS协议,HTTPS可以将数据加密传输,也就是传输的是密文,即便黑客在传输过程中拦截到数据也无法破译,这就保证了网络通信的安全。密码学基础在正式讲解HTTPS协议之前,我们首先要知道一些密码学的知识

2016-06-09 13:05:44

Android中HttpURLConnection使用详解

认识Http协议Android中发送http网络请求是很常见的,要有GET请求和POST请求。一个完整的http请求需要经历两个过程:客户端发送请求到服务器,然后服务器将结果返回给客户端,如下图所示:客户端->服务器客户端向服务器发送请求主要包含以下信息:请求的Url地址、请求头以及可选的请求体,打开百度首页,客户端向服务器发送的信息如下所示:请求URL(RequestURL)上图中的R

2016-05-22 12:29:47

Android中自定义View、ViewGroup理论基础详解

Android自身提供了许多widgets,但是有时候这些widgets并不能满足我们的需求,这时我们就需要自定义View,本文会详细说明自定义View的各种理论基础,只有理解了这些知识,我们才能更好地实现各种功能的控件。我觉得自定义View中最重要的部分就是绘图和交互,自定义的绘图使得你的View与众不同,交互使用户可以与你的View进行交互,而绘图的前提是View的量算与布局,交互的基础是触摸事

2016-05-04 13:04:06

无需Root实现Android手机屏幕流畅投影到电脑进行演示(附软件下载)

最近要在公司的会议上演示App,需要在投影仪上显示出来给大家演示。由于投影仪不是智能投影仪,只能将App先投影到自己的笔记本上,然后再将笔记本上的内容投影到投影仪上。该App是个游戏,实时交互性比较高,之前试过一些各种手机助手,比如腾讯的应用宝、360手机助手、豌豆荚手机助手等,这些手机助手可以在电脑上显示手机屏幕,但是非常卡顿,基本没法演示游戏App。我的手机是小米Note,最开始的时候用的是An

2016-04-12 19:54:54

源码解析ListView中的RecycleBin机制

在自定义Adapter时,我们常常会重写Adapter的getView方法,该方法的签名如下所示:public abstract View getView (int position, View convertView, ViewGroup parent) 此处会传入一个convertView变量,它的值有可能是null,也有可能不是null,如果不为null,我们就可以复用该convertView

2016-04-05 23:38:57

使用详解及源码解析Android中的Adapter、BaseAdapter、ArrayAdapter、SimpleAdapter和SimpleCursorAdapter

Adapter相当于一个数据源,可以给AdapterView提供数据,并根据数据创建对应的UI,可以通过调用AdapterView的setAdapter方法使得AdapterView将Adapter作为数据源。常见的AdapterView的子类有ListView、GridView、Spinner和ExpandableListView等。本文就以ListView为例讲解各种常见的Adapter的使用。

2016-03-06 00:22:19

Android中View自定义XML属性详解以及R.attr与R.styleable的区别

为View添加自定义XML属性Android中的各种Widget都提供了很多XML属性,我们可以利用这些XML属性在layout文件中为Widget的属性赋值。如下所示:<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:t

2016-03-02 00:59:55

Android中AsyncTask使用详解

在Android中我们可以通过Thread+Handler实现多线程通信,一种经典的使用场景是:在新线程中进行耗时操作,当任务完成后通过Handler向主线程发送Message,这样主线程的Handler在收到该Message之后就可以进行更新UI的操作。上述场景中需要分别在Thread和Handler中编写代码逻辑,为了使得代码更加统一,我们可以使用AsyncTask类。AsyncTask是And

2016-02-19 18:50:44

源码解析Android中AsyncTask的工作原理

在之前的博客《Android中AsyncTask使用详解》中我们提到AsyncTask是对Thread和Handler的组合包装,本文将通过解析的方式让大家了解AsyncTask的工作原理。AsyncTask的源码链接https://github.com/android/platform_frameworks_base/blob/master/core/java/android/os/AsyncTa

2016-02-17 23:03:36

Android中Canvas绘图之Shader使用图文详解

概述我们在用Android中的Canvas绘制各种面图形时,可以通过Paint.setShader(shader)方法为画笔Paint设置shader,这样就可以绘制出多彩的图形。那么Shader是什么呢?做过GPU绘图的同学应该都知道这个词汇,Shader就是着色器的意思。我们可以这样理解,Canvas中的各种drawXXX方法定义了图形的形状,画笔中的Shader则定义了图形的着色、外观,二者结

2016-01-15 00:05:02

Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解

概述类android.graphics.PorterDuffXfermode继承自android.graphics.Xfermode。在用Android中的Canvas进行绘图时,可以通过使用PorterDuffXfermode将所绘制的图形的像素与Canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,从而更新Canvas中最终的像素颜色值,这样会创建很多有趣的效果。当使用PorterD

2016-01-11 00:05:14

Andorid中.9.png图片的使用及制作

我们有一个TextView,其里面的内容是可以通过代码动态改变的,我们想用一张图片作为TextView的背景,实现类似于手机QQ对话中的气泡文本效果。TextView定义如下:<TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_h

2016-01-06 20:23:26

图文详解Andorid中用Shape定义GradientDrawable

Android中提供了各种类型的Drawable,也可以用XML定义各种Drawable。本文重点讲述如何用XML中的shape节点定义GradientDrawable。用XML定义的drawable文件放在res/drawable目录下。用XML文件定义GradientDrawable的语法如下所示:<?xml version="1.0" encoding="utf-8"?><shape

2016-01-01 16:30:33

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!