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);
}
}
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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie Ihrer innere bitmap zu klein und es custs den Rändern der rectange. Versuchen Sie dies: