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="@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等方法设置 文字 背景 前景资源。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。