2013-06-04 133 views
0

我想在android中繪製一個倒數計時器,它看起來有點像一條正在成長的「蛇」(從90年代的諾基亞遊戲)。我可以管理代碼的倒數計時器端,但不知道從何時開始繪製隨着時間倒數增長的屏幕外部的細線。在Android應用程序中繪製「倒數計時器」倒數計時器

我也難怪有關使許多小imageviews,然後取消隱藏他們作爲下發生的計數,但似乎達到我想要的東西的一個非常糟糕的方式。

很抱歉的含糊不清的問題,但我不知道從哪裏開始這在所有的,需要在正確的方向轉舵。

謝謝;

安迪

+1

是的,很多[多]微小的圖像視圖將是非常低效的!爲什麼不乾脆[處理繪圖畫布(http://developer.android.com/training/custom-views/custom-drawing.html)手動? – user2246674

+0

感謝您的指導。我認爲必須有一條獲得蛇的好方法。我是Java新手,從未看過自定義繪圖效果。我現在開始閱讀。謝謝您的幫助。 – andy

回答

0

如果任何人發現通過谷歌這個線程/這裏搜索是我去的代碼:

private class CustomView extends View { 
     public CustomView(Context context) { 
       super(context); 
      } 
     @Override 
      protected void onDraw(Canvas canvas) { 
       super.onDraw(canvas); 
       if (direction==120){ 
        direction=0; 
       } 
       Paint green = new Paint(Paint.ANTI_ALIAS_FLAG); 
       green.setColor(Color.GREEN); 
       green.setStrokeWidth(3); 
       Paint red = new Paint(Paint.ANTI_ALIAS_FLAG); 
       red.setColor(Color.RED); 
       red.setStrokeWidth(4); 
       Paint thickgreen = new Paint(Paint.ANTI_ALIAS_FLAG); 
       thickgreen.setColor(Color.GREEN); 
       thickgreen.setStrokeWidth(20); 
       // thickgreen.setShadowLayer(12, 15, 15, Color.BLUE); 
       Paint thickred = new Paint(Paint.ANTI_ALIAS_FLAG); 
       thickred.setColor(Color.RED); 
       thickred.setStrokeWidth(20); 
       //thin bar 
       canvas.drawLine(barxstart, barystart, barxstop, barystop, thickgreen); 
       if (direction <60 && barxstop<canvas.getWidth()) { 
        barxstop=barxstop+1; //move 5 pixels right 
        barxstart=barxstart+1; //move 5 to the right 
       } 
       else{ 
        canvas.drawLine(barxstart, barystart, barxstop, barystop, thickred); 
        barxstop=barxstop-1; //move 5 pixels left 
        barxstart=barxstart-1; //move 5 to the left 
       } 
      // canvas.drawBitmap(bar, barxstart, barystart, green); 
       direction++; 

       //mainbar 
      canvas.drawLine(mainbarxstart, mainbarystart, mainbarxstop, mainbarystop, thickgreen); 
      if (maindirection==1) { 
       canvas.drawLine(mainbarxstart, mainbarystart, mainbarxstop, mainbarystop, thickred); 
       } 
      if (brainstormlate==1){ 
      //do something 
      } 
      invalidate(); 
      }//end ondraw canvas 
     }//end custom view 

基礎,而且很可能不是事物的最漂亮的,但它確實爲更好地工作,我應用。