Android ndk开发环境下利用c编写的简单平面波传播模型(带控件)

有急需做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

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值