为何answerView函数的drawableView参数被定义为Int类型?
关于drawable资源标识用Int类型作为参数的设计逻辑
在Android开发中,R.drawable.xxx本质上就是一个整数类型的资源ID,这是Android系统资源管理机制的核心设计:
- Android编译项目时,会自动为
res目录下所有资源(包括drawable、layout、string等)分配唯一整数值,这些值被写入自动生成的R.java文件,所以R.drawable.wrong_option_drawable_bg本身就是个Int常量。 answerView函数的drawableView参数定义为Int,刚好匹配资源ID的原生类型,函数内部可以直接用这个Int值获取对应Drawable资源(比如通过Context.getDrawable(drawableView)方法),完全契合Android的资源使用规范。
举个函数内部实现的示例,就能直观理解:
private fun answerView(answer: Int, drawableView: Int) { // 通过资源ID获取Drawable对象 val targetDrawable = context.getDrawable(drawableView) // 根据answer找到对应选项的View,设置背景 val optionView = findViewById<View>(answer) optionView.background = targetDrawable }
这种设计的优势很明显:
- 复用系统原生的资源ID机制,无需额外封装自定义类型,减少冗余代码
- Int类型轻量、传递效率高,和Android框架大量使用Int作为资源标识参数的风格保持一致
内容的提问来源于stack exchange,提问作者Asad Shoyeb Khan
相关产品推荐
相关产品推荐

