Android UI:撒花动画

作者: 徐影魔 | 来源:发表于2018-12-03 18:38 被阅读0次

    CoolAnimaions(一)

    github

    最近做一个喝水的项目,喝水达到目标量要一个酷炫的动画,看到有些app上有这个动画,模仿了一下。

    RainView

    rain_view.gif
    • 支持各种形状,多边形,星形
    • 自定义多边形,星型drawable
    • 可设置最多显示数量

    思路就是通过召唤师控制下雨,召唤师有一个雨滴生成器召唤雨滴。各司其职,容易扩展。

    关键类

    召唤师ISummoner

    public interface ISummoner {
    
        interface IRaindropCreator{
            void injectRaindrops(ISummoner summoner);
        }
    
    
        void initRaindrops(List<IRainDrop> list);
    
        List<IRainDrop> getRaindrops();
    
        /**
         * start to rain
         */
        void fall();
    
        /**
         * stop the rain
         */
        void stop();
    
    
        void deployRaindrops();
    
    
        boolean shouldAbandon(IRainDrop rainDrop);
    
        void setRaindropCreator(IRaindropCreator raindropCreator);
    
        void setMaxRaindropCount(int maxRaindropCount);
    
        int getMaxRaindropCount();
    
    }
    

    雨滴元素IRainDrop

    public interface IRainDrop {
    
        void setInitPosition(PointF pointF);
    
        PointF getInitPosition();
    
        void setRaindropWidth(int width);
    
        int getRaindropWidth();
    
        void setRaindropHeight(int height);
    
        int getRaindropHeight();
    
    
        void setCurrentX(float x);
    
        float getCurrentX();
    
        void setCurrentY(float y);
    
        float getCurrentY();
    
        float getRaindropRotation();
    
        void setRaindropRotation(float rotation);
    
        float getRaindropRotationSpeed();
    
        void setRaindropRotationSpeed(float speed);
    
    
        void setSpeedX(float speedX);
    
        float getSpeedX();
    
        void setSpeedY(float speedY);
    
        float getSpeedY();
    
        /**
         * move to position
         */
        void moveTo(float x,float y);
    
    
        void draw(Canvas canvas);
    
        boolean isLoop();
    
        void setLoop(boolean loop);
    }
    

    示例用法

    mRainView = findViewById(R.id.rain_view);
    mRainView.setMaxRaindropCount(25);
    mRainView.setRaindropCreator(new RaindropCreator());
    mRainView.fall();
    

    相关文章

      网友评论

        本文标题:Android UI:撒花动画

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