Android知识分享Android开发经验谈Android开发

Android UI:撒花动画

2018-12-03  本文已影响0人  徐影魔

CoolAnimaions(一)

github

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

RainView

rain_view.gif

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

关键类

召唤师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();
上一篇 下一篇

猜你喜欢

热点阅读