当前位置:  编程技术>移动开发
本页文章导读:
    ▪3D - 建立3D界面(上)        3D - 建立3D界面(下) Phone开发 - 3D - 建立3D界面(下)      前面主要写了iPhone开发的一些基本知识,有iPhone设备的介绍,iPhoneSDK开发的流程和文件的组成等,下面就据上部分介绍EAGL文件的内容:EAGLView.........
    ▪ 自各儿设置包的信息方便更新以及alarm的使用启动服务        自己设置包的信息方便更新以及alarm的使用启动服务 <manifest xmlns:android="http://schemas.android.com/apk/res/android"   package="org.moo.android.myApp"   android:versionCode="12"   android:versionName="1.2.37"> try {.........
    ▪ TextView字体渐渐变淡点以及程序特定listView一个item以及 背景透明       TextView字体逐渐变淡点以及程序特定listView一个item以及 背景透明 android:fadingEdge="horizontal" android:scrollHorizontally="true"    ListView.setSelection()   <resources>    <style name="Theme" parent="android:The.........

[1]3D - 建立3D界面(上)
    来源: 互联网  发布时间: 2014-02-18
3D - 建立3D界面(下)
Phone开发 - 3D - 建立3D界面(下)
     前面主要写了iPhone开发的一些基本知识,有iPhone设备的介绍,iPhoneSDK开发的流程和文件的组成等,下面就据上部分介绍EAGL文件的内容:EAGLView.h和EAGLView.m文件.
     EAGLView类的主要功能是完成UIView到EAGL的3D接口,并且渲染一个旋转的彩色矩形.
首先完成3D接口必须导入OpenGLES.framework,
#import <OpenGLES/EAGL.h>
#import <OpenGLES/ES1/gl.h>
#import <OpenGLES/ES1/glext.h>和
#import <OpenGLES/EAGLDrawable.h>   
#import <QuartzCore/QuartzCore.h>

     然后必须重载以下函数:


    + (Class)layerClass;

 

    - (void)layoutSubviews;

 

     下面是函数内容:

 

// You must implement this
+ (Class)layerClass {
return [CAEAGLLayer class];
}
- (void)layoutSubviews {
[EAGLContext setCurrentContext:context];
[self destroyFramebuffer];
[self createFramebuffer];
[self drawView];
}
     另外还使用到了两重要函数:

    - (BOOL) createFramebuffer;// 创建桢缓冲区

    - (void) destroyFramebuffer;// 销毁桢缓冲区


         下面是函数内容:

- (BOOL)createFramebuffer {
glGenFramebuffersOES(1, &viewFramebuffer);
glGenRenderbuffersOES(1, &viewRenderbuffer);

glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, viewRenderbuffer);

glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);

if (USE_DEPTH_BUFFER) {
glGenRenderbuffersOES(1, &depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
}

if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) {
NSLog(@"failed to make complete framebuffer object %x", glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES));
return NO;
}

return YES;
}

- (void)destroyFramebuffer {
glDeleteFramebuffersOES(1, &viewFramebuffer);
viewFramebuffer = 0;
glDeleteRenderbuffersOES(1, &viewRenderbuffer);
viewRenderbuffer = 0;

if(depthRenderbuffer) {
glDeleteRenderbuffersOES(1, &depthRenderbuffer);
depthRenderbuffer = 0;
}
}

另外,我们还忘了初始化是怎么弄的,EAGLView文件内容是存在了nib文件里面,所以我们用:initWithCode初始化如下:

//The GL view is stored in the nib file. When it's unarchived it's sent -initWithCoder:

- (id)initWithCoder:(NSCoder*)coder {

if ((self = [super initWithCoder:coder])) { // 重载

// Get the layer

CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;

 

eaglLayer.opaque = YES; // 显示设置不透明

// 属性:(缓存颜色格式:kEAGLColorFormatRGBA8)

eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:

  [NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];

// 调用initWithAPI初始化 EAGLContext *context;

context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];

// 设为当前画布

if (!context || ![EAGLContext setCurrentContext:context]) {

[self release];

return nil;

}

// 时间间隔

animationInterval = 1.0 / 60.0;

}

return self;

}

 

最终,我们要描绘一个彩色的方块:

使用到函数 : - (void)drawView;

 

