Android Paint setShadowLayer () игнорирует цвет своей Paint

Я пытаюсь создать растровое изображение программно и обнаружил, что рисую затененный Rect игнорирует переданный аргумент цвета. Я упростил ситуацию до этого случая - код просто рисует повернутый синий квадрат, который должен иметь серую тень, но тень всегда синяя:

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);
    }
}

RotateRectShadow

Я не вижу почему вызов externalCanvas.drawBitmap (innerBm, 0, 0, shadowPaint); вообще нужна Paint, так как я пытаюсь нарисовать тень на самом innerBm через innerCanvas, но когда я передаю значение null, тени вообще нет.

9
задан Simon Sarris 4 June 2013 в 19:29
поделиться