Android Malen setShadowLayer() ignoriert die Farbe der Farbe

Ich versuche, um eine Bitmap erstellen Sie programmgesteuert und finde das zeichnen eines schattierten Rect ignoriert die Farbe arg übergeben. Ich habe es vereinfacht die Dinge auf diesem Fall - der code, der nur zieht, gedreht blue square soll einen grauen Schatten, aber der Schatten ist immer blau:

main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#fff"
    android:padding="40dp"
    >
</LinearLayout>

RotateRectShadowActivity.java:
public class RotateRectShadowActivity extends Activity {
    private LinearLayout mMainLayout;
    private ImageView mImageView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LayoutInflater factory = LayoutInflater.from( this );
        mMainLayout = (LinearLayout) factory.inflate( R.layout.main, null );

        mImageView = new ImageView(this);

        Rect rect = new Rect(0, 0, 300, 300);

        Bitmap outerBm = Bitmap.createBitmap(
                rect.width(), rect.height(), Bitmap.Config.ARGB_8888);
        Bitmap innerBm = Bitmap.createBitmap(
                rect.width()-50, rect.height()-50, Bitmap.Config.ARGB_8888);

        Canvas outerCanvas = new Canvas(outerBm);
        Canvas innerCanvas = new Canvas(innerBm);
        outerCanvas.rotate(3);

        rect.left += 25;
        rect.top += 25;
        rect.right += 25;
        rect.bottom += 25;

        Paint shadowPaint = new Paint();
        shadowPaint.setShadowLayer(12, 12, 12, 0xFF555555);
        shadowPaint.setColor(0xFF555555);

        innerCanvas.drawRect(rect, shadowPaint);

        Paint rectPaint = new Paint();
        rectPaint.setColor(Color.BLUE);
        innerCanvas.drawRect(rect, rectPaint);
        outerCanvas.drawBitmap(innerBm, 0, 0, shadowPaint);

        mImageView.setImageBitmap(outerBm);
        mMainLayout.addView(mImageView);
        setContentView(mMainLayout);
    }
}

Android Malen setShadowLayer() ignoriert die Farbe der Farbe

Ich sehe nicht ein, warum der Aufruf outerCanvas.drawBitmap(innerBm, 0, 0, shadowPaint); muss ein Farbe-an alle, da ich versuche zu zeichnen, die Schatten auf die innerBm selbst, über innerCanvas, aber wenn ich übergeben Sie den Wert null in der es keine Schatten wirft.

  • Nur als zusätzliche info: Eine zweite Farbe verwendet wird, um zu verhindern, dass die Zuteilung beim zeichnen Zeit, die dazu führen könnte, lags (UI-Thread) usw.
InformationsquelleAutor Carl Whalley | 2011-08-29
Schreibe einen Kommentar