繁体   English   中英

Android:ImageView中图像的阴影

[英]Android: shadow of Image in ImageView

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

<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 =“ @ android:drawable / dialog_holo_light_frame”,但ImageView匹配父容器)? 动态设置图像(通过setImageResource)。 他们有不同的大小。

预先感谢您的帮助!

为了获得想要的效果,您需要解决两个问题:

  1. 阴影应在图像外部绘制
  2. 图片应漂浮在画廊上

对于1.,请使用ImageView并:

  • 将阴影设置为9-patch作为背景。 9补丁中间是透明的,阴影/边框很薄。 请参阅文档
  • 将常规图像设置为源图像,例如使用setImageResource()
  • 在ImageView中使用填充而不是边距,以便源图像不会覆盖阴影。 填充大小应与阴影/边框相同。

对于2.,您可以使用:

  • 一个包含布局和来自1的imageView的框架布局。
  • 具有透明窗口背景的新活动(使用“透明”主题)。 这样,图片下方的图片库就不会对触摸产生反应

关于第二点,请参阅此视频

编辑 :这个答案是我对原始答案的补充。 请特别参阅链接的图像

图像阴影是两种类型的1法线阴影。 2滴阴影

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

为了澄清一下:从一开始我就使用9补丁图像方法(实际上,标准的Android图像dialog_holo_light_frame设置为背景)。 但是我遇到了以下问题:ImageLayout是通过layout_width =“ match_parent”和android:layout_height =“ match_parent”来拉伸的(以按比例拉伸显示的图像),因此阴影是从容器而不是从图像本身掉落的。

通过为ImageView设置android:adjustViewBounds =“ true”,然后通过动态更改ImageView来解决此问题:

  1. 在ORIENTATION_LANDSCAPE中:

机器人:layout_width = “WRAP_CONTENT”

机器人:layout_height = “match_parent”

  1. 在ORIENTATION_PORTRAIT中:

机器人:layout_width = “match_parent”

机器人:layout_height = “WRAP_CONTENT”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM