2017-11-21 13 views
0

すでに同じような質問herehereを読んだことがあります。丸い角を持つ単一のプログレスバーを表示したいのであれば良い解決策ですが、私の場合は進捗状況を示したい私はこれまで何をやったかラウンドコーナーと複数色のプログレスバー

progress bar

は、このようなanswerてLinearGradientの実装をコーディングすることですが、それはコーナーでの二乗になります。下の画像のように、複数の「サブ進歩」色の出。

この進捗状況を取得するにはどうすればよいですか?

答えて

0

いくつかの調査の後、どのビューの背景としても設定できるこのクラスPaintDrawableが見つかりました。驚くほどこのDrawableにShapeを設定できます。RoudRectShapeを使用すると、丸みを帯びているように見えます。最終コードは次のとおりです。

 // mRatios is a View 
     ShapeDrawable.ShaderFactory sf = new ShapeDrawable.ShaderFactory() { 
      @Override 
      public Shader resize(int i, int i1) { 
       LinearGradient lg = new LinearGradient(0, 0, mRatios.getWidth(), 0, 
         barColorsArray, 
         barRatiosArray, 
         Shader.TileMode.REPEAT); 

       return lg; 
      } 
     }; 
     PaintDrawable paintDrawable = new PaintDrawable(); 

     // not sure how to calculate the values here, but it works with these constants in my case 
     paintDrawable.setShape(new RoundRectShape(new float[]{100,100,100,100,100,100,100,100}, null, null)); 
     paintDrawable.setShaderFactory(sf); 
     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { 
      mRatios.setBackgroundDrawable(paintDrawable); 
     } else { 
      mRatios.setBackground(paintDrawable); 
     } 
関連する問題