android:color可以是图片吗,android colormatrixcolorfilter怎么转换成color

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

sifotbeng

2015.01.26

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:50%    等级:9

已帮助:461人

ColorFilter和它的三个子类LightingColorFilter,PorterDuffColorFilter,ColorMatrixColorFilter在sdk上并没有过多的介绍,它的功能应该就是按照一定的规则改变图片的颜色,三个子类各有各的不同的改法规则,其中ColorMatrixColorFilter的改变法则就是ColorMatrix的改变规则,它是ColorMatrix的应用,LightingColorFilter这个类只有一个初始化函数,

public LightingColorFilter(int mul, int add)

它的改变法则是图片的RGB值分别*mul+add,然后对255求余,最后得到新的RGB值,整个过程中alpha不参与改变。PorterDuffColorFilter这个类虽然也只有一个函数,但是它的改变法则就有点多了,

public PorterDuffColorFilter(int srcColor, PorterDuff.Mode mode)

改变法则跟选定的srcColor和mode都有关,具体后续再探讨,上代码

package com.hahajlu;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.drawable.Drawable;

import android.graphics.Rect;

import android.graphics.ColorFilter;

import android.graphics.LightingColorFilter;

import android.graphics.PorterDuffColorFilter;

import android.graphics.PorterDuff;

import android.graphics.ColorMatrixColorFilter;

public class ColorfilterActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(new SampleView(this));

}

}

class SampleView extends View

{

Drawable mdraw;

Drawable mdraw2;

Drawable mdraw3;

public SampleView(Context context)

{

super(context);

mdraw=context.getResources().getDrawable(R.drawable.btn_check_off);

mdraw2=context.getResources().getDrawable(R.drawable.btn_check_on);

mdraw3=context.getResources().getDrawable(R.drawable.btn_circle_normal);

mdraw.setBounds(new Rect(0,0,38,48));

mdraw2.setBounds(40, 0, 78, 48);

mdraw3.setBounds(80, 0, 120, 48);

}

public void drawSample(Canvas canvas,ColorFilter colorfilter)

{

mdraw.setColorFilter(colorfilter);

mdraw2.setColorFilter(colorfilter);

mdraw3.setColorFilter(colorfilter);

mdraw.draw(canvas);

mdraw2.draw(canvas);

mdraw3.draw(canvas);

}

@Override

protected void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

canvas.drawColor(Color.WHITE);

mdraw.draw(canvas);

mdraw2.draw(canvas);

mdraw3.draw(canvas);

canvas.translate(0, 50);

ColorFilter colorfilter=new ColorFilter();

drawSample(canvas,colorfilter);

canvas.translate(0, 50);

LightingColorFilter lcf=new LightingColorFilter(100,100);

drawSample(canvas,lcf);

canvas.translate(0, 50);

PorterDuffColorFilter pdcf=new PorterDuffColorFilter(0xffff0000,PorterDuff.Mode.SRC_ATOP);

drawSample(canvas,pdcf);

canvas.translate(0, 50);

ColorMatrixColorFilter cmcf=new ColorMatrixColorFilter(

new float[]{

1,0,0,0,100,

0,1,0,0,100,

0,0,1,0,100,

0,0,0,1,0

}

);

drawSample(canvas,cmcf);

super.onDraw(canvas);

}

}

运行后可以发现,ColorFilter colorfilter=new ColorFilter();这样的东东调用后是没有任何效果的,除了mdraw3.setColorFilter(colorfilter); 这样设置之外还可以在paint里边设置,paint.setColorFilter(colorfilter);

00分享举报

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值