Главная » Processing » Доступ к размеру экрана и плотности в Processing

0

В примере Запуск скетча в эмуляторе Android вы узнали, что ОС Android сама устанавливает размер окна скетча. В этом примере мы посмотрим, как получить доступ к ширине, высоте, DPI и плотности экрана. Существует множество устройств Android с разными размерами экрана и разрешением. Эти величины позволят вашему скетчу корректно работать на всех этих устройствах.

Приступим

В этом примере я использовал шрифт Junction, это открытый шрифт, созданный The League of Moveable Type. Ввы можете скачать его по адресу http:// www.theleagueofmoveabletype.com/ junction. Перетащите файл шрифта Junction.otf в текстовый редактор Processing, чтобы использовать его в скетче.

Как это делается

Начнем с импорта Android класса DisplayMetrics, объявления переменных типа String и одной переменной для шрифта, который будем использовать для отображения этих переменных на экране:

import android.util.DisplayMetrics;

String density; String dpi; String w; String h;

PFont junction;

В функции setup() мы получим нужные значения из класса DisplayMetrics и присвоим их переменным типа String. Также мы загрузим шрифт Junction размером в 32 пикселя:

void setup()

{

size( displayWidth, displayHeight ); smooth();

DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics( metrics );

density = "Density: " + metrics.density; dpi = "DPI: " + metrics.densityDpi;

w = "Width: " + width;

h = "height: " + height;

junction = createFont( "Junction.otf", 32 ); textFont( junction, 32 );

println( PFont.list() );

}

В функции draw() мы выведем переменные String на экран:

void draw()

{

background( 255, 225, 23 );

fill( 0 ); textAlign( CENTER );

text( density, width/2, 300 ); text( dpi, width/2, 360 ); text( w, width/2, 420 );

text( h, width/2, 480 );

}

Скетч, запущенный на смартфоне HTC desire выглядит так, как на этом скриншоте. Если у вас другое устройство, величины будут другими.

Как это работает

Класс DisplayMetrics это главный класс Android, получающий информацию о дисплее вашего устройства. инициализировать эту информацию можно, объявив объект DisplayMetrics таким образом:

DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics( metrics );

После объявления объекта вы можете получить доступ к нужным величинам с помощью следующих кодовых конструкций и применить их затем в скетче.

metrics.density; metrics.densityDpi;

Обзор всех доступных полей и методов класса DisplayMetrics вы сможете найти на странице http://developer.android.com/reference/android/util/ DisplayMetrics.html.

Источник: Ян Вантомм, Processing 2: креативное программирование, перевод с английского Александры Мишутиной, Published by Packt Publishing Ltd., 2012, BIRMINGHAM – MUMBAI.

По теме:

  • Комментарии