当前位置:  编程技术>移动开发
本页文章导读:
    ▪童贞apk纠结过的技术点<3&gt        处女apk纠结过的技术点<3>                                                     正则表达式 android下使用正则表达式,和java没有多大的区别,搬过来直接照样,主.........
    ▪ google 地图 api申请        google map api申请 首先,我们要使用Java下的keytool工具,产生MD5密纹,这个是跟你的证书所关联的,在使用Google Map API时进行对证书校验。  Keytool这个文件一般位于%JAVA_HOME%/bin目录下,如.........
    ▪ 基于OpenGL动画设计研究与兑现       基于OpenGL动画设计研究与实现 摘 要:本文从Windows及C语言编程基础出发,重点介绍了如何使用OpenGL来实现动画 的原理与方法,并通过相关实例进行了验证。   关 键 词:OpenGL,API, 双缓冲技.........

[1]童贞apk纠结过的技术点<3&gt
    来源: 互联网  发布时间: 2014-02-18
处女apk纠结过的技术点<3>

                                                    正则表达式

android下使用正则表达式,和java没有多大的区别,搬过来直接照样,主要的难点是匹配方式比较难下手:

我这个例子是分组取值解析一个html网页,需注意:正则表达式不能识别回车 和换行 所有要用空格替换掉.

public static String getUserId(String str){
  str = str.replaceAll(String.valueOf((char) 10), " ");//替换回车
  str = str.replaceAll(String.valueOf((char) 13), " ");//替换空格
  String regEx="var\\sbasicPanel\\s=\\snew\\sExt.Panel.*?patient.userId.*?value:'(.*?)'";//.*?代表0个以上的任意字符 ,?代表截断点
  Pattern pattern=Pattern.compile(regEx);
  Matcher matcher=pattern.matcher(str);
  if(matcher.find()){
   return matcher.group(1);//取第一个匹配的 若使group()的话 那是获取所有
  }
  return null;
 }


    
[2] google 地图 api申请
    来源: 互联网  发布时间: 2014-02-18
google map api申请
首先,我们要使用Java下的keytool工具,产生MD5密纹,这个是跟你的证书所关联的,在使用Google Map API时进行对证书校验。

  Keytool这个文件一般位于%JAVA_HOME%/bin目录下,如果是Linux系统,则位于

  $JAVA_HOME/bin下的,比如windows下在C:\programs\Java\jdk1.6.0_18\bin下。

  在开发Android程序时,一般是在debug调试模式下开发的,这时SDK的build tools会自动使用debug模式下的证书对应用进行签名的,为了产生debug模式下证书的MD5密纹,我们必须找到debug模式下的keystore密钥库,在不同的操作系统中,keystore位于如下位置:

· Windows Vista: C:\Users\\.android\debug.keystore

· Windows XP: C:\Documents and Settings\\.android\debug.keystore

· OS X and Linux: ~/.android/debug.keystore

. Windows 7: C:\Users\用户名\.android\debug.keystore
接下来,我们开始使用keytool工具产生md5密纹,命令行下输入如下语句(可以在debug.keystore的目录下):
keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android

产生的MD5密纹的输出如下面:
androiddebugkey, 2011-2-18, PrivateKeyEntry,
认证指纹 (MD5): EC:E3:ED:5A:F1:AF:03:61:FE:7D:31:96:4C:FB:8B:D7

    
[3] 基于OpenGL动画设计研究与兑现
    来源: 互联网  发布时间: 2014-02-18
基于OpenGL动画设计研究与实现

摘 要:本文从Windows及C语言编程基础出发,重点介绍了如何使用OpenGL来实现动画 的原理与方法,并通过相关实例进行了验证。

  关 键 词:OpenGL,API, 双缓冲技术,渲染,计时器

  1.引 言

  OpenGL是一种相对新的工业标准,它的前身是由SGI公司为其图形工作站开发的IRIS GL,是一个工业标准的三维计算机图形软件 接口。

  OpenGL不是一种编程语言,而是一种API(Application Programming Interface,应用程序 编程接口)。作为一种API,OpenGL库遵循C调用约定,这意味着我们在C语言环境下可以很方便的调用 OpenGL库中的API函数。

   Microsoft开始把 OpenGL集成到Windows NT中,后来又把它集成到新版本的Windows 95 OEM Service Release 2中,用户既可以在 Windows 95、Windows NT环境下开发OpenGL应用程序,又可以很方便的把已有的工作站上的程序移植过来。

  2.双缓冲技术

  这项技术 能使你执行绘图代码时能够在一个屏幕之外的缓冲区内进行渲染,然后用交换命令把图形放到屏幕上。双缓冲技术有两种用途,第一个是有些复杂的图形可能要花很 长的时间绘制,而你又不希望图像绘制的所有步骤都被看见,使用双缓冲技术就可以合成一幅图像并在完成后才显示出来。用户永远不会看到不完整的图像,只有整 幅图像准备就绪之后才会把它在瞬间置于屏幕之上。双缓冲技术的第二个用处是制作动画。每一帧都在画面外的缓冲区绘制,完成之后再交换到屏幕上。

  OpenGL支持双缓冲,但是并不是真正用来交换前台缓冲区和后台缓冲区的。

  实际上,每个OpenGL支持的窗口系统都可以通过一个函数调用来实现前后缓冲区之间的交换。

  ★ 在Windows编程环境下调用下面函数:

