android jar布局源码,图片,布局,string等)打进jar包

这篇博客介绍了如何处理jar包只包含源代码而缺少资源文件的问题。通过将资源文件复制到主项目并使用反射类MResource,可以根据资源名称获取ID来加载布局和设置图片。在项目中打开jar包中的JarActivity时,需要在清单文件注册并调用相应的Intent。
摘要由CSDN通过智能技术生成

解决如下:由于打包出来的jar只有源代码的.class 文件,不包含资源文件,我们就把jar包中用到的资源放到你使用

该jar的工程里面。然后通过反射即可,这里给出反射类:

public class MResource {

public static int getIdByName(Context context, String className, String resName) {

String packageName = context.getPackageName();

int id = 0;

try {

Class r = Class.forName(packageName + ".R");

Class[] classes = r.getClasses();

Class desireClass = null;

for (Class cls : classes) {

if (cls.getName().split("\\$")[1].equals(className)) {

desireClass = cls;

break;

}

}

if (desireClass != null) {

id = desireClass.getField(resName).getInt(desireClass);

}

} catch (Exception e) {

e.printStackTrace();

}

return id;

}

}

这里演示项目中打开jar中的activity的实例

这里给出jar中activity的代码:

public class JarActivity extends AppCompatActivity {

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(MResource.getIdByName(this, "layout", "jar_layout"));

ImageView mPlayerLogo = (ImageView) this.findViewById(MResource.getIdByName(this,

"id", "logo"));

mPlayerLogo.setImageResource(MResource.getIdByName(this, "drawable", "ic_launcher"));

}

}

**这里:利用反射根据资源名字获取资源ID加载布局+设置图片

在项目中打开jar的JarActivity的实现代码如下:

注:由于jar没有布局文件和资源文件,所以需要把布局(jar_layout)copy到项目中,aar则不需要**

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViewById(R.id.btn_jar).setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent();

intent.setClassName(getApplication(), "com.zhh.librarydemo.JarActivity");

startActivity(intent);

}

});

}

}

jar_layout布局:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/logo"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

在清单文件中注册:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值