2011-01-18 2 views
0

Я хотел бы создать изображение динамически, которое объединено с некоторыми другими изображениями.Создать динамическое изображение

Другие изображения выбираются случайным образом из предварительно загруженного массива изображений растровых изображений. Как это можно сделать?

+0

у вас есть код для отображения? – Neutralizer

ответ

0

Используйте массив Drawables, чтобы обернуть каждое из ваших изображений. В каждом примерном экземпляре укажите, как это изображение должно отображаться на холсте, переопределяя метод onDraw.

Вы можете использовать класс LayerDrawable для управления всеми чертежами (он также дает вам несколько полезных методов).

Я не знаю, каким будет окончательное изображение, но похоже, что позиционирование/размер одного изображения может повлиять на расположение другого изображения. Это означает, что вы должны знать, как все изображения, прежде чем давать каждому из них свои физические размеры.

Вот что я хотел бы сделать:

1) Создание мастер-класс, который расширяет View, он держит массив (который вводимого коэффициента действительно ваши изображения) и вычисляет правильные координаты с учетом всех изображений.

2) Дайте ему конструктор, который принимает ваш

вводимого коэффициент

3) Создать класс (ы), который расширяет вытяжку для вас растровых изображений. Дайте ему 2 поля, один с логическими размерами/координатами, другой с физическими размерами/координатами. Логические должны быть заполнены при строительстве, поскольку они просто считывают естественные пропорции растрового изображения. Физические будут заполнены позже. Методы onDraw этих классов должны использовать значения из физических координат.

4) Дайте мастеру класс класса большой уродливый математический метод, который учитывает все логические размеры изображений. Математический метод будет использовать те, а также размеры экрана, чтобы выяснить, какими должны быть физические размеры каждого изображения.

5) Заполните все физические атрибуты Drawable с помощью результатов математического метода.

6) Сделать мастером Просмотреть класс 'onDraw, либо добавить его к макету извне, либо вызвать invalidate(), если он уже находится на макете.

Надеюсь, что это поможет

Смежные вопросы