标签: tint

如何在android中以编程方式为图像视图设置色调?

需要为图像视图设置色调...我使用以下方式:

imageView.setColorFilter(R.color.blue,android.graphics.PorterDuff.Mode.MULTIPLY);
Run Code Online (Sandbox Code Playgroud)

但它没有改变......

android tint imageview

355
推荐指数
18
解决办法
27万
查看次数

我如何在iPhone上以编程方式为图像着色?

我想用颜色参考着色图像.结果应该类似于Photoshop中的"乘法"混合模式,其中白色将替换为色调:

替代文字

我会不断改变颜色值.

跟进:我会把代码放在我的ImageView的drawRect:方法中,对吗?

与往常一样,代码片段将极大地帮助我理解,而不是链接.

更新:使用Ramin建议的代码对UIImageView进行子类化.

我把它放在viewDidLoad中:我的视图控制器:

[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Run Code Online (Sandbox Code Playgroud)

我看到了图像,但没有被染色.我还尝试加载其他图像,在IB中设置图像,并在我的视图控制器中调用setNeedsDisplay:

更新:drawRect:未被调用.

最后更新:我找到了一个正确设置了imageView的旧项目,所以我可以测试Ramin的代码,它就像一个魅力!

最后的最后更新:

对于那些刚学习Core Graphics的人来说,这是最简单的事情.

在您的子类UIView中:

- (void)drawRect:(CGRect)rect {

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColor(context, CGColorGetComponents([UIColor colorWithRed:0.5 green:0.5 blue:0 alpha:1].CGColor)); // don't make color too saturated

    CGContextFillRect(context, rect); // draw base

    [[UIImage imageNamed:@"someImage.png"] drawInRect: rect blendMode:kCGBlendModeOverlay alpha:1.0]; // draw image
}
Run Code Online (Sandbox Code Playgroud)

cocoa-touch tint image-processing uiimage ios

87
推荐指数
5
解决办法
6万
查看次数

在AppCompat工具栏上的MenuItem着色

当我使用AppCompat库中的drawables 作为我的Toolbar菜单项时,着色按预期工作.像这样:

<item
    android:id="@+id/action_clear"
    android:icon="@drawable/abc_ic_clear_mtrl_alpha"  <-- from AppCompat
    android:title="@string/clear" />
Run Code Online (Sandbox Code Playgroud)

但是如果我使用自己的drawables,或者实际上甚至将drawables从AppCompat库中复制到我自己的项目中,它根本就不会染色.

<item
    android:id="@+id/action_clear"
    android:icon="@drawable/abc_ic_clear_mtrl_alpha_copy"  <-- copy from AppCompat
    android:title="@string/clear" />
Run Code Online (Sandbox Code Playgroud)

是否有一些特殊的魔法AppCompat Toolbar,只有那个图书馆的色彩抽奖?有没有办法让我的自己的drawables工作?

在API Level 19设备上使用compileSdkVersion = 21和运行此操作targetSdkVersion = 21,并使用其中的所有内容AppCompat

abc_ic_clear_mtrl_alpha_copyabc_ic_clear_mtrl_alphapng 的精确副本AppCompat

编辑:

着色基于我android:textColorPrimary在主题中设定的值.

例如,<item name="android:textColorPrimary">#00FF00</item>可以给我一个绿色的色调的颜色.

截图

着色使用AppCompat中的drawable按预期工作 着色使用AppCompat中的drawable按预期工作

着色不适用于从AppCompat复制的drawable 着色不适用于从AppCompat复制的drawable

android tint toolbar android-appcompat

85
推荐指数
7
解决办法
5万
查看次数

Lollipop的backgroundTint对Button没有影响

我的活动中有一个Button,我希望它有我主题的强调色.而不是像我们必须做的那样制作我自己的可绘制的Lollipop,我自然会想要使用新backgroundTint属性.

<Button
    android:id="@+id/btnAddCode"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:backgroundTint="@color/accent"
    android:text="@string/addressInfo_edit_addCode" />
Run Code Online (Sandbox Code Playgroud)

不幸的是它没有效果,按钮保持灰色.

我尝试了不同的值backgroundTintMode,但没有改变任何东西.

我也尝试在我的Activity中以编程方式进行,它没有改变任何东西.

addCodeView.findViewById(R.id.btnAddCode).setBackgroundTintList(
     getResources().getColorStateList(R.color.accent));
Run Code Online (Sandbox Code Playgroud)

为什么我的色彩被忽略了?

编辑:只是为了澄清,我确实在Lollipop设备上进行测试.其他小部件(例如EditText)正确并自动着色.

android tint android-layout

79
推荐指数
8
解决办法
7万
查看次数

如何在iPhone中为透明的PNG图像着色?

我知道可以通过在其上绘制CGContextFillRect并设置混合模式来着色矩形图像.但是,我无法弄清楚如何对透明图像(如图标)进行色调处理.它必须是可能的,因为SDK本身就是在tab-bar上自己做的.有人能提供一个片段吗?

更新:

自从我最初提出这个问题以来,已经给出了很多很好的建议.请务必仔细阅读所有答案,找出最适合您的方法.

更新(2015年4月30日):

使用iOS 7.0,我现在可以执行以下操作,这将满足我原始问题的需要.但如果您有更复杂的案例,请查看所有答案.

UIImage *iconImage = [[UIImage imageNamed:@"myImageName"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];    
UIImageView *icon = [[UIImageView alloc] initWithImage:iconImage];
icon.tintColor = [UIColor redColor];
Run Code Online (Sandbox Code Playgroud)

iphone image tint uiimage ios

73
推荐指数
6
解决办法
4万
查看次数

如何在焦点/按下时更改ImageButton的色调

我有一个ImageButton在我的应用程序,我需要在按钮时更改图像的色调pressed/focused.我有一个从XML文件ImageButton获取它的集合,src如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- pressed -->
    <item 
        android:state_pressed="true"
        android:tint="@color/black"
        android:drawable="@drawable/search"
        />

    <!-- focused -->
    <item 
        android:state_focused="true"
        android:tint="@color/black"
        android:drawable="@drawable/search"
        />

    <!-- default -->
    <item
        android:tint="@null"
        android:drawable="@drawable/search"
        />

</selector>
Run Code Online (Sandbox Code Playgroud)

但是,ImageButton按下或聚焦时不会应用色调- 图像只显示正常.黑色一直定义为黑色#000000.有任何想法吗?

android image tint selector imagebutton

57
推荐指数
4
解决办法
9万
查看次数

Android:Tint使用DrawableCompat

我试图在Android API级别21之前对图像进行着色.我已成功使用以下项目着色项目:

<android:tint="@color/red"/>
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法弄清楚如何通过ImageView上的代码执行此操作:

Drawable iconDrawable = this.mContext.getResources().getDrawable(R.drawable.somedrawable);
DrawableCompat.setTint(iconDrawable, this.mContext.getResources().getColor(R.color.red));
imageView.setImageDrawable(iconDrawable);
Run Code Online (Sandbox Code Playgroud)

我已经尝试过设置TintMode,但这似乎没有什么不同.我是否错误地使用了v4兼容类DrawableCompat?

compatibility android tint

48
推荐指数
5
解决办法
3万
查看次数

使用CSS使图像变暗(任何形状)

所以我已经看到了很多用CSS来改变图像的方法,包括带圆角的图像,但我的问题不同了.

假设我有一个看起来像小狗的.png图像(只是用它,我没有任何好的例子),当我把它放在我的页面上时,我给它的尺寸为100 x 100.

但是我不能只在它上面覆盖一些东西,或者整个图像着色,因为它会使狗的背景也被染色,看起来很难看.

是否可以使用CSS为任意形状的图像着色?

(我假设你理解我的观点,没有必要使用无用的代码)

谢谢!

css png tint

42
推荐指数
3
解决办法
8万
查看次数

DrawableCompat着色对前Lollipop不起作用

我正在使用新的TextInputLayout来包装EditText.当我确定某个字段有错误时,我会执行以下操作:

Drawable drawable = DrawableCompat.wrap(getEditText().getBackground());

DrawableCompat.setTintList(drawable, ColorStateList.valueOf(Color.RED));
Run Code Online (Sandbox Code Playgroud)

这适用于5.0并将下划线变为红色,但在4.4或4.1测试设备上不执行任何操作.我在这里错过了什么?看起来如此简单,根据谷歌"正常工作"...非常确定我也有最新版本:

编译'com.android.support:design:22.2.0'

FWIW,如果我使用setColorFilter而不是setTint,那么它可以在所有平台上运行,但是我有问题就会消失,一旦焦点设置/左/等等就不会回来......我更愿意这样做色调(如果有人在寻找额外的信用lol,我真的更喜欢将色调应用于焦点和非焦点状态)

谢谢!

android tint drawable

37
推荐指数
1
解决办法
1万
查看次数

按住自定义UIButton时更改深灰色突出显示的颜色?

我有一个UIButton云,透明的黑色和白色.png文件的自定义,没有向下状态,只有一个图像.当用手敲击并握住手指时,它会变成深灰色.我试图把那个深灰色改成一点不那么压抑的东西.该按钮在视图中处于打开状态,而不是在选项卡栏,工具栏或导航控制器中.

我已经尝试过设置tintColor(文档有用地通知我只适用于'某些'类型的按钮,这些按钮没有任何指示).

我也尝试过改变我在Interface Builder中可以找到的与高亮颜色,默认状态等相关的所有内容.没有什么能够产生任何影响.

我甚至尝试将按钮自己的图像设置为其UIControlStateHighlighted状态,但即使这样,当我用手指按住它时也会出现深灰色叠加.

我怎样才能改变那种颜色?我已经在SO上查看了许多其他问题,并且无法找到适合我的解决方案.任何帮助将不胜感激!

编辑:我使用一个类别解决了问题,该类别UIImage添加了一个方法,用于CoreGraphics将颜色应用于提供UIImage.然后我将THAT图像设置为亮点,一切都很好.看起来有很多改变颜色的苹果应该让我们改变一下,但是我可以改变.

tint objective-c uibutton ios

33
推荐指数
3
解决办法
3万
查看次数