通常定义一个接口,需要一个类来进行实现。面向接口是指通过调用接口里面的方法可以执行被实现的方法。
例子:中间层为model,两个apk,插件apk去继续model的接口,并实现接口里面的方法,主apk负责加载插件apk,通过ClassLoad加载dex,并加载类,将类转成model层的接口,这样主apk就可以调用插件apk里面被实现的方法。
model:接口
package org.fdcch.pluginlibrary;
import android.content.Context;
public interface DimenUtils {
int sp2px(Context context, float spValue);
int px2sp(Context context, float pxValue);
int dip2px(Context context, int dipValue);
int px2dip(Context context, float pxValue);
}
插件apk实现的方法:类
package org.fdcch.plugin;
import android.content.Context;
public class DimenUtils implements org.fdcch.pluginlibrary.DimenUtils {
@Override
public int sp2px(Context context, float spValue) {
float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue