Android动态设置纯色图标的颜色

https://blog.csdn.net/qq_20082961/article/details/73718363

以前做了一个流量悬浮窗,悬浮窗里有当前网络状态的图标和网速的文字,想实现改变文字颜色的同时改变状态图标的颜色 
 
实现后分享出来让大家参考下

先上图

以下是关键代码

<ImageView
  android:id="@+id/iv_icon"
  android:layout_width="150dp"
  android:layout_height="150dp"
  android:src="@drawable/icon"/>
//设置图标的颜色
private void setIconColor(ImageView icon, int r, int g, int b, int a) {
    float[] colorMatrix = new float[]{
            0, 0, 0, 0, r,
            0, 0, 0, 0, g,
            0, 0, 0, 0, b,
            0, 0, 0, (float) a / 255, 0
    };
    icon.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
}
  • 想知道具体原理的可以看一下这篇文章

Android学习笔记22:图像颜色处理(ColorMatrix)

如果图标是不透明的并且不需要透明度的变化,还有更简单的实现方法

icon.setColorFilter(Color.argb(255, r, g, b));

原文地址:https://www.cnblogs.com/bluestorm/p/9225785.html

时间: 2024-12-10 18:06:22

Android动态设置纯色图标的颜色的相关文章

Android 动态设置控件高度

TextView textView= (TextView)findViewById(R.id.textview); LinearLayout.LayoutParams linearParams =(LinearLayout.LayoutParams) textView.getLayoutParams(); //取控件textView当前的布局参数 linearParams.height = 20;// 控件的高强制设成20 linearParams.width = 30;// 控件的宽强制设成3

android动态设置控件的高宽

关键代码: LayoutParams para; para = mTabImg.getLayoutParams(); para.width=one; mTabImg.setLayoutParams(para); mTabImg是你要设置的控件  首先拿到后就可以设置 Display currDisplay = getWindowManager().getDefaultDisplay();// 获取屏幕当前分辨率 int displayWidth = currDisplay.getWidth();

Android程序设置软件图标

默认新建的工程里会设置一个系统默认图标 如果没有,就在工程的AndroidManifest.xml文件中添加下面的语句即可. 这里需要预先在/res/drawable/目录下放一个叫icon.png的图标图片(48×48),并且在/res/values/strings.xml中定义app_name这个字符串(就是程序名) <application android:icon="@drawable/icon" android:label="@string/app_name&

Android 动态设置TextView drawableLeft的方式

对于TextView或者EditText动态设置drawableLeft,drawableRight,drawableTop,drawableBottom,drawableStart,drawableEnd的方法总结 Android中提供了许多动态设置的方法 但是用中容易造成的问题是,我们往往只调用了如上的一些方法,但并没有将Drawable的Bounds设置为特定的数据,导致这些图片无法显示,因此,做如下操作即可 设置右方向上的图片 Drawable drawable = getResourc

Android 动态设置margin

android的view中有setPadding,但是没有直接的setMargin方法.如果要在代码中设置该怎么做呢? 可以通过设置view里面的 LayoutParams 设置,而这个LayoutParams是根据该view在不同的GroupView而不同的. 布局文件如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://sc

Android动态设置View的位置和大小

以LinearLayout中的控件ImageView为例 LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.linearlayout); ImageView imageView = new ImageView(this); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(100, 100); params.setMargins(5,

Android动态设置字体颜色

步骤: 1.在values文件夹下的strings.xml文件里添加颜色:比如 <color name="ccc">#ccc</color> 2.如果你直接这样写: tv.setTextColor(R.color.ccc); 理论上是不行的,不过我发现有时行,有时不行. 正确的写法应该是: tv.setTextColor(this.getResources().getColor(R.color.ccc)); ok! 所以在java代码里用到项目资源的话,不要忘记

Android 动态更换桌面图标

每当双 11.12 来临之际,Android 手机 Launcher 中的淘宝.天猫图标就会变成双 11.12 主题的图标.实现了动态切换图标.名称 MainActivity package com.example.modifyappdemo; import android.app.Activity; import android.app.ActivityManager; import android.content.ComponentName; import android.content.p

android 动态设置TextView值,例:金额添加

一说到动态递增设置TextView值,非常多人应该立即就想到起个线程,让后在线程中睡眠指定时间,使用handler发送消息更新TextView值! 这样是实现了动态递增设置TextView值可是效率不咋滴吧,须要的话能够自己去试试,如1到100,10s内显示完,会感觉到有点卡的. 这里有个更好的方法,使用ValueAnimator进行设置,并且不须要自己去计算每次叠加后须要间隔的时间,以下是代码: public static void autoIncrement(final TextView t