Androidは三角形を描き、色を動的に変えることができます.

2222 ワード

方法1:
この方法の三角形の角度は制御できない.実は矩形の回転だからだ.


   
    
        
            
                
                
            
        
    


次に、xmlをコントロールのbackgroundに設定します.コードでは、次のように使用します.
LayerDrawable layerDrawable = (LayerDrawable) view.getBackground();
GradientDrawable drawable = (GradientDrawable)layerDrawable.getDrawable(0);
drawable.setColor(mainColor);

注意:xmlがラベルを使用している場合、コードには直接
GradientDrawable drawable = (GradientDrawable)view.getBackground();

一方、layer-listを使用する場合は、まずLayerDrawableを使用し、次にいくつかのitemを使用するにはgetDrawable(i)を使用する必要があります.iはshapeの順序
方法2:
SVG,android 5を使用する.0以上でSVGがサポートされるようになり、互換パッケージが以前のバージョンをサポートしたり、サードパーティのオープンソースライブラリ(svg-android,lottio)を使用したりすることもあります.
使い方はDrawableCompat.setTint
  SVG      ,
VectorDrawableCompat vectorDrawableCompat = VectorDrawableCompat.create(getResources(), R.drawable.ic_home_black_24dp, getTheme());
  //        
vectorDrawableCompat.setTint(getResources().getColor(R.color.color_blue));
YourImageView.setImageDrawable(vectorDrawableCompat)

方法3:
カスタムビュー、Canvasペイント、この比較的自由で、最も簡単で、簡単な図形はやはりこれを使ったほうがいいです.
protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        Paint p = new Paint();
        p.setColor(Color.BLACK);
        //     
        Path path = new Path();
        path.moveTo(80, 200);//          
        path.lineTo(120, 250);
        path.lineTo(80, 250);
        path.close(); //             
        canvas.drawPath(path, p);

    }

それからあなたのレイアウトファイルで直接使用して、プレビューは効果がなくて、先に工事をbuildする必要があります.
参照リンク:
Androidはshapeで三角気泡効果を実現
Androidカスタムコントロールは、色プロパティを提供し、コントロールの色を動的に変更します.
Android svg三角形を描く
コード動的変更SVGベクトルマップの色
SVG-Androidオープンソースライブラリ
AndroidでSVGを使った穴
Android描画メカニズム