3

私はこのような形を作ることが可能であることを知っています: ここに画像の説明を入力してください

しかし、私はそれから始める方法がわかりません。形にできますか?または私は何か他のことをしなければなりませんか?

BR

4

4 に答える 4

5

ああ、それを見てください、私は間違っていました-勾配は問題ではありません:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Shader;
import android.view.View;

public class ButtonShadow extends View {

    public ButtonShadow(Context context)
    {
        super(context);
    }

    @Override
    public void onDraw(Canvas canvas)
    {
        RectF space = new RectF(this.getLeft(), this.getTop(), this.getRight(), this.getBottom());

        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

        paint.setShader(new LinearGradient(0, getWidth(), 0, 0, Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR));

        canvas.drawArc(space, 180, 360, true, paint);

        Rect rect = new Rect(this.getLeft(),this.getTop() + (this.getHeight() / 2),this.getRight(),this.getBottom());
        canvas.drawRect(rect, paint);
    }
}

グラデーション塗りつぶしの詳細については、こちらをご覧ください: How to fill a Path in Android with a linear gradient?

于 2012-08-02T14:03:30.607 に答える
4

詳細については、このドキュメントを参照してください。レイヤー リストを使用する必要があります。

画像ごとのコードは次のとおりです。

custom_layer_list.xml

<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/topCircular" />

    <item
        android:drawable="@drawable/rect"
        android:top="20dp" />
</layer-list>

topCircular.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

<solid
    android:color="#000000" />
<corners
    android:topLeftRadius="25dp"
    android:topRightRadius= "25dp" />

</shape>

rect.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

<solid
    android:color="#000000" />

</shape>
于 2012-08-02T13:53:04.830 に答える
1

シェープファイルのxmlで定義できますが、単純な9パッチグラフィックを作成する方がはるかに簡単な場合があります。その後、曲線セグメントと直線セグメントをストレッチする方法と場所を簡単にカスタマイズできます。

詳細については、 http://developer.android.com/tools/help/draw9patch.htmlを参照してください。

編集

形状の詳細については、こちらを参照してください:http: //developer.android.com/guide/topics/resources/drawable-resource.html#Shape

于 2012-08-02T13:17:36.810 に答える
1

あなたは形でのみそれを行うことができます:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#000000" />
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners  
        android:topLeftRadius="90dip"
        android:topRightRadius="90dip"
        android:bottomLeftRadius="0dip"
        android:bottomRightRadius="0dip" />
</shape>
于 2012-08-10T15:36:27.993 に答える