- (void)drawView {

// Replace the implementation of this method to do your own custom drawing

const GLfloat squareVertices[] = { //顶点数据

-0.5f, -0.5f,

0.5f,  -0.5f,

-0.5f,  0.5f,

0.5f,   0.5f,

};

const GLubyte squareColors[] = { // 颜色数据

255, 255,   0, 255,

0,   255, 255, 255,

0,     0,   0,   0,

255,   0, 255, 255,

};

// 设为当前画布

[EAGLContext setCurrentContext:context];

// 绑定桢缓冲区

glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);

// 设置视图窗口大小

glViewport(0, 0, backingWidth, backingHeight);

// 投影变换

glMatrixMode(GL_PROJECTION);

glLoadIdentity(); // 设置为单位矩阵

glOrthof(-1.0f, 1.0f, -1.5f, 1.5f, -1.0f, 1.0f); //正投影,创建一个正交平行的可视空间

glMatrixMode(GL_MODELVIEW); // 模型变换

glRotatef(3.0f, 0.0f, 0.0f, 1.0f); // 围绕x轴旋转

 

glClearColor(0.5f, 0.5f, 0.5f, 1.0f); // 清屏颜色

glClear(GL_COLOR_BUFFER_BIT); // 清除颜色缓冲区

 

glVertexPointer(2, GL_FLOAT, 0, squareVertices); // 指定顶点数据指针

glEnableClientState(GL_VERTEX_ARRAY); // 开启顶点数组

glColorPointer(4, GL_UNSIGNED_BYTE, 0, squareColors); // 指定颜色数据数组指针

glEnableClientState(GL_COLOR_ARRAY); // 开启颜色数组

 

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); // 解引用一个数组元素序列,描绘

 

// 绑定到渲染缓冲区

glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);

[context presentRenderbuffer:GL_RENDERBUFFER_OES]; // 渲染到设备

}

 

到此从建立接口到显示就这样完成了,另外在动态渲染的时候用到了一个定时器NSTimer,以下是它的方法:(这里不详细介绍)

- (void)startAnimation {

self.animationTimer = [NSTimer scheduledTimerWithTimeInterval:animationInterval target:self selector:@selector(drawView) userInfo:nil repeats:YES];

}

- (void)stopAnimation {

self.animationTimer = nil;

}

- (void)setAnimationTimer:(NSTimer *)newTimer {

[animationTimer invalidate];

animationTimer = newTimer;

}

- (void)setAnimationInterval:(NSTimeInterval)interval {

 

animationInterval = interval;

if (animationTimer) {

[self stopAnimation];

[self startAnimation];

}

}

 

在以后文章里面会建立一个EAGLView类,它的功能只是建立UIView到EAGL的接口,所以以后需要3D视图的类都可以通过继承它来完成,就像一个接口一样使用,这次就写到这.有的地方还不够详细,以后碰到了再介绍...(待续)

 


    
[2] 自各儿设置包的信息方便更新以及alarm的使用启动服务
    来源: 互联网  发布时间: 2014-02-18
自己设置包的信息方便更新以及alarm的使用启动服务

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  package="org.moo.android.myApp" 
  android:versionCode="12" 
  android:versionName="1.2.37"> 
try 

    PackageManager manager = context.getPackageManager(); 
    PackageInfo info = manager.getPackageInfo("org.moo.android.myApp", 0); 
    int code = info.versionCode; 
    String name = info.versionName; 
 
    // Compare with values on the server to see if there is a new version 

catch(NameNotFoundException nnf) 

    nnf.printStackTrace(); 

2.

final Intent intent = new Intent(context, YourService.class); 
final PendingIntent pending = PendingIntent.getService(context, 0, intent, 0); 
final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
alarm.cancel(pending); 
long interval = 30000;//milliseconds 
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),interval, pending); 


    
[3] TextView字体渐渐变淡点以及程序特定listView一个item以及 背景透明
    来源: 互联网  发布时间: 2014-02-18
TextView字体逐渐变淡点以及程序特定listView一个item以及 背景透明

android:fadingEdge="horizontal" 
android:scrollHorizontally="true" 

 

ListView.setSelection()

 

<resources> 
 
  <style name="Theme" parent="android:Theme" /> 
 
  <style name="Theme.Transparent"> 
      <item name="android:windowBackground">@drawable/transparent_background</item> 

<item name="android:windowIsTranslucent">true</item>
  </style> 
 
  <drawable name="transparent_background">#00000000</drawable> 
 
</resources> 
<activity android:name=".Controlls" 
              android:label="Controlls" 
              android:theme="@style/Theme.Transparent"> 

1 楼 bnb7xi 2011-08-01  
没看懂。楼主能不能稍微解释下。。或者梳理下。

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
IT科技资讯 iis7站长之家
▪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