Android ndk开发环境下利用c编写的简单平面波传播模型(带控件)
2011-05-19 19:00
477 查看
有急需做ndk开发的朋友可以看一下,自己编写的,代码有点乱没注释,但是效果还可以
有需要的可以下载源码
该程序主要利用c语言利用ndk opengl实现平面波的绘制(当然我的代码中各个参数都是相对参数)
然后再opengl场景中加入控件,有两个滑条,控制波速和波长
简单介绍下实现过程
1.控件的布局实现
我采用相对布局,opengl场景为一个布局中的view,加入代码如下:
<android.opengl.GLSurfaceView android:layout_height="320dip"
android:layout_weight="1"
android:id="@+id/glview"
android:layout_width="320dip"
android:layout_below="@id/tracking"></android.opengl.GLSurfaceView>
我设置的是正方行显示区域,这样在c语言端场景的设置就可以把它设置成方形
其他控件不再啰嗦。自己看源码。
2.滑条的时间相应
主类代码中设置滑条的对象,然后加入事件监听器,利用seekBar.getProgress()获取滑条的当前参数值
并赋给要控制改变的变量。
(本来想把这些参数传递到c端,并调用。但试了很久,无法实现)
于是在java端设置要改变的变量,通过seekbar监听器与滑条变量进行绑定。然后把这些变量添加到本地函数里边
这样,就实现了java端滑条上的变量对c语言端函数参数的改变,主要代码如下:
static float bosu;
static float bochang;
mSeekBar1 = (SeekBar) findViewById(R.id.seek1);
mSeekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch)
{
bosu=seekBar.getProgress();
mProgressText1.setText("波速当前值:"+progress);
}
public void onStartTrackingTouch(SeekBar seekBar)
{
}
//停止拖动
public void onStopTrackingTouch(SeekBar seekBar)
{
}
});
mSeekBar2=(SeekBar) findViewById(R.id.seek2);
mSeekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch)
{
bochang=0.03f*seekBar.getProgress();
mProgressText2.setText("波长当前值:"+progress);
}
public void onStartTrackingTouch(SeekBar seekBar)
{
}
//停止拖动
public void onStopTrackingTouch(SeekBar seekBar)
{
}
});
以下是本地函数:
native private void onNdkDrawFrame (float lada,float omiga);
public void onDrawFrame(GL10 gl) {
onNdkDrawFrame (bochang,bosu);
}
3.c语言端本地函数对平面波的绘制
具体代码可参见源码
效果图如下
源码链接如下:
http://download.csdn.net/source/3294485
有需要的可以下载源码
该程序主要利用c语言利用ndk opengl实现平面波的绘制(当然我的代码中各个参数都是相对参数)
然后再opengl场景中加入控件,有两个滑条,控制波速和波长
简单介绍下实现过程
1.控件的布局实现
我采用相对布局,opengl场景为一个布局中的view,加入代码如下:
<android.opengl.GLSurfaceView android:layout_height="320dip"
android:layout_weight="1"
android:id="@+id/glview"
android:layout_width="320dip"
android:layout_below="@id/tracking"></android.opengl.GLSurfaceView>
我设置的是正方行显示区域,这样在c语言端场景的设置就可以把它设置成方形
其他控件不再啰嗦。自己看源码。
2.滑条的时间相应
主类代码中设置滑条的对象,然后加入事件监听器,利用seekBar.getProgress()获取滑条的当前参数值
并赋给要控制改变的变量。
(本来想把这些参数传递到c端,并调用。但试了很久,无法实现)
于是在java端设置要改变的变量,通过seekbar监听器与滑条变量进行绑定。然后把这些变量添加到本地函数里边
这样,就实现了java端滑条上的变量对c语言端函数参数的改变,主要代码如下:
static float bosu;
static float bochang;
mSeekBar1 = (SeekBar) findViewById(R.id.seek1);
mSeekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch)
{
bosu=seekBar.getProgress();
mProgressText1.setText("波速当前值:"+progress);
}
public void onStartTrackingTouch(SeekBar seekBar)
{
}
//停止拖动
public void onStopTrackingTouch(SeekBar seekBar)
{
}
});
mSeekBar2=(SeekBar) findViewById(R.id.seek2);
mSeekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch)
{
bochang=0.03f*seekBar.getProgress();
mProgressText2.setText("波长当前值:"+progress);
}
public void onStartTrackingTouch(SeekBar seekBar)
{
}
//停止拖动
public void onStopTrackingTouch(SeekBar seekBar)
{
}
});
以下是本地函数:
native private void onNdkDrawFrame (float lada,float omiga);
public void onDrawFrame(GL10 gl) {
onNdkDrawFrame (bochang,bosu);
}
3.c语言端本地函数对平面波的绘制
具体代码可参见源码
效果图如下
源码链接如下:
http://download.csdn.net/source/3294485
相关文章推荐
- Android的NDK开发(2)——利用Android NDK编写一个简单的HelloWorld
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- Android的NDK开发(2)——利用Android NDK编写一个简单的HelloWorld
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- android Jni NDK开发环境搭建及其简单实例的编写
- Android的NDK开发(2)————利用Android NDK编写一个简单的HelloWorld
- Ubuntu 14.04上驱动开发环境配置,及最简单一个驱动编写。
- Android NDK开发的环境搭建与简单示例
- 利用ATL技术创建ActiveX控件CircleCtl 。简单介绍 VC2003 使用 ATL 开发 ActiveX 控件(转)
- 利用WCF的callback机制开发一个简单的多人游戏模型
- 利用JQuery编写自定义简单的Html控件
- 利用JQuery编写自定义简单的Html控件
- [入门教程]使用Cocos2d-html5游戏引擎编写一个简单的游戏 第一回合: 搭建开发环境
- Delphi开发环境下利用Spcomm控件实现PC机与单片机之间串口通信的方法
- 最新版Android NDK开发环境搭建以及第一个Android NDK程序(在eclipse中演示)(超简单实用)