2017-07-15 79 views
0

SMARTISAN OS具有这种作用的天气应用程序:从摄氏改变格式为华氏时,温度数字会滚动这样的: Motion blur effect sample如何实现这样的运动模糊效果?

我认为这不是数字滚动时简单的模糊效果,因为你可以从图像中看到这些数字只在垂直方向上模糊。数字以低速滚动,然后更快。模糊半径随着滚动而变长。对我而言,这种影响并不容易实现。

+0

的相同的解决方案实际上,事实并非如此。现在你的问题是什么? (请不要说它是“我该如何实现它”,因为这对Stack Overflow来说太广泛了。) –

回答

0

只需创建一个总是在画布上绘制的自定义视图。你必须自己处理上下运动,在这种情况下,你将无法使用简单的内置UI元素。一旦您想要获得滚动效果,只需多次绘制移动文本,但每次都要略微移动它,并根据其速度改变其不透明度。

在这种情况下使用OpenGL可能是一种矫枉过正,因为这种情况只是关于文本。运动模糊将会非常困难,并且执行性能会很大,并且将文本绘制成十几次只会对性能产生较小的影响。

希望我能帮上忙。

0

@andras

/** 
* use for 2D-Radial-Blur 
* 
* @param src 
* @param dx It effetcs the speed. you can use 1/-1 for a test 
* @param dy It effetcs the speed. you can use 1/-1 for a test 
* @param times effects motion length 
* @return 
*/ 
public static Bitmap doRadialBlur(Bitmap src, int dx, int dy, int times) { 

    Bitmap dst = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888); 

    Canvas canvas = new Canvas(dst); 
    Matrix matrix = new Matrix(); 
    Paint paint = new Paint(); 
    canvas.drawBitmap(src, matrix, paint); 

    paint.setAlpha(51); // 51/255 =20% 

    for (int i = 0; i < times; i++) { 
     matrix.setTranslate(i * dx, i * dy); 
     canvas.drawBitmap(src, matrix, paint); 
    } 

    return dst; 
} 

https://github.com/dkmeteor/RadialBlur-Android