首页 > 代码库 > Android 将Activity打成jar包 供第三方使用 彻底解决XML 图片 文字资源不可悲打入到jar包的问题!
Android 将Activity打成jar包 供第三方使用 彻底解决XML 图片 文字资源不可悲打入到jar包的问题!
做项目需要将程序打包成jar文件供第三方使用项目要求(将图片文字资源写到到jar包中,第三方调用时,仅需要在AndroidManifest.xml配置下相应的Activity通过StartActivity方式拉起Activity):在网上找了好久,并依靠查看Android源码最终解决了问题
一:需要明白知识:
1.APK中的Res目录无法通过Eclipse的Export方式导入到jar包中而Assert可以
2.Android程序在编译成APK时需要通过aapt将Res目录下的资源生成对应的Id而Assert目录下的资源不会在R文件中生成Id
对XML资源学习:
1.AssetManager中提供XmlResourceParseropenXmlResourceParser(String fileName)这个方法可以讲编译后的XML文件生成一个资源遍历对象通过该对象可以获取一个整个布局的View树
2.通过 setContentView(view)可以设置在Oncrea方法中设置Activity的布局
对图片资源学习:
1.将非.9图片放入到Assert目录下通过获取文件资源去生成Drawable对象 Button等其他空间的点击效果可以通过StateListDrawable来实现
2.对.9图片进行处理让需要先编译去除掉上下左右的黑色的拉伸区域显示区域的标记使用方法与非.9图一致
对字符学习
1将字符写在Java文件中,写到一个静态的Map中,通过kay_value可以再全局都获取到
二:具体操作过程:
1.先使用普通的方式在XML文件中设置你的布局并在运行Activity查看界面效果
2.删除你在XML文件中设置的图片,字体资源的属性,因为Res目录无法导入到Jar包中,无法在R文件中生成对应资源的Id,所以通过android:src=http://www.mamicode.com/"@drawable/uac_logo"此类方式设置的图片资源均不会被找到,在第三方获取编译后的XMLlayou文件时会抛出资源没有被照到的异常
2.取出bin目录下已经编译好的APK文件,解压缩取出编译好的XML文件图片资源放入到Assert目录下
3.在Activity的onCreat方法中使用XmlResourceParseropenXmlResourceParser(String fileName)方式获取Layout文件通过setContentView(view)设置为整个Activity的布局 使用其中的控件(ButtonTextView等)时仍可以通过R.id.XX的方式获取此时通过解析XML文件,系统以及获取到你这个XMl中各个控件Id(此时的Id是否会与第三方资源Id冲突这个问题我觉得不会发生,毕竟findViewById()给出的定义是寻找该XML下的控件的Id有哪位对这个毕竟清楚请教下?)
4.获取到控件之后,可以通过setTextsetBackground setImageDrawable等方法设置文字背景前景资源。
Android 将Activity打成jar包 供第三方使用 彻底解决XML 图片 文字资源不可悲打入到jar包的问题!