web-dev-qa-db-ja.com

角度属性Androidグラデーション

私はテスト例を行っています。画像の背景にグラデーションを使用している場合、コードは次のようになります

<?xml version="1.0" encoding="utf-8"?>


  <shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <gradient
        Android:startColor="#ff0000"
        Android:centerColor="#00ff00"
        Android:endColor="#0000ff"
        Android:angle="180"/>
    <corners Android:radius="5dp" />
   </shape>

上記のxmlでは、angle属性を取得しませんでした。しかし、angleの値を少し変更すると、パターンが少し傾斜します。誰がそれがどのように正確に機能するかを私に説明できますか?

63

勾配は基本的に、任意の量の空間の変化(方向)を表します。色では、角度で表される方向の色の強さの変化を表します。この概念を表す図を次に示します。
enter image description here

この図は、水平方向の色の変化を示しています(角度は0に設定されています)。
XMLコード:

    <shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <gradient
        Android:startColor="#000000"
        Android:angle="0"/>
   </shape>

enter image description here

この図は、垂直方向の色の変化を示しています(角度は90に設定されています)。
XMLコード:

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<gradient
    Android:startColor="#000000"
    Android:angle="90"/>
 </shape>

開始色、中心色、終了色として異なる色を使用することもできます。添付したコードには、これらの要素がすべて含まれています。

151
karn

コードから斜めのグラデーションを作成できます。それははるかに簡単で、そこから多くのオプションを開くことができます。このスニペットは私を助けました

public void SetGradient(View view) {
        GradientDrawable Gd = new GradientDrawable(
                GradientDrawable.Orientation.TL_BR,
                new int[]{0xFF141a24, 0xFF293f49, 0xFF72554c});
        view.setBackground(Gd);
    }

gradientDrawableクラスから利用可能な指示

/*public enum Orientation {
        *//** draw the gradient from the top to the bottom *//*
        TOP_BOTTOM,
        *//** draw the gradient from the top-right to the bottom-left *//*
        TR_BL,
        *//** draw the gradient from the right to the left *//*
        RIGHT_LEFT,
        *//** draw the gradient from the bottom-right to the top-left *//*
        BR_TL,
        *//** draw the gradient from the bottom to the top *//*
        BOTTOM_TOP,
        *//** draw the gradient from the bottom-left to the top-right *//*
        BL_TR,
        *//** draw the gradient from the left to the right *//*
        LEFT_RIGHT,
        *//** draw the gradient from the top-left to the bottom-right *//*
        TL_BR,
    }*/

そして、フラグメント内のonCreateまたはonCreateViewからメソッドを呼び出し、親ビュー(私の場合)を渡します。

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.dialog_view_parent, container);           
        ...

        SetGradient(view);

        return view;
    }
10
Alex

図形のグラデーションカラーを指定します。属性:

Android:angle整数。グラデーションの角度(度単位)。 0は左から右、90は下から上です。 45の倍数でなければなりません。デフォルトは0です。

ドキュメントの説明はカーンの答えと矛盾しているようです??

詳細は documentation で見つけることができます

8
passerbywhu