如何使用不同类型的重力制作 LayerImageDrawable
Posted
技术标签:
【中文标题】如何使用不同类型的重力制作 LayerImageDrawable【英文标题】:How to make a LayerImageDrawable with different types of gravity 【发布时间】:2015-01-16 18:54:01 【问题描述】:我正在尝试构建一个包含两个图像的图像视图;背景中的一张照片,上面有一个小指示器。但是,我一直试图让指示器出现在图像的右下角,而背景中的照片应该居中并缩放以适合主图像。
使用各种元素的重力属性似乎并没有真正完成任何事情。
下面是我尝试用来设置可绘制对象内的重力的代码,以及包含具有自己的重力集的 LayerDrawable 的 XML 元素,但似乎都没有做任何事情。
Resources r = fragment.getActivity().getResources();
Drawable[] layers = new Drawable[2];
layers[0] = r.getDrawable(R.drawable.addcoverphoto);
layers[1] = r.getDrawable(R.drawable.project_active); // this is usually user-content instead
((BitmapDrawable)layers[1]).setGravity(Gravity.RIGHT);
LayerDrawable layerDrawable = new LayerDrawable(layers);
image.setImageDrawable(layerDrawable);
<ImageView
android:layout_
android:layout_
android:id="@+id/todayPhotoView"
android:scaleType="center"
android:layout_gravity="bottom"/>
【问题讨论】:
【参考方案1】:您可以将叠加的图像(右下角的那个)设为九个补丁图像,其中图像位于九个补丁的右下角。这将需要使最左边的两个像素和最上面的两个像素成为可缩放部分。这样,drawable 将在左侧和顶部拉伸以匹配,将您的图像留在右下角。
如果您在解决方案中需要更大的灵活性,您可以使用围绕两个 ImageView 的框架布局。使用第一个图像视图显示您的照片,并将第二个图像视图的布局重力设置为底部|右下角,并使用 wrap_content 设置布局宽度和高度。
【讨论】:
如此优雅的解决方案!谢谢。以上是关于如何使用不同类型的重力制作 LayerImageDrawable的主要内容,如果未能解决你的问题,请参考以下文章
使用 UIGravityBehavior 的子视图有不同的重力
打一局王者荣耀掉星的时间,我制作了一款支持 重力感应 的 3D动态壁纸