【问题标题】:Animate Android Canvas Background动画 Android 画布背景
【发布时间】:2015-01-19 22:04:52
【问题描述】:

我使用标准的 Android 画布和黑色作为背景。我希望它随机生成白色矩形并垂直和水平移动它们。
我希望这个问题是明确和可行的。

【问题讨论】:

    标签: android animation canvas


    【解决方案1】:

    当然,创建一个包含一堆随机生成的矩形信息的类。当您随机生成一个新的时,您将希望使用后台线程来执行此操作。使现在存在矩形的视图部分无效。

    为视图重载 onDraw(Canvas canvas) 函数并拥有它,每次调用时绘制所有白色矩形。

    ArrayList<RectF> rectangles;
    Paint rectanglePaint;
    
    public void addRectangle(RectF addRectangle) {
        if (rectangles == null) rectangles = new ArrayList<>();
        rectangles.add(addRectangle);
        this.invalidate((int)addRectangle.left-1,(int)addRectangle.top-1, (int)addRectangle.right+1, (int)addRectangle.bottom+1);
    }
    
    public void translateRectangle(int index, float dx, float dy) {
        if (rectangles == null) return;
        RectF rect = rectangles.get(index);
        this.invalidate((int)rect.left-1,(int)rect.top-1, (int)rect.right+1, (int)rect.bottom+1);
        rect.set(rect.left+dx, rect.top +dy, rect.right+dx, rect.left+dy);
        this.invalidate((int)rect.left-1,(int)rect.top-1, (int)rect.right+1, (int)rect.bottom+1);
    }
    
    @Override
    public void onDraw(Canvas canvas) {
        if (rectangles == null) return;
            for (RectF rect : rectangles) {
                canvas.drawRect(rect, rectanglePaint);
            }
    }
    

    在视图中的某个地方覆盖 onDraw(),记得为 rectanglePaint 声明绘制并将其设置为白色或其他。但这就是代码。保存一些后台线程或一些东西来做随机调用 addRectangle();

    【讨论】:

      【解决方案2】:

      创建白色油漆

      Paint white=new Paint();
      white.setColor(Color.WHITE);
      

      覆盖 onDraw(Canvas)

      public void onDraw(Canvas c){
      //if you want more, write a for loop here        c.drawRect(0,0,System.currentTimeMillis()%500,System.currentTimeMillis()%500,white);
      // every time you invalidate this view, the rectangles will change their positions
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-01
        • 1970-01-01
        • 2015-10-20
        • 2013-12-16
        • 2016-03-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多