NinePatchDrawable из Drawable.createFromPath или FileInputStream - PullRequest
0 голосов
/ 29 ноября 2010

Я не могу заставить работать девять патчей, которые можно нарисовать (т. Е. Растягивает изображение девяти патчей) при загрузке из Drawable.createFromPath или из ряда других методов, использующих InputStream.

Загрузка тех же девятипатч отлично работает при загрузке из когда ресурсов.Вот методы, которые я пробую:

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

Ответы [ 2 ]

1 голос
/ 02 апреля 2011

Я ответил на очень похожий вопрос здесь о девяти патчах, не основанных на ресурсах. Чтобы прочитать файл из архива .apk, я использую что-то вроде этого:

String filepath = "com/kanzure/images/thx1138.png";
InputStream stream = getClass().getClassLoader().getResourceAsStream(filepath);
0 голосов
/ 23 февраля 2011

У меня очень похожая проблема.Я пытаюсь создать NinePatchDrawable из Bitmap, который я получил по сети.Я до сих пор не нашел решение этой проблемы.Поскольку методы Drawable.createFrom..., по-видимому, не работают, мне кажется, что я могу только понять, как форматировать блок из девяти патчей, и вызвать конструктор NinePatch.Подробнее см. SO-поток .

...