Android原生转Cordova插件:如何设置图片及存储路径?
在Cordova插件中设置悬浮按钮图片的解决方案
我之前做Cordova插件开发时也遇到过一模一样的问题,刚好可以给你详细梳理下处理方式:
一、图片的存放位置
在你的Cordova插件目录里,需要复刻原生Android的资源目录结构:
- 插件根目录下新建
src/android/res/文件夹 - 在
res下创建drawable、drawable-hdpi、drawable-xhdpi等对应不同分辨率的子目录(和原生Android项目完全一致) - 把你的
icon_record图片(如果有多分辨率适配版本,就放到对应目录)丢进这些drawable子目录里
当你通过cordova plugin add安装插件时,Cordova会自动把这些资源合并到生成的Android项目的res目录中,和原生项目的资源管理逻辑完全对齐。
二、代码中引用图片的方式
Cordova插件里不能直接用R.drawable.icon_record——因为插件是独立模块,编译时不会生成自己的R类,而是复用宿主App的R类。所以我们需要用getIdentifier()动态获取资源ID,再设置给FAB。
替换你原生代码的示例如下:
// 获取宿主App的Resources对象 Resources res = cordova.getActivity().getResources(); // 动态获取图片资源ID:参数依次是资源名、资源类型、宿主App的包名 int drawableId = res.getIdentifier("icon_record", "drawable", cordova.getActivity().getPackageName()); FloatingActionButton floatingActionButton = ...; // 你的FAB实例 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { floatingActionButton.setImageDrawable(res.getDrawable(drawableId, cordova.getActivity().getTheme())); } else { floatingActionButton.setImageDrawable(res.getDrawable(drawableId)); }
额外注意事项
- 图片文件名必须符合Android资源命名规范:只能用小写字母、数字和下划线,不能有空格或特殊字符
- 如果要做屏幕分辨率适配,记得把对应分辨率的图片放到
drawable-hdpi、drawable-xhdpi等目录,Cordova会自动帮你合并到宿主项目 - 一定要在插件的
plugin.xml里正确声明资源文件,比如:
<platform name="android"> <resource-file src="src/android/res/drawable/icon_record.png" target="res/drawable/icon_record.png" /> <!-- 其他分辨率的图片也要一一对应声明 --> </platform>
内容的提问来源于stack exchange,提问作者Bahu
相关产品推荐
相关产品推荐

