0

Drawable.createFromPathまたはInputStreamを使用する他の多くのメソッドからロードするときに、9つのパッチのドローアブルを機能させることができません(つまり、9つのパッチの画像を拡大しています)。

同じ9つのパッチのロードは、whenリソースからロードするときに正常に機能します。これが私が試している方法です:

Button b = (Button) findViewById(R.id.Button01);

Drawable d = null;

//From Resources (WORKS!)
d = getResources().getDrawable(R.drawable.test);

//From Raw Resources (Doesn't Work)
InputStream is = getResources().openRawResource(R.raw.test);
d = Drawable.createFromStream(is, null);

//From Assets (Doesn't Work)
try {
InputStream is = getResources().getAssets().open("test.9.png");
d = Drawable.createFromStream(is, null);
} catch (Exception e) {e.printStackTrace();}

//From FileInputStream (Doesn't Work)
try {
FileInputStream is = openFileInput("test.9.png");
d = Drawable.createFromStream(is, null);
} catch (Exception e) {e.printStackTrace();}

//From File path (Doesn't Work)
d = Drawable.createFromPath(getFilesDir() + "/test.9.png");


if (d != null) b.setBackgroundDrawable(d);
4

2 に答える 2

1

非リソースベースのninepatchについて、ここで非常によく似た質問に答えました。.apkアーカイブ内からファイルを読み取るには、次のようなものを使用します。

String filepath = "com/kanzure/images/thx1138.png";
InputStream stream = getClass().getClassLoader().getResourceAsStream(filepath);
于 2011-04-02T03:38:49.203 に答える
0

私は非常によく似た問題を抱えています。ネットワーク経由で取得したNinePatchDrawableからを作成しようとしています。Bitmap私はまだその問題の解決策を見つけていません。Drawable.createFrom...メソッドが明らかに機能しないため、私の唯一のオプションは、9 パッチ チャンクをフォーマットする方法を理解し、コンストラクターを呼び出すことですNinePatch。詳細については、SO スレッドを参照してください。

于 2011-02-23T12:59:36.567 に答える