Яндекс.Метрика

    Реклама

    Songsterr — теперь на Android

    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