Ich möchte Schatten auf ImageView
anwenden. Wenn ich Schatten auf eine TextView
verwende, verstehe ich es, aber es wird nicht ImageView
. Wie kann ich dieses Problem lösen?
Wir können auch CardView verwenden, um Hintergrund und Schatten mit abgerundeten Ecken zu erhalten. Um dies zu verwenden, müssen Sie die v7 CardView-Bibliothek als Abhängigkeit zum Projekt im build.gradle wie unten hinzufügen.
dependencies {
compile 'com.Android.support:cardview-v7:23.0.1'
-------
}
Hinweis: Ändern Sie
23.0.1
in der obigen Zeile mit der jeweiligen Version.
Also umgab ich die ImageView
mit CardView
, um einen Schatten wie unten darzustellen.
<Android.support.v7.widget.CardView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
card_view:cardBackgroundColor="@Android:color/white">
<ImageView
Android:id="@+id/dish_image"
Android:layout_width="match_parent"
Android:layout_height="120dp"
Android:adjustViewBounds="true" />
</Android.support.v7.widget.CardView>
Es wird ein Schatten um das Bild eingefügt.
Hinweis: Ich weiß nicht, ob es sich um eine gute Lösung handelt. Ich bin ein Anfänger. ICH hat versucht, die
CardView
zu implementieren, die eine Idee zur Implementierung von .__ gibt. das gleiche für dieses. Wenn es nicht gut ist, aktualisieren Sie mich bitte mit dem Grund.
Dies ist der Präsentation von Romain Guy bei Devoxx entnommen, pdf gefunden hier .
Paint mShadow = new Paint();
// radius=10, y-offset=2, color=black
mShadow.setShadowLayer(10.0f, 0.0f, 2.0f, 0xFF000000);
// in onDraw(Canvas)
canvas.drawBitmap(bitmap, 0.0f, 0.0f, mShadow);
Hoffe das hilft.
ANMERKUNGEN
Vergiss nicht Honeycomb und oben musst du setLayerType(LAYER_TYPE_SOFTWARE, mShadow)
aufrufen, sonst wirst du deinen Schatten nicht sehen! (@Dmitriy_Boichenko)
SetShadowLayer
funktioniert leider nicht mit der Hardwarebeschleunigung, was die Leistung erheblich verringert (@Matt Wear)
Antwort aus hier
Für eine API, die größer als 21 ist .... Sie können es in xml in imageview oder Button versuchen: Lesen Sie hier auf der Entwicklerseite
Android:elevation="5dp"
Sie können eine Layerliste erstellen, die gezeichnet werden kann, und Ihre beiden Elemente (Drawables) für ein Bild und Ihren Schatten darin einfügen.
Die Position und der Inhalt Ihres Schattenelements können sich je nach dem Ort ändern, an dem Sie den Schatten (oben, links, rechts, rechts und links usw.) und dem Stil Ihres Schattens anwenden möchten.
Erstellen Sie eine Datei shadow_rect.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item >
<shape
Android:shape="rectangle">
<solid Android:color="@Android:color/darker_gray" />
<corners Android:radius="0dp"/>
</shape>
</item>
<item Android:right="1dp" Android:bottom="2dp">
<shape
Android:shape="rectangle">
<solid Android:color="@Android:color/white"/>
<corners Android:radius="1dp"/>
</shape>
</item>
</layer-list>
Und das als Android verwenden: background = "@ drawable/shadow_rect in Ihrer Imageview.