Android getResources().getColor()方法过时

本文探讨了在检查代码过程中发现的getResources().getColor()方法被标记为过时的问题,并介绍了替代方案ContextCompat类下的getColor方法。新方法根据不同SDK版本进行适配,提供更稳定的颜色资源获取方式。

今天在检查代码的时候发现getResources().getColor()方法中间画了一条横线,被标记为过时了
在这里插入图片描述
秉承着过时了就肯定有新的想法 百度查了一下资料 果然有那就是
ContextCompat类下的getColor方法 该方法有两个参数
一个是Context 另一个就是颜色的资源ID

   @ColorInt
   public static final int getColor(Context context, @ColorRes int id) {
       final int version = Build.VERSION.SDK_INT;
       if (version >= 23) {
           return ContextCompatApi23.getColor(context, id);
       } else {
           return context.getResources().getColor(id);
       }
   }

可以看到新的getColor方法在内部做了判断 如果sdk大于6.0的时候和小于6.0的时候做了不同的处理

你提到的代码中出现的箭头 `->` 是 **Java 8 引入的 Lambda 表达式语法**,用于简化匿名内部类的写法,尤其在只包含一个方法的接口(函数式接口)中非常常见。 --- ### 📌 示例中的箭头表达式含义 ```java incomeButton.setOnClickListener(v -> { // 这里是点击按钮后执行的代码 }); ``` 这行代码的意思是: - 给 `incomeButton` 按钮设置一个点击监听器。 - 当用户点击该按钮时,会执行 `->` 后面的大括号 `{}` 中的内容。 - `v` 是参数,代表被点击的视图(View),即 `incomeButton` 本身。 --- ### 🔍 等价于传统匿名类写法如下: ```java incomeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 这里是点击按钮后执行的代码 } }); ``` 使用 Lambda 表达式后,代码更简洁、易读。 --- ### 🧠 Lambda 表达式语法结构 Lambda 的基本语法为: ``` (参数列表) -> { 方法体 } ``` #### 示例: ```java // 带参数和多条语句 (View v) -> { System.out.println("按钮被点击"); doSomething(); } // 无参数 () -> System.out.println("Hello") // 单个表达式可省略大括号 (int a, int b) -> a + b ``` --- ### ✅ 在你的代码中逐行解释: ```java incomeButton.setOnClickListener(v -> { selectedType = EnumType.INCOME; incomeButton.setBackgroundColor(getResources().getColor(android.R.color.holo_red_light)); expenseButton.setBackgroundColor(getResources().getColor(R.color.bg_gray)); // 隐藏支出图标组 expenseCategoryGroup.setVisibility(View.GONE); expenseCategoryOther.setVisibility(View.GONE); // 显示收入图标组 incomeCategoryGroup.setVisibility(View.VISIBLE); incomeCategoryOther.setVisibility(View.VISIBLE); // 绑定收入图标点击事件 setupImageButtonClickListener(salaryButton); setupImageButtonClickListener(debtButton); setupImageButtonClickListener(bonusButton); setupImageButtonClickListener(investmentButton); setupImageButtonClickListener(accidentButton); setupImageButtonClickListener(otherIncomeButton); }); ``` 这段代码的作用是: 1. 设置 `incomeButton` 的点击监听器; 2. 点击后将收支类型设为“收入”:`selectedType = EnumType.INCOME;` 3. 改变按钮背景颜色以表示当前选中状态; 4. 隐藏支出相关的图标布局; 5. 显示收入相关的图标布局; 6. 为所有收入类别的图标绑定点击事件。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值