如何在android中添加雪流效果?

时间:2013-09-06 07:17:08

标签: android animation paint

我正在尝试添加雪流效果。但没有成功 我试着做不断流雪的效果。 可能吗?如果是,请给出建议。

我的代码如下。

public class MainActivity extends Activity {

    private int COLOR_MAX = 0xff;

    ImageView image;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        image = (ImageView)findViewById(R.id.imageView1);
        Bitmap imagebitmap = BitmapFactory.decodeResource(getResources(),R.drawable.hydrangeas);    
        applySnowEffect(imagebitmap);

    }
    Bitmap applySnowEffect(Bitmap source) 
    {

        // get image size
        int width = source.getWidth();
        int height = source.getHeight();
        int[] pixels = new int[width * height];

        // get pixel array from source
        source.getPixels(pixels, 0, width, 0, 0, width, height);

        // random object
        Random random = new Random();

        int R, G, B, index = 0, thresHold = 50;
        // iteration through pixels


        for(int y = 0; y < height; ++y) {
            for(int x = 0; x < width; ++x) {

                // get current index in 2D-matrix

                index = y * width + x;              
                // get color
                R = Color.red(pixels[index]);
                G = Color.green(pixels[index]);
                B = Color.blue(pixels[index]);
                // generate threshold
                thresHold = random.nextInt(COLOR_MAX );
                if(R > thresHold && G > thresHold && B > thresHold) {
                    pixels[index] = Color.rgb(COLOR_MAX, COLOR_MAX, COLOR_MAX);
                }                           
            }
        }
        // output bitmap                
        Bitmap bmOut = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
        bmOut.setPixels(pixels, 0, width, 0, 0, width, height);

        Toast.makeText(getApplicationContext(),"processed",10).show();
        return bmOut;


    }

2 个答案:

答案 0 :(得分:3)

前几天我真的读到了这个。您可以使用Android的粒子系统。可以在此处找到可以提供帮助的图书馆 - https://github.com/plattysoft/Leonids

答案 1 :(得分:0)

我刚刚找到解决方案。 来源位于:code link

主要思想是SnowFallView扩展View,并覆盖onDraw(Canvas canvas)事件,我们在那里绘制我们的雪花画笔。

代码刚刚经过测试并运行良好。