做项目需要打包成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等方法设置 文字 背景 展望资源。
版权声明:本文博客原创文章。博客,未经同意,不得转载。