我在android中有一个位图,可以与imageview或画布一起使用。我有一个心形的位图,我需要动态填充它,我必须用颜色填充心脏的内部。只有心脏的内部必须被填充,外部部分必须被忽略。我已经处理过同样的问题,但是我使用Canvas绘制心脏,现在我需要使用心形结构的位图来填充心脏的颜色。
我之前的问题是here
例如,请考虑以下图像:
心脏图像的形状实际上是一个完美的正方形,心脏轮廓的两侧都有白色背景。所以,我的问题是如何在这张图片中找到心脏的内在部分。在我之前的问题中,有画布,它可以获得一个想法和实现,但在这种情况下,我没有太多的想法来解决这个问题。
任何帮助或参考将受到高度赞赏。
更新:
当我开始讨论这个问题时,我的心脏有一个白色背景,但现在我有一个背景颜色为半透明的层。
代码:
<RelativeLayout
android:layout_width="80dp"
android:layout_height="80dp"
android:id="@+id/first_heart_beat"
android:layout_centerInParent="true"
android:layout_below="@+id/member_name_heart_beat"
>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="40dp"
android:id="@+id/first_heart_beat_filled_relative"
android:background="@color/heart_filled_color"
android:layout_alignLeft="@+id/first_heart_imageview"
android:layout_alignRight="@+id/first_heart_imageview"
android:layout_alignParentBottom="true">
</RelativeLayout>
<ImageView
android:layout_width="180dp"
android:layout_height="150dp"
android:src="@drawable/heartwhite2"
android:id="@+id/first_heart_imageview"
android:layout_alignParentBottom="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="0 %"
android:padding="2dp"
android:id="@+id/heart_filled_percentage_text"
android:textSize="9sp"
android:gravity="center"/>
</RelativeLayout>
使用此代码,我会根据用户填充的数据量动态增加first_heart_beat_filled_relative
的高度。但由于背景也是半透明的,我无法达到我想要的效果。有没有解决方法呢?
答案 0 :(得分:1)
如果心脏的内部是透明的(并且您说心脏方块的外部元素是白色的),则将图像放在容器中(RelativeLayout或LinearLayout与图像具有相同的尺寸)并设置背景颜色以编程方式编写该容器。