Android中以JAR形式封装控件 或者类库

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

下面是封装的步骤

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

Android中以JAR形式封装控件 或者类库

1将res中的资源全部删除

Android中以JAR形式封装控件 或者类库

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

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

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

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

3建立自己的Java控件

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

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

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

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

Android中以JAR形式封装控件 或者类库

  Java-> JAR file 点下一步

Android中以JAR形式封装控件 或者类库

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

 输入 Jar的输出路径 点Finish

Android中以JAR形式封装控件 或者类库

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

使用方法

在打开工程的Properties窗口

选择Java Build Path中的Libraries页

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

Android中以JAR形式封装控件 或者类库

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

Android中以JAR形式封装控件 或者类库

<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);

相关推荐