Sha*_*kar 23 android android-imageview porter-duff
我想一个补充ColorFilter到ImageView.
目前我正在使用:
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter);
iv.setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);
Run Code Online (Sandbox Code Playgroud)
我检查了多种模式PotterDuff,如SRC_IN,SRC等,但我没有得到任何的模式有什么区别...所有模式将整个ImageView完美的红色.
我需要在现有图像中混合使用RED颜色,这样图像看起来就会带有REDDISH色调....
Sha*_*kar 31
正确的方法是使用PorterDuff.Mode.LIGHTEN.
所以更新的代码将是:
ImageView iv = (ImageView)findViewById(resIdOfImageToFilter);
iv.setColorFilter(Color.RED, PorterDuff.Mode.LIGHTEN);
Run Code Online (Sandbox Code Playgroud)
Md *_*ury 10
您可以在xml文件中使用 android:tint(link).例:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/your_drawable"
android:tint="@color/your_color" />
Run Code Online (Sandbox Code Playgroud)
这对我有用:
在res/colors.xml中:
<color name="highlight_color_filter">#A5FF0000</color>
Run Code Online (Sandbox Code Playgroud)
在您的Activity中初始化过滤器并突出显示paint:
int highlightColor = context.getResources().getColor(R.color.highlight_color_filter);
PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(highlightColor, PorterDuff.Mode.SRC_ATOP);
Paint redHighLight = new Paint();
redHighLight.setColorFilter(targetHitFilter);
redHighLight.setAlpha(190);
Run Code Online (Sandbox Code Playgroud)
然后将过滤器应用于ImageView:
ImageView iv=(ImageView)findViewById(ResIdOfImageToFilter);
iv.setColorFilter(redHighLight);
Run Code Online (Sandbox Code Playgroud)
如果这不起作用尝试应用于ImageView drawable:
iv.getDrawable().setColorFilter(redHighLight);
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
其他解决方案,您可以保留PorterDuff.Mode.SRC_ATOP模式并使用另一个Alpha来具有透明颜色。
我使用155作为Alpha值:
final int semiTransparentGrey = Color.argb(155, 185, 185, 185);
drawable.setColorFilter(semiTransparentGrey, PorterDuff.Mode.SRC_ATOP);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55976 次 |
| 最近记录: |