为了账号安全,请及时绑定邮箱和手机立即绑定

模仿安卓源码,手写过时的方法兼容低版本

标签:
Android

  经常写代码时候,会看到某个方法上面画一条横线,注释写的是此方法已过时,推荐使用XXX某某方法替代。我觉得这个提示很有用。在实际开发中,有时候老项目版本迭代之后,用了最新的API,为了兼容老版本,要把老方法保留,还要新增很多新方法,无疑增加了工作量。假如这时候引入安卓源码的这种设计思想,问题就会变得很简单了。下面简单的来讲一下:

  我们经常会使用getColor(R.color.XXX)获取颜色的资源文件,但是在安卓6.0开始,这个方法被标注为过时,推荐使用两个参数的方法替代,如下图所示:

过时的方法

  那么我怎么才能象系统源码那样去做呢?别着急,干货来了。。

首先,写一个方法,加上 @Deprecated 注解,表示这个方法已过时,

然后在上面加上文档注释, @deprecated 请用 {@link 类名#方法名(参数...)} 替代

  举例如下,下面是我写的一个工具类:

public class ResourceUtils {    public static ResourceUtils resourceUtils;    public Context mContext;    public ResourceUtils(Context context) {        this.mContext = context;
    }    public static ResourceUtils getInstance(Context context) {        if (resourceUtils == null) {            synchronized (ResourceUtils.class) {                if (resourceUtils == null) {
                    resourceUtils = new ResourceUtils(context);
                }
            }
        }        return resourceUtils;
    }    /**
     * @param colorResId
     * @removed
     * @deprecated 请用 {@link ResourceUtils#obtainColorResources(int)} 替代
     */
    @Deprecated
    public ResourceUtils getColorResources(int colorResId) {
        mContext.getResources().getColor(colorResId);        return this;
    }    /**
     * @param colorResId
     * @return
     */
    @TargetApi(23)    public ResourceUtils obtainColorResources(int colorResId) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            ContextCompat.getColor(mContext,colorResId);
        } else {
            mContext.getResources().getColor(colorResId);
        }        return this;
    }
}

调用方法如下:

调用方法


  怎么样?是不是很装(6)逼?别人用这个方法的时候,一看过时了,说明这个方法兼容的版本比你编译的版本要低,那么切换到新的方法就没问题了。有着轻度强迫症我,是不会看到这种过时方法存在的。

  小伙伴们,快来试试看吧。从此让你的代码逼格起来!

原文链接:http://www.apkbus.com/blog-944603-77029.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消