среда, 27 апреля 2011 г.

OpenGL ES Texture и GalaxyTab

Задача - нарисовать плоскость с натянутой текстурой. Нашел демку, которая прекрасно работает на эмуляторе:
http://www.anddev.org/android-2d-3d-graphics-opengl-problems-f55/draw-a-bitmap-using-opengl-t14920.html

И все бы ничего, но при запуске данного кода на девайсе Galaxy Tab вместо текстуры - пустой белый квадрат.

Примерно час убил на гугление и эксперименты, и оказалось, что нужно добавить два обязательных условия:
1. Размер текстуры должен быть кратным 2: 32х32, 64х64, 128х128 и не превышать 128 (видимо хардварное ограничение)
2. Текстуры нужно хранить в drawable-nodpi

В решении проблемы очень помогли комменты вот к этой ветке:
http://blog.jayway.com/2010/12/30/opengl-es-tutorial-for-android-%E2%80%93-part-vi-textures/

четверг, 21 апреля 2011 г.

Отказываемся от RelativeLayout

Задача - реализовать вот такой макет:


Думаете потребуется RelativeLayout? А вот и нет! Все можно сделать с помощью одних только LinearLayout. Там есть замечательный атрибут layout_weight, который позволяет задавать вес элемента (не путать с layout_width!). Поскольку по-умолчанию веса всех элементов равны нулю, достаточно у ListView сделать layout_weight="1" и он сразу же займет все свободное место вверху, прижав строчку с кнопкой к низу экрана. Точно также - задав у строки ввода layout_weight="1" мы прижимаем кнопку "Add" к правому краю.

Другие возможности - можно сделать ряд одинаковых кнопок, размер которых будет одинаков для всех разрешений экрана - достаточно установить у каждой тот самый layout_weight. Исключительно полезный атрибут - поэкспериментируйте!

Устанавливаем ListView на конкретную позицию

Вот вроде простая задачка, ан-нет! На собеседованиях я это часто спрашиваю - мало кто отвечает. Странно ... Вот вроде по логике должно быть достаточно:

list.setSelection(position);

А вот не работает! Оказывается нужно так:

list.requestFocusFromTouch();
list.setSelection(position);

Кто-бы мог подумать!

Начало

Давно было желание завести бложик, да все как-то времени не находил, а вот - приперло (http://tinyurl.com/633hr6c)

А писать я буду про Android. Давно уже девелоплю, много всяких решений накопилось - столько, что уже сам начал забывать некоторые. Так что буду складывать их сюда - пока для себя. А там, глядишь, и пригодится еще кому-нибудь