在 Android 中动态且顺序地用颜色填充图像视图或位图
Posted
技术标签:
【中文标题】在 Android 中动态且顺序地用颜色填充图像视图或位图【英文标题】:Fill a image view or bitmap with color in Android dynamically and sequentially 【发布时间】:2016-01-14 11:20:54 【问题描述】:我在 android 中有一个位图,可以与 imageview 或通过画布一起使用。我有一个心形位图,我需要用颜色动态填充它,我必须用颜色填充心脏的内部。只有内心的部分需要被填满,而外面的部分必须被忽略。我已经处理过类似的问题,但是我使用 Canvas 来绘制心脏,现在我需要使用心形结构的位图来为心脏填充颜色。
我之前的问题是here
例如,考虑以下图像:
心脏图像的形状实际上是一个完美的正方形,心脏轮廓的两侧都有白色背景。所以,我的问题是如何在这张图片中找到心脏的内部。在我之前的问题中,有画布,可以得到一个想法并实现,但在这种情况下,我没有太多的想法来解决这个问题。
任何帮助或参考将不胜感激。
更新:
当我开始回答这个问题时,我的心脏有一个白色背景,但现在我有一个半透明图层,心脏有背景色。
Here is what I have
代码:
<RelativeLayout
android:layout_
android:layout_
android:id="@+id/first_heart_beat"
android:layout_centerInParent="true"
android:layout_below="@+id/member_name_heart_beat"
>
<RelativeLayout
android:layout_
android:layout_
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_
android:layout_
android:src="@drawable/heartwhite2"
android:id="@+id/first_heart_imageview"
android:layout_alignParentBottom="true"
/>
<TextView
android:layout_
android:layout_
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】:如果心脏的内部是透明的(你说心脏正方形的外部元素是白色的),然后将图像放入容器(与图像相同尺寸的RelativeLayout或LinearLayout)并设置背景颜色以编程方式删除该容器。
【讨论】:
所以如果我让内心的部分变得透明,我就能达到我想要的? 是的。您必须访问活动中的底层布局,但它只是使用 setBackgroundColor() 设置背景颜色 我想我明白了,我从没想过会这么简单。我的意思是,我不这么想真是太愚蠢了,我不知道透明度部分。你为我节省了很多时间。 我的 UI 做了一些小改动,我现在正在创建相同的心,但背景不同,背景是半透明的,不是白色的。它是一种纯色,具有一定的透明度。我似乎不能让心脏的外部背景为半透明颜色,因为它看起来有点奇怪。关于如何克服这种情况的任何想法? 所以看起来很奇怪,因为更改 Layout 背景颜色会使外心半透明也变成不想要的颜色?我想我可以看到一个解决方案:让两个图像相互叠加,都带有透明的心。底部图像具有白色外层,上层图像具有半透明外层。更改布局背景颜色不应穿透底部图像。以上是关于在 Android 中动态且顺序地用颜色填充图像视图或位图的主要内容,如果未能解决你的问题,请参考以下文章