Androidがjarパッケージでリソースファイルを使用する方法
1864 ワード
Androidはjarパッケージに打ち込む際にresなどのリソースファイルを携帯することは許されないため,リソースファイルを次のように使用する.
1画像またはリソースをassertフォルダに入れ、jarパッケージにパッケージするときにassertファイルをチェック
assertファイルにwebを入れたらdelete.pngのピクチャボタンに背景ピクチャを設定する
画像の設定方法
画像などのマルチメディアファイルだけでなく、XMLレイアウトなどのファイルやidのあるファイルをパッケージ化する必要がある場合はどうすればいいのでしょうか.私は友盟などのjarパッケージを観察して、彼らはすべてリソースファイルをjarパッケージを引用する工事に暴露して、そのresファイルの中に置くことを発見しました.
例えば.必要なaaaをpngはBエンジニアリングのresファイルに格納され、BエンジニアリングはA jarパッケージを参照します.Aでは、あるボタンに背景画像コードを付ける必要があります.
2番目のパラメータtype:Rの内部クラス名、例えば「drawable」、「string」、「color」、「dimen」、「layout」など、インタフェースについてよく使用されるデータ型
ちなみに、jarパッケージでダイナミックレイアウトを使用する必要がある場合は、通常LayoutParamsを使用しますが、このプロパティは親のLayoutParamsを使用します.メトリック単位を設定するときはPX単位を受け入れますが、XMLファイルではDPを単位として使用することが多いので、単位変換として以下の2つの方法が提供されています.
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);
}