美文网首页
Android snowfall下雪控件

Android snowfall下雪控件

作者: hm_marvin | 来源:发表于2017-12-13 21:14 被阅读0次

    前言

    第一次发简书,有点紧张。如果有什么bug或建议欢迎大家指点。

    临近圣诞,公司项目有个下雪场景的需求,类似的控件网上很多,但是我比较喜欢的是github上 https://github.com/JetradarMobile/android-snowfall这一个,用的是Kotlin语言,看完后让我感受到Kotlin语言比java简洁方便,不愧是谷歌的亲儿子。由于项目需求,我得把控件改java语言和使用SurfaceView,在子线程绘制,避免Ui线程阻塞。

    效果:

    demo.gif

    代码:

    public class myRunnable implements Runnable {
            @Override
            public void run() {
                while (true){
                    Canvas canvas =null;
                    try {
                        synchronized (holder){
                            canvas = holder.lockCanvas();
                            //清除画布
                            canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
                            for (Snowflake snowflake :list){
                                snowflake.draw(canvas);
                                snowflake.update();
                            }
                        }
                    }catch (Exception e){
                        e.printStackTrace();
                    }finally {
                        if (canvas!=null){
                            holder.unlockCanvasAndPost(canvas);
                        }
                    }
    
                }
            }
        }
    
    

    主要是在新开的子线程,不断在里面绘制和更新集合里每个雪花的位置透明度等

    <com.marvin.snowfall.SnowfallView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/sf_snow"
            app:snowflakesNum="200"
            app:snowflakeAlphaMin="150"
            app:snowflakeAlphaMax="255"
            app:snowflakeAngleMax="5"
            app:snowflakeSizeMin="2dp"
            app:snowflakeSizeMax="40dp"
            app:snowflakeSpeedMin="2"
            app:snowflakeSpeedMax="10"
            app:snowflakesFadingEnabled="true"
            app:snowflakesAlreadyFalling="false"
            app:snowflakeImage="@mipmap/snowflake"
            />
    

    和原本的控件一样可以进行数量控制,透明度,大小,速度等

    https://github.com/hm-Marvin/SnowFall-master可以下载源码。

    相关文章

      网友评论

          本文标题:Android snowfall下雪控件

          本文链接:https://www.haomeiwen.com/subject/vznzixtx.html