SwapBuffers(dc);

  ★ 在C语言编程环境下调用下面函数:

glutSwapBuffers();

3.在C语言编程环境下如何实现动画
 
  在C语言编程机制下实现OpenGL动画,主要是通过调用OpenGL API函数库来实现,以下便是具体的实现代码框架。

………
………//#include调用,及变量声明,相关函数声明和函数定义。
// 主函数入口
void main(void)
{
 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
 //指定一个双缓冲窗口,这使得所有绘图代码都在画面外缓冲区进行渲染。
 glutCreateWindow("NAME");
 glutDisplayFunc(RenderScene);//调用RenderScene函数绘制当前窗口
 …………
 glutTimerFunc(33, TimerFunction, 1);//登记一个回调函数,经过设定的时间值后由GLUT调用该函数。
 …………
 glutMainLoop();//这个函数开始主GLUT事件处理循环。
}
//主函数中所调用的函数定义
………
void RenderScene(void)
{
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 //清除颜和深度缓冲区。
 glColor3ub(255,0,0);//设置当前颜色为红色。
 glPushMatrix();//将当前矩阵压入堆栈
 glRotatef(dIst, 1.0f, 1.0f, 3.0f);
 //所画物体绕经过(0,0,0),(1,1,3)的矢量逆时针旋转dIst的角度。
 glTranslatef(10.0f,0.0f, 0.0f);//将所化物体沿X轴平移10个单位。
 glutSolidSphere(8.0f, 15, 15);//画一个实心圆。
 glPopMatrix();//弹出先前所压矩阵
 dIst += 10.0f;
 if(dIst > 360.0f)
  dIst = 0.0f;
  glutSwapBuffers();//在双缓冲模式下进行一次缓冲区交换。
}

………
void TimerFunction (int value)
{
 glutPostRedisplay();//刷新当前窗口
 glutTimerFunc(33, TimerFunc, 1);
}

  上述相关代码主要完成了在屏幕上绘制一个绕经过(0,0,0),(1,1,3)的矢量逆时针旋转的小球。每隔33毫秒刷新一次。

  具体运行结果如图1所示:


图1. C语言环境下滚动的小球

  4.在Windows编程环境下如何实现动画

  在Windows编程模型 中,实现动画的方法有很多种,这里我们只介绍一种很常用的方法。

  ★ 计时器实现动画的方法

  在Windows编程模型中,用计时器方法来实现动画是很方便的。在编程环境下创建一个计时器,该计时器通知Windows想让WM_TIMER消息隔多长时间给你的窗口发送信息。Windows通过响应这个消息,就能够以一定的时间间隔完成你所要完成的任务。

LRESULT CALLBACK WndProc( HWND hWnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{ ………
………//声明变量
switch (message)// Windows的消息处理
{
case WM_CREATE:
{
hDC = GetDC(hWnd); //得到窗口的句柄。
SetDCPixelFormat(hDC);//设置像素格式。
………
SetTimer(hWnd,101,33,NULL);//该函数创建一个有指定超时值的计时器。}
break;
case WM_DESTROY:
{
KillTimer(hWnd,101);//删除计时器。
………}
break;
case WM_TIMER:
{………
InvalidateRect(hWnd,NULL,FALSE);}
break;
/* 处理计时器事件时,设置一个情况语句用来处理WM_TIMER消息,在该消息处理语句中,我们可以实现OpenGL中所要求的渲染,贴图等,也可以产生连 续更新的图像,这也是我们所要求的动画。当然,我们在该消息处理语句中,也可以不加入上述代码,只是简单的加入使应用程序 窗口无效的语句,而具体的渲染或动画产生代码则可以加入WM_PAINT消息处理程序中。*/
case WM_PAINT:
{ ………
RenderScene();//该函数产生动画。
SwapBuffers(hDC);// 缓冲区交换。
………
ValidateRect(hWnd,NULL);//使窗口生效。
}
break;
default: // Passes it on if unproccessed
return (DefWindowProc(hWnd, message, wParam, lParam));//确保每一个消息都得到处理。
}

return (0L);
}
………
void RenderScene()
{
//加入相应的动画实现代码
}
………

 具体实现结果如图2所示

/*在上述代码中,我们可以看见在WM_PAINT消息处理程序中有ValidateRect语句,该语句使窗口生效。如果我们省略该函数,那么Windows操作系统 认为窗口总处于刷新的状态,并且会时刻将WM_PAINT消息流发送给应用程序。这样我们可以看见动画的帧速率增加了很多。*/

  具体运行结果如图2所示:


图2. Windows编程环境下滚动的小方块

  5.小结

  综上所述,我们详细介绍了OpenGL动画的生成原理,以及如何在两种编程环境下实现动画的具体代码。在C语言编程机制下,我们主要使用GLUT库函数来实现动画,具体的相关函数的应用我们可以参考OpenGL库函数。

   在Windows编程机制下,读者应该具有Windows入门级编程的基本知识,而且你也应该对Windows API 函数库有相当的了解,这样你才会熟练掌握该方法。正如以前所说,在该机制下我们有多种实现动画的方法,比如:事件插入循环,使用渲染线程等等。这里我们就 不做一一介绍,具体的实现框架与上述方法类似。
双缓冲技术对于在任何一种机制下实现动画都是必要而且有效的。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3