动态地按顺序在Android中填充带有颜色的图像视图或位图

时间:2016-01-14 11:20:55

标签: android canvas bitmap

我在android中有一个位图,可以与imageview或画布一起使用。我有一个心形的位图,我需要动态填充它,我必须用颜色填充心脏的内部。只有心脏的内部必须被填充,外部部分必须被忽略。我已经处理过同样的问题,但是我使用Canvas绘制心脏,现在我需要使用心形结构的位图来填充心脏的颜色。

我之前的问题是here

例如,请考虑以下图像:

heart

心脏图像的形状实际上是一个完美的正方形,心脏轮廓的两侧都有白色背景。所以,我的问题是如何在这张图片中找到心脏的内在部分。在我之前的问题中,有画布,它可以获得一个想法和实现,但在这种情况下,我没有太多的想法来解决这个问题。

任何帮助或参考将受到高度赞赏。

更新:

当我开始讨论这个问题时,我的心脏有一个白色背景,但现在我有一个背景颜色为半透明的层。

Here is what I have

代码:

            <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的高度。但由于背景也是半透明的,我无法达到我想要的效果。有没有解决方法呢?

1 个答案:

答案 0 :(得分:1)

如果心脏的内部是透明的(并且您说心脏方块的外部元素是白色的),则将图像放在容器中(RelativeLayout或LinearLayout与图像具有相同的尺寸)并设置背景颜色以编程方式编写该容器。