在开发过程中经常需要将代码封装后交付使用,在Android中也是如此

下面是封装的步骤

创建一个没有Activity的Android的工程

[置顶] Android中以JAR形式封装控件或者类库_第1张图片

1将res中的资源全部删除

[置顶] Android中以JAR形式封装控件或者类库_第2张图片

2删除AndroidManifest.xml中资源的引用

类似这样的代码android:icon="@drawable/icon" android:label="@string/app_name"

其实AndroidManifest在我们发布jar的时候并不发布,之所以这样做不过是为了编译时好看而已。

view plain copy to clipboard print ?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3. package="MyAndroid.Widget"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. </manifest>
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="MyAndroid.Widget" android:versionCode="1" android:versionName="1.0"> </manifest>

3建立自己的Java控件

view plain copy to clipboard print ?
  1. packageMyAndroid.Widget;
  2. importjava.io.InputStream;
  3. importjava.net.URL;
  4. importandroid.content.Context;
  5. importandroid.content.res.AssetManager;
  6. importandroid.util.AttributeSet;
  7. importandroid.view.View;
  8. importandroid.graphics.Bitmap;
  9. importandroid.graphics.BitmapFactory;
  10. importandroid.graphics.Canvas;
  11. importandroid.graphics.Color;
  12. importandroid.graphics.Paint;
  13. importandroid.graphics.Rect;
  14. publicclassMyViewextendsView{
  15. publicMyView(Contextcontext){
  16. super(context);
  17. //TODOAuto-generatedconstructorstub
  18. }
  19. publicMyView(Contextcontext,AttributeSetattrs){
  20. super(context,attrs);
  21. //TODOAuto-generatedconstructorstub
  22. }
  23. publicMyView(Contextcontext,AttributeSetattrs,intdefStyle){
  24. super(context,attrs,defStyle);
  25. //TODOAuto-generatedconstructorstub
  26. }
  27. @Override
  28. protectedvoidonDraw(Canvascanvas){
  29. //TODOAuto-generatedmethodstub
  30. super.onDraw(canvas);
  31. canvas.drawColor(Color.GRAY);
  32. Paintpaint=newPaint();
  33. paint.setAntiAlias(true);
  34. paint.setColor(Color.RED);
  35. canvas.drawRect(newRect(10,10,20,20),paint);
  36. BitmapbgImg=getImageFromAssetFile("png-040.png");
  37. canvas.drawBitmap(bgImg,20,20,null);
  38. }
  39. privateBitmapgetImageFromAssetFile(StringfileName){
  40. Bitmapimage=null;
  41. try{
  42. AssetManageram=getContext().getAssets();
  43. InputStreamis=am.open(fileName);
  44. image=BitmapFactory.decodeStream(is);
  45. is.close();
  46. }catch(Exceptione){
  47. }
  48. returnimage;
  49. }
  50. }
package MyAndroid.Widget; import java.io.InputStream; import java.net.URL; import android.content.Context; import android.content.res.AssetManager; import android.util.AttributeSet; import android.view.View; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; public class MyView extends View { public MyView(Context context) { super(context); // TODO Auto-generated constructor stub } public MyView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public MyView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); canvas.drawColor(Color.GRAY); Paint paint=new Paint(); paint.setAntiAlias(true); paint.setColor(Color.RED); canvas.drawRect(new Rect(10,10,20,20), paint); Bitmap bgImg = getImageFromAssetFile("png-040.png"); canvas.drawBitmap(bgImg, 20, 20, null); } private Bitmap getImageFromAssetFile(String fileName){ Bitmap image = null; try{ AssetManager am = getContext().getAssets(); InputStream is = am.open(fileName); image = BitmapFactory.decodeStream(is); is.close(); }catch(Exception e){ } return image; } }

注意 如果要在jar中封装自己的资源,要把资源放入assets目录中

我的demo包中我打入了一个png图片,资源的名字不能和工程中的资源名字重复。

4 在 Package Explorer Panel的工程名上 点击右键,选择 Export

[置顶] Android中以JAR形式封装控件或者类库_第3张图片

Java-> JAR file 点下一步

[置顶] Android中以JAR形式封装控件或者类库_第4张图片

去掉.classpath, .project, AndroidManifest.xlm, default.properties上的选择

输入 Jar的输出路径 点Finish

[置顶] Android中以JAR形式封装控件或者类库_第5张图片

这样我们的libary 就创建完成了

使用方法

在打开工程的Properties窗口

选择Java Build Path中的Libraries页

点击 Add External JARs 选择我们刚刚生成的jar文件

[置顶] Android中以JAR形式封装控件或者类库_第6张图片

这样我们就可以使用了编译好的jar库了

[置顶] Android中以JAR形式封装控件或者类库_第7张图片

<MyAndroid.Widget.MyView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/myview"
>
</MyAndroid.Widget.MyView>

MyView myview=(MyView) findViewById(R.id.myview);

更多相关文章

  1. 几个Android控件属性笔记
  2. Android显示时间和日期的控件的使用总结
  3. [置顶] 《Android 之美 从0到1 -- 高手之路》
  4. Android基础 | 控件基础 | ImageView用法
  5. 高级控件之网格视图(GridView)
  6. [置顶] Android学好Shape不再依赖美工
  7. Android圆环控件
  8. [置顶] Android入门系列一(Android学习方法)

随机推荐

  1. Android(安卓)SQLiteOpenHelper Sqlite数
  2. Android架构组件-Navigation的使用(一)
  3. android配置X86虚拟机
  4. Android兼容android7.0、及Android8.0以
  5. android中widgets的简单实现
  6. Android(安卓)EventBus使用,粘性事件post
  7. Android(安卓)中各种XML文件的作用
  8. Window下android 模拟器SD卡的使用方法
  9. android经典开源代码集合
  10. Android性能优化(5):APK瘦身优化