web-dev-qa-db-ja.com

ImageViewに影を適用する方法は?

ImageViewに影を付けたい。 TextViewにシャドウを適用すると、それを取得しますが、ImageViewに到達しません。この問題を解決するにはどうすればよいですか?

CardView を使用して、角の丸い背景と影を提供することもできます。それを使用するには、build-gradleのプロジェクトへの依存関係として、以下のように v7 CardView library を追加する必要があります。

dependencies {
    compile 'com.Android.support:cardview-v7:23.0.1'
    -------
}

注:23.0.1上記の行で尊敬されるバージョン。

そこで、ImageViewCardViewで囲み、以下のような影を作りました。

<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>

画像の周りに影を追加します。

注:それが良い回避策であるかどうかはわかりません。私は初心者です。 CardViewを実装しようとしましたが、これは同じことを実装するためのアイデアを与えてくれます。良くない場合は、理由をお知らせください。

5

これは、DevoxxでのRomain Guyのプレゼンテーションから取得されました。pdfが見つかりました here

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

お役に立てれば。

[〜#〜] notes [〜#〜]

Honeycomb以上ではsetLayerType(LAYER_TYPE_SOFTWARE, mShadow)を呼び出す必要があることを忘れないでください。そうしないと影が見えません! (@Dmitriy_Boichenko)

SetShadowLayerはハードウェアアクセラレーションでは残念ながら機能しないため、パフォーマンスが大幅に低下します(@Matt Wear)

ここ からの回答

Apiが21より大きい場合は、imageviewまたはButtonでxmlを試すことができます。 開発者向けサイトで読む

_Android:elevation="5dp"
_
2
Avinash Verma

ファイル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>

そして、これをImageview内でAndroid:background = "@ drawable/shadow_rectとして使用します。

2
Harry

レイヤーリストのドロアブルを作成し、イメージとシャドウ用に2つのアイテム(ドロアブル)をその中に配置できます。

シャドウアイテムの位置とコンテンツは、シャドウを適用する場所(上、左、右、右と左など)とシャドウのスタイルに応じて変わる場合があります。

1
stdout