Фон в Andoid приложении

Все-таки, дизайн – дело важное, к тому же в мобильных приложениях, где конкуренция крайне велика. И начинать приходится с малого. Буковки там, кнопочки и фон приложения. Собственно про фон я сейчас и расскажу.
Сделать фон черным или зеленым не сложно. Достаточно указать цвет xml файле нужного intent:

<TableLayout android:background="#000000" />

Теперь задачка посложнее – сделать фоновый рисунок. Ну не сильно посложнее, если быть честным. Первое что мы делаем – это указываем откуда брать информацию по рисунку:

<TableLayout android:background="@drawable/background" />

Теперь создаем в папке res новую папку с названием drawable, а в ней файл background.xml, который наполняем такими данными:

<bitmap xmlns:android=http://schemas.android.com/apk/res/android android:src="@drawable/backgroundpicture" />

Главное не забыть положить в папку drawable само изображение и обозвать его backgroundpicture.png.
Запускаем эмулятор и видим, что получили мы именно то, что хотели.
А теперь представим, что хотим мы не одну большую картинку положить, а размножить маленькую. Замостить, так сказать. Ну вот сейчас то как раз и начнется… ничего. Просто немного изменяем background.xml файл:

<bitmap xmlns:android=http://schemas.android.com/apk/res/android android:src="@drawable/backgroundpicture" android:tileMode="repeat" />

Вот и все. Теперь наша маленькая картинка, повторенная бесконечное число раз создает фон программы. Не правда ли все элементарно?
Ну и чтоб всем стало совсем все понятно скажу – в LinearLayout добавлять android:background нужно в том случае если вы хотите статически замощённый фон, а в

<ScrollView><TableLayout android:background="@drawable/repeatline" / ></ScrollView> 

чтоб фон скролился вместе с текстом в программе.

Будущее JavaFX. Часть 2

Как и было обещано продолжаю. Что же нас ждет в свежем 2.0 релизе JavaFX кроме смены парадигмы разработки?

Так как последовательности в JavaFX неизменяемы и не поддерживают null-значения, то требовались некоторые изменения. Мы их и получим. Обещаны ObservableList и ObservableMap.

Поддержка многопоточности станет более полной и удобной (например, исчезнет необходимость в классе JavaTaskBase). Кроме того, появится возможность запускать процесс создания сцены в другом потоке, а затем объединять его с основным.

Улучшиться, по сравнению с версией 1.3 поддержка клавиатуры, то есть можно будет строить приложения, с которыми будет легче работать с клавиатуры.

Улучшиться как скорость работы работы приложения, так и скорость его загрузки. Кроме того с меньшими затратами будет работать и анимация.

Наконец-то мы получим новый движок рендеринга Prism, который будет поддерживать как DirectX, так и OpenGL. Кроме того будет возможность программного рендеринга. Появится компонент, позволяющий изменить способ рендеринга на Prism с AWT.

Также мы увидим новые контейнеры, которые позволят работать с ними из CSS. Это очень хорошо, так как позволит более гибко управлять своим приложением. Появится контейнер GridLayout с огромными возможностями по компановке интерфейса. Да и анимация, настраиваемая через CSS будет огромным прорывом.

Работа с медиа данными также улучшится. Во-первых увеличится производительность. Улучшится поддержка аудио с помощью нового аудио стека, что позволит мгновенно проигрывать некоторый звук, что критично при, например, реакции на нажатие кнопки. Появится поддержка полноэкранного режима в видеопроигрывателе. Ну и важнейшими нововведениями станут маркеры в медиапотоке, позволяющие привязывать события в программе к некоторым моментам в медиа, а также привязка медиа к timeline.

Наконец, в стандартные компоненты придет TableView. Ждали мы этого долго и наконец дождались. Еще появятся SplitView, TabView. MediaPlayer позволит сразу приступать к работе с медиа, так на этом компоненте уже будут все необходимые элементы управления.

С интернетом тоже будет бОльшая интеграция. Появится компонент WebView, отображающий web страницу, а также WebBrowsr (сразу готовый к серфингу браузер).

Ну вот, в принципе, и все. Нововведений много, а взлетит ли это все или нет – узнаем уже в следующем году.

Будущее JavaFX. Часть 1

Мда, немало новостей появилось вокруг столь мной любимого JavaFX. Мы все надеялись на экстенсивное развитие языка, а никак не на интенсивное. Но Oracle нас удивил. Я думаю, что немногие ожидали столь радикального хода событий.

Я, конечно же, говорю об отказе от языка JavaFX Script. В чем была необходимость этого события я понять не в силах, но несмотря на все наши причитания во 2-й версии JavaFX, столь полюбившегося нам синтаксиса мы уже не увидим. Естественно, уже появился fork (который получил название Visage), но все же без такого могущественного союзника как Oracle (или если не получит поддержки, например, Apache) конкурировать на рынке он, к сожалению, не сможет.

Что же нам предлагает Oracle взамен? А предлагает она нам тоже самое, но под другим соусом. Мы увидим отличный продукт, но с синтаксисом классической Java. Разработчик получит GUI, но получать мы его будем не из скриптового языка, а из JavaBeans, содержащего все необходимые компоненты. То есть, богатство интерфейса JavaFX объединится с богатством самого языка Java. Во всяком случае, так обещается, а мы будем надеяться, что все не усложниться до того, что работать с этим будет невозможно.

В следующем посту посмотрим на JavaFX 2.0, так что далеко от мониторов не отходите.