Как стать автором
Обновить

Songsterr — теперь на Android

Время на прочтение2 мин
Количество просмотров827
C полгода назад songsterr писали об итогах трех лет. А ныне команда рада оповестить Хабрахабр о выходе приложения для Android!

Основная функциональность


— Доступ к огромному каталогу табулатур(400 000)
— Наборы инструментов для каждой песни. Гитары, бас, ударные, голос и прочее
— Список «Популярные»
— Возможность поиска песни по имени исполнителя или названию

В планах добавить проигрывание музыки, избранное и много-многое другое. Следите за новостями тут, в facebook и twitter.

Скачать с маркета:

QR:



Технические моменты


1. в 2.3.1 появилась возможность использовать резиновые списки в том смысле, что список оттягивается и виден background, как это сделано в iPhone. Чтобы добавить такой эффект к своему ListView, надо сделать подкласс и переопределить один метод:

public class BounceListView extends ListView {

    private int maxYOverscroll;

    private static final float MAX_Y_OVERSCROLL_DISTANCE = 200;

    public BounceListView(Context context) {
        super(context);
        initBounceListView();
    }

    public BounceListView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initBounceListView();
    }

    public BounceListView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initBounceListView();
    }

    private void initBounceListView() {
   	//get the density of the screen and do some maths with it on the max overscroll distance
   	//variable so that you get similar behaviors no matter what the screen size
   		
   	final DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
       	final float density = metrics.density;
           
   	maxYOverscroll = (int) (density * MAX_Y_OVERSCROLL_DISTANCE);
   }
   	
   	@Override
   	protected boolean overScrollBy(int deltaX, int deltaY,
                                      int scrollX, int scrollY,
                                      int scrollRangeX, int scrollRangeY,
                                      int maxOverScrollX, int maxOverScrollY,
                                      boolean isTouchEvent) {
   		//This is where the magic happens, we have replaced the incoming maxOverScrollY with our own custom variable maxYOverscroll;
   		return super.overScrollBy(deltaX, deltaY,
                   scrollX, scrollY, scrollRangeX,
                   scrollRangeY, maxOverScrollX,
                   maxYOverscroll, isTouchEvent);
   	}


2. Опять же в 2.3.1 появилась возможность указания обратной ориентации для экрана, на основе сигнала сенсора. Это удобно, если вам хочется, чтобы одна из activity была только в альбомной ориентации, но при этом зависела от сенсора.

screenOrientation=«sensorLandscape». Будьте внимательны, потому что на 2.2 этот атрибут ведет себя не как landscape, а как отсутствие атрибута напрочь!

3. Для того, чтобы в TextView, являющейся частью записи в ListView менялось состояние в соответствии с выбором и кликом на этот элемент( selected=«true» или clicked=«true» ) нужно использовать аттрибут dublicateParentState. Иначе бэкграунд у элемента будет меняться, а цвет текста — нет.

С моментами пока что все! Удачного изучения игры своих любимых песен!

Также мы будем рады любой конструктивной критике и высказанным пожеланиям.

Спасибо!

P.S.: Хотите работать в нашей команде? Пишите нам на hq@songsterr.com
Теги:
Хабы:
Всего голосов 25: ↑19 и ↓6+13
Комментарии14

Публикации