如何在android中的图像上应用不同的滤色器?
Posted
技术标签:
【中文标题】如何在android中的图像上应用不同的滤色器?【英文标题】:How to apply different colour filters on an image in android? 【发布时间】:2017-05-12 08:18:36 【问题描述】:我不知道如何在图像上应用滤镜。
在这种情况下,我希望图像更暗(黑色,40% 透明度,图像顶部的图层会给我想要的结果)。但是,如果我知道如何在任何颜色的图像(具有一定的透明度)上放置一个图层以使其在视觉上与应用程序的其他 UI 元素更兼容,这将是有帮助的(将来)。
现在的样子。
我希望它在应用程序上的外观(上图已在 Adobe illustrator 中编辑,但如果我使用它,即使它的大小不大,应用程序也会反复崩溃)
另外,我怀疑在 android studio 中必须有一种方法可以做到这一点,而无需任何图像编辑软件。
如果我错了,请纠正我;)
【问题讨论】:
图片有背景和src属性或者使用ColorFilter android black color at 85% opacity的可能重复 不透明度见这个 - ***.com/a/17239853/7235539 【参考方案1】:这就是我的工作,
imageView =(ImageView) findViewById(R.id.image_view) ;
imageView.getDrawable().setColorFilter(0x76ffffff, PorterDuff.Mode.MULTIPLY );
颜色范围 [0x00000000 -0xffffffff]
如果您不了解该模式,这可能会对您有所帮助
红色 - 0xffff0000
绿色-0xff00ff00
蓝色 - 0xff0000ff
您的请求平均黑色 0xff555555
根据需要更改颜色代码 > here
输出
更多:
setColorFilter 参数:(int 颜色, PorterDuff.Mode 模式)
What does PorterDuff.Mode mean
【讨论】:
您的here
链接已失效
@Charuka 非常感谢您花时间展示输出。欣赏!【参考方案2】:
您可以使用对象的android:foreground
属性为任何对象设置颜色。在这里,我使用ImageView
显示图像并使用android:foreground
放置过滤器!
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_
android:layout_>
<ImageView
android:layout_
android:layout_
android:src="@drawable/yourImage"
android:foreground="#60000000" />
</RelativeLayout>
如果您想在布局中执行此操作,请使用 android:background 属性而不是 android:src
作为图像源。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_
android:layout_
android:background="@drawable/yourImage"
android:foreground="#60000000">
</RelativeLayout>
【讨论】:
【参考方案3】:使用任何在线工具为较暗的图像生成 9 个补丁图像,并在您的应用中使用该 9 个补丁。它会起作用的。
【讨论】:
【参考方案4】:试试这个:
<RelativeLayout
android:layout_
android:layout_>
<ImageView
android:layout_
android:layout_
android:background="@android:color/black"/>
<ImageView
android:layout_
android:layout_
android:alpha=".5"
android:src="@drawable/your_naruto_img"/>
</RelativeLayout>
当然,您可以通过更改android:alpha
[0 - 1] 来相应地调整不透明度。
希望这会有所帮助!
【讨论】:
不透明度和滤色器是完全不同的东西!【参考方案5】:试试这个:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="@drawable/your_drawable">
<ImageView
android:id="@+id/backImage"
android:layout_
android:layout_
android:background="#66000000"
android:scaleType="fitXY"/>
</RelativeLayout>
您可以将图像设置为RelativeLayout
的背景。使用imageview
标签并使用您要设置的transparent
颜色设置背景。
【讨论】:
请不要通过回滚我们的改进来破坏您的帖子。【参考方案6】:对我有用的是
ImageView backgroundimage = FindViewById<ImageView>(Resource.Id.img_view);
backgroundimage.SetColorFilter(Color.Argb(200,0,0,0), PorterDuff.Mode.Overlay);
在尝试了以上所有答案之后。 希望它可以帮助某人。
【讨论】:
以上是关于如何在android中的图像上应用不同的滤色器?的主要内容,如果未能解决你的问题,请参考以下文章