web-dev-qa-db-ja.com

Android ImageViewドロップシャドウ

ImageViewにドロップシャドウを追加しようとしています。他のStackoverflowの答えは、キャンバスやビットマップなどを使用しているようで、必要以上に複雑です。

IOSでは次のようにします。

myImageView.layer.shadowColor = [UIColor redColor].CGColor;
myImageView.layer.shadowRadius = 5;
myImageView.layer.shadowOffset = CGRectMake(0, 5);

影がビュー、画像、またはテキストに適用されているかどうかに関係なく、ドロップシャドウをレンダリングします。

私はAndroidで同じことをしようとしましたが、それは単に動作することを拒否します:

birdImageView = new ImageView(context);
birdImageView.setImageResource(R.drawable.yellow_bird);

Paint paint = new Paint();
Paint.setAntiAlias(true);


birdImageView.setLayerType(LAYER_TYPE_SOFTWARE, null);
Paint.setShadowLayer(5, 0, 5, Color.argb(255, 255, 0, 0));
birdImageView.setLayerPaint(Paint);

鳥の画像に赤いドロップシャドウがまったく表示されません。

私は何か間違ったことをしていますか?

次のようなドロップシャドウが必要だとします。

drop shadow example

更新

Android 5.0と新しいElevation api( http://developer.Android.com/training/material/shadows-clipping.html )に頼らなければなりませんか? ?

ただし、新しいAPIを使用する場合、現在の人口統計によると( http://www.droid-life.com/2016/02/02/Android-distribution-february-2016/ )詳細ユーザーの50%以上がアプリを使用できなくなります。

T_T

11
Zhang

Android studioには、任意のdrawableにシャドウを適用するために使用できるビルドViewがあります。ドロップシャドウと同様です。

Android:background="@drawable/abc_menu_dropdown_panel_holo_light"

これを使用すると、ビューの背景色と境界線の色を変更できません。独自のカスタムドローアブルが必要な場合は、layer-list

custom_drop_shadow_drawable.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <!--the shadow comes from here-->
    <item
        Android:bottom="0dp"
        Android:drawable="@Android:drawable/dialog_holo_light_frame"
        Android:left="0dp"
        Android:right="0dp"
        Android:top="0dp">

    </item>

    <item
        Android:bottom="0dp"
        Android:left="0dp"
        Android:right="0dp"
        Android:top="0dp">
        <!--whatever you want in the background, here i preferred solid white -->
        <shape Android:shape="rectangle">
            <solid Android:color="@Android:color/red" />

        </shape>
    </item>
</layer-list>

以下のようにビューに適用します

Android:background="@drawable/custom_drop_shadow_drawable"

それがあなたを助けることを願っています!ありがとう Android Viewシャドウ

11