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);
鳥の画像に赤いドロップシャドウがまったく表示されません。
私は何か間違ったことをしていますか?
次のようなドロップシャドウが必要だとします。
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
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シャドウ