Создать NinePatch во время выполнения - PullRequest
2 голосов
/ 28 декабря 2010

У меня есть бизнес-необходимость для создания объектов NinePatchDrawable во время выполнения, то есть внешнего .png-изображения, полученного с сервера, и оно должно быть применено на фоне кнопки (например) как девять патчей.

Я пытался создать объект NinePatchDrawable, но конструктор запрашивает у меня "byte [] chunck", который описывает патч.Дело в том, что я понятия не имею, как создать этот чанк из растрового изображения, в котором нет информации о 9patch.

Есть идеи по этой теме?Я вижу проблему с неправильной точки зрения?

Ответы [ 2 ]

1 голос
/ 23 апреля 2015

См. Мой ответ для Создание NinePatch / NinePatchDrawable во время выполнения

Я разрабатываю инструмент для создания NinePatchDrawable из (не скомпилированного) растрового изображения NinePatch. См https://gist.github.com/knight9999/86bec38071a9e0a781ee.

Способ NinePatchDrawable createNinePatchDrawable(Resources res, Bitmap bitmap) помогает тебе.

Например,

    ImageView imageView = (ImageView) findViewById(R.id.imageview);
    Bitmap bitmap = loadBitmapAsset("my_nine_patch_image.9.png", this);
    NinePatchDrawable drawable = NinePatchBitmapFactory.createNinePatchDrawable(getResources(), bitmap);
    imageView.setBackground( drawable );

, где

public static final Bitmap loadBitmapAsset(String fileName,Context context) {
    final AssetManager assetManager = context.getAssets();
    BufferedInputStream bis = null;
    try {
        bis = new BufferedInputStream(assetManager.open(fileName));
        return BitmapFactory.decodeStream(bis);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            bis.close();
        } catch (Exception e) {

        }
    }
    return null;
}

В этом случае my_nine_patch_image.9.png находится в каталоге активов.

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

Я ответил на это на вопрос 5519768 . Имейте в виду различия между «исходными» и «скомпилированными» изображениями NinePatch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...