我想将用户在 android 屏幕上手绘的线条“采样”到一个数组中。x 坐标是等距的,很可能是一维数组的索引。
举个例子来说明我的意思,如果用户绘制一个近似正弦波,我想创建一个数组,可以将该近似正弦波转换为另一个图形,或用于音频合成。
我对一种方法有一个基本的想法,从一个数组开始:
float samples[] = new float[100] // or some other arbitrary number
然后是 ontouch 方法:
@Override
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX();
float y = event.getY();
if(event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE){
// assume we translate x into relative index from 0-99 at this point
if(!xHasPoint(x, samples)){
drawNewPoint();
samples[x] = y;
}
invalidate();
return true;
}
else{
invalidate();
return false;
}
}
private static boolean xHasPoint(float x, float[] a){
if(a[x] == !null){
return true;
}
else{
return false;
}
}
所以我的问题是,你能提出一个更好的方法来解决这个问题吗?我预见到必须推断出大量数据......在最后循环遍历数组并从最近的非空值中分配空索引平均值,诸如此类。
另一方面,如果这看起来没有错,我是否遗漏了任何重要的大局考虑?