Android:ImageView中图像的阴影

时间:2015-07-15 16:14:04

标签: android

我正在开发简单的图库应用程序。有水平视图的缩略图。通过单击缩略图,将打开一个新活动。 这是它的布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/expanded_image_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
>

<ImageView
android:id="@+id/expanded_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="20dip"
android:layout_marginBottom="20dip"
/>
</FrameLayout>

因此,ImageView的目的是按比例拉伸所选图像以适应整个屏幕。

我的问题是,是否有办法为图像绘制阴影(不适用于ImageView - 我可以使用android:background =&#34; @android:drawable / dialog_holo_light_frame&#34;,但ImageView匹配父容器)? 图像是通过动态设置(通过setImageResource)。它们有不同的尺寸。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

对于你想要的效果,你需要解决两个问题:

  1. 应在图像外部绘制阴影
  2. 图片应漂浮在图库
  3. 对于1.使用ImageView和:

    • 设置阴影9补丁作为背景。 9贴片中间是透明的,有一个薄的阴影/边框。 (see docs
    • 将常规图像设置为源图像,例如使用setImageResource()
    • 在ImageView中使用填充而非边距,以便源图像不会覆盖阴影。填充大小应与阴影/边框相同。

    对于2.您可以使用:

    • 包含图库和1的imageView的framelayout。
    • 具有透明窗口背景的新活动(使用透明主题)。但是这样,图像下方的图库不会对触摸作出反应

    关于第二点,请参阅此video

    编辑:这个答案补充了我对原始答案的评论。请参阅linked image

答案 1 :(得分:0)

影像阴影是两种类型 1正常阴影。 2投影..

对于这两种情况,你有两个解决方案 阴影的1次使用9补丁图像将其设置为该图像的背景。 2使用渐变背景图像...

答案 2 :(得分:0)

只是为了澄清:从一开始我就使用了9-patch图像方法(事实上标准的android图像dialog_holo_light_frame被设置为背景)。但是我面临以下问题:ImageView是通过layout_width =&#34; match_parent&#34;来拉伸的。和android:layout_height =&#34; match_parent&#34; (按比例拉伸显示的图像),因此阴影从容器中掉落,而不是从图像本身掉落。

通过设置android:adjustViewBounds =&#34; true&#34;解决了这个问题。对于ImageView,然后通过dinamically更改ImageView:

  1. 在ORIENTATION_LANDSCAPE中:
  2. 机器人:layout_width =&#34; WRAP_CONTENT&#34;

    机器人:layout_height =&#34; match_parent&#34;

    1. 在ORIENTATION_PORTRAIT:
    2. 机器人:layout_width =&#34; match_parent&#34;

      机器人:layout_height =&#34; WRAP_CONTENT&#34;