Androidがjarパッケージでリソースファイルを使用する方法

1864 ワード

Androidはjarパッケージに打ち込む際にresなどのリソースファイルを携帯することは許されないため,リソースファイルを次のように使用する.
1画像またはリソースをassertフォルダに入れ、jarパッケージにパッケージするときにassertファイルをチェック
assertファイルにwebを入れたらdelete.pngのピクチャボタンに背景ピクチャを設定する
imageButton.setImageBitmap(stringBitmap(context,"web_delete.png"));

画像の設定方法
public static Bitmap stringBitmap(Context context, String string) {
    AssetManager assets = context.getAssets();
    InputStream is = null;
    try {
        is = assets.open(string);
    } catch (IOException e) {
        e.printStackTrace();
    }
    BitmapFactory.Options options = new BitmapFactory.Options();
    Bitmap bitmap = BitmapFactory.decodeStream(is, null, options);
    return bitmap;
}

画像などのマルチメディアファイルだけでなく、XMLレイアウトなどのファイルやidのあるファイルをパッケージ化する必要がある場合はどうすればいいのでしょうか.私は友盟などのjarパッケージを観察して、彼らはすべてリソースファイルをjarパッケージを引用する工事に暴露して、そのresファイルの中に置くことを発見しました.
例えば.必要なaaaをpngはBエンジニアリングのresファイルに格納され、BエンジニアリングはA jarパッケージを参照します.Aでは、あるボタンに背景画像コードを付ける必要があります.
int bg_id = context.getResources().getIdentifier("aaa",
  "drawable", context.getPackageName());
if (bg_id != 0) {
    imageButton.setBackgroundResource(bg_id);
}

2番目のパラメータtype:Rの内部クラス名、例えば「drawable」、「string」、「color」、「dimen」、「layout」など、インタフェースについてよく使用されるデータ型
ちなみに、jarパッケージでダイナミックレイアウトを使用する必要がある場合は、通常LayoutParamsを使用しますが、このプロパティは親のLayoutParamsを使用します.メトリック単位を設定するときはPX単位を受け入れますが、XMLファイルではDPを単位として使用することが多いので、単位変換として以下の2つの方法が提供されています.
public static int dp2px(Context context, float dipValue) {
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int) (dipValue * scale + 0.5f);
}

public static int px2dp(Context context, float pxValue) {
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int) (pxValue / scale + 0.5f);
}