对于我正在开发用于Android平板电脑的项目,我必须创建移动的视觉正弦波光栅。这是一个例子:
(当然,这些是固定的类似物。)
我需要能够修改速度,方向,对比度和空间频率等参数。能够使用不同类型的光栅而不仅仅是线性光栅将是一个优点(例如圆形波纹效应)。
有人可以提出如何在Android中实现此功能的建议吗?感谢。
答案 0 :(得分:2)
首先需要将正弦函数从[-1,1]
映射到[0,1]
以匹配颜色值范围。然后在OpenGL(OpenGL ES)中,创建一个代表正弦波单个周期的平面。也就是说,对于这个平面,颜色从黑色变为白色,然后是黑色(或白色黑色白色)。请注意,您需要水平平铺此平面(垂直于条带),因此您需要相应地调整渐变的比例。
要绘制颜色,您可以使用移动的正弦函数,只需将[0,1]
映射到RGB 3元组(255,255,255)
,然后将正弦值i
乘以元组并获得(255*i, 255*i, 255*i)
作为你的颜色。当i=1
为纯白色时,i=0
为纯黑色。
如果你想设置对比度以获得宽带纯白色,你需要在y
轴上缩放正弦函数,并对该函数应用[0,1]
绑定,例如所有大于1
的正弦值将被强制为1
上限,0
也是如此。
对于空间频率,您只需要定义该平面的宽度。
对于速度,您可以定义该平面的动画速度。
除了使用Android OpenGL ES(上面的建议)之外,我认为你不能通过Android SDK的内置功能获得那么大的灵活性。而且,纹波光栅比线性光栅硬得多。现在,我能想到的简单方法是画一个球并从顶部看一个正交相机。
另一方面,如果你不介意像素化那么你可以简单地制作一个Drawable
并对其进行缩放和动画。此外,新的Android Lollipop现在支持矢量图像为Drawable
,因此您也可以检查出来。