Реклама

Статьи | Android

Размеры текста в канвасе



Если вы рисуете графику прямо в Canvas'е, то рано или поздно вам захочется выводить на экран и текст. Для этого вам нужно знать, как он будет располагаться, соответственно потребуется рассчитать его ширину/высоту для выравнивания и прочих эффектных штук.



Недавно в своём приложении мне также понадобилось вертикальное и горизонтальное центрирование. Поэтому я начал со следующего кода:

  1. Paint mTextPaint = new Paint();
  2. mTextPaint.setTextAlign(Paint.Align.CENTER);  // Включим центрирование
  3.  
  4. // И когда происходит отрисовка...
  5. canvas.drawText(mText,
  6.         mBounds.centerX(),  // mBounds — некая область канваса
  7.         mBounds.centerY(),  // X, Y — центр области

Продолжить

Рейтинг:  3  (Против: 0 | За: 3)
Добавил: Ксакеп

Комментарии (4)

Java 8 в Android со Stream API и лямбдами


Как вы знаете, Android основан на Java 6. Google не спешит добавлять поддержку новых версий Java, поэтому приходится мечтать даже об использовании try-with-resources, multi-catch из Java 7, не говоря уже о Lambda Expressions и Stream API.
   Но если чего-то сильно захотеть, то никакие преграды не остановят, ведь так? Если мы не можем запустить код из Java 8 в Android-приложениях, то почему бы не преобразовать его в Java 6 совместимый? Именно это и делает проект Retrolambda финского разработчика Esko Luontola.


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

Рейтинг:  9  (Против: 1 | За: 10)
Добавил: aNNiMON

Комментарии (25)

Передача обьекта в Activity


Иногда возникает такая ситуация, что перед вызовом второй Activity нужно сначала передать туда какой-то обьект, без которого вторая Activity не может работать. У меня в первой активности отображается список уровней игры. Уровень представляет собой класс, в котором хранится InputStream, через который читается сначала название, размер уровня, а при выборе подгружается карта и другие данные. Поэтому второй активности, которая реализует игровой процесс, нужно как-то получить этот уровень.

           Способ 1, простой
     Проще всего во второй активности создать статический метод и обьекты, например:

Код первой
  1. // Когда выбрали нужный уровень
  2. GameActivity.preInit(levels.get(n));
  3. Intent i = new Intent(ctx, GameActivity.class);
  4. startActivityForResult(i,

Продолжить

Рейтинг:  6  (Против: 1 | За: 7)
Добавил: Naik

Комментарии (25)

SL4A - scripting layer for android


Привет. Как вы знаете, на OS Android уже сделали AIDE, позволяющую писать, собирать и запускать программы для Android без использования ПК. Но android - не единственный ЯП в мире. Есть ещё js, python, ruby и пр. И в этой статье вы узнаете, как запускать такие скрипты на вашем зелёном друге.

Что скачивать
Вначале скачаем саму sl4a с https://code.google.com/p/android-scripting/downloads/list . Выберем sl4a r6.apk. Установили, идем дальше. Смотрим, какой ЯП вы хотите использовать и качаете соответствующий apk. (для javascript качайте rhino) Устанавливаем, запускаем, жмём install. Скачается всё что нам нужно. скрипты скачаются в /sdcard/sl4a/scripts/. В эту папку нужно кидать и свои скрипты.

  downloading.png

Запускаем!
Запускаем SL4A и видим
Продолжить

Рейтинг:  3  (Против: 0 | За: 3)
Добавил: Senderman

Комментарии (9)

Файлы и Base64


Как-то на форуме задавал вопрос на тему того, как считать файл .png из assets в массив байт(была затея с защитой графики). Не знаю почему, но картинка в буффер не читалась, а вот с .txt файлом проблем не возникло. И пришла мне в голову вот такая дурацкая вещь...
Решил я свои картинки перевести в текст через Base64, и уже эти .txt файлы кинуть в папку assets. А для удобства открывания сделал в активити простой метод:
  1. ...
  2. private byte[] buffer;
  3. private InputStream is;
  4. private Bitmap buffBitmap;
  5. private String dataFile;
  6. private int size;
  7. public static MainActivity link;
  8. ...
  9. public Bitmap getBase64(String fileName) {
  10.      try {
  11.         //поток принимает файл.txt из assets
  12.         is = this.getAssets().open(fileName);
  13.         //получаем размер файла
  14.         size = is.available();

Продолжить

Рейтинг:  3  (Против: 1 | За: 4)
Добавил: eNvisible

Комментарии (9)
Всего: 29
<< 1 2 3 4 5 6 >>

Мы в соцсетях

vk tw tg yt

Пожертвования

Аноним2850 р.
Freddy1700 р.
riseremi1611 р.
NaruTrey800 р.
vlavolk637 р.