最近在作一个android player项目,想要默认使用android的internal资源,好比: java
com.android.internal.R.layout.media_controller可是,直接使用会报编译错误:
com.android.internal.R does not exist android
You cannot import the internal android class, as the internal.R class isn't visible.
可是能够经过其余的方式来访问,以下: git
int mediaControllerId = Resources.getSystem().getIdentifier("media_controller", "layout", "android"); View layout = ((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(mediaControllerId, this);同理,能够访问:
mPrevButton = (ImageButton) layout.findViewById(Resources.getSystem().getIdentifier("prev","id", "android")); mProgress = (ProgressBar) layout.findViewById(Resources.getSystem().getIdentifier("mediacontroller_progress","id", "android")); mPauseButton = (ImageButton) layout.findViewById(Resources.getSystem().getIdentifier("pause","id", "android"));
getIdentifier的使用方式以下,会返回name对应的id, github
Resources.getSystem().getIdentifier(name, defType, defPackage)
而上述name/defType/defPackage如何获得?能够从源码中得到相应的信息 this