Pull to refresh

Быстрая разработка приложений с использованием библиотеки Greendroid

Reading time 3 min
Views 3.2K


Покажу Greendroid в работе на примере последнего разрабатываемого мной приложения (клиент для чтения сайта, кстати он недавно пиарился на хабре.

Многие из вас наверно видели паттерны Google по разработке интерфейса аndroid приложений. Greendroid это библиотека которая реализует в себе паттерн ActionBar и много других виджетов интерфейса. Она позволяет сосредоточится на логики приложения, не думаю о создании и верстки ActionBar'ов, элементов списка и тд.



Для использования этой библиотеки нужно обязательно использовать тему Theme.GreenDroid(или любую другу унаследованную от нее) и указать класс приложения унаследованный от GDApplication. Для чего это все нужно? 1. Тема нужна для того чтобы приложение знало как отображать кастомные виджеты, ради которых собственно мы и используем Greendroid. 2. Приведу пример приложения который используется у меня в коде.

public class ShortikiApplication extends GDApplication {
	@Override
	public Class<?> getHomeActivityClass() {
		return HomeActivity.class;
	}
}


Это нужно для того чтобы ActionBar знал где стартовая позиция( главная страница приложения). Все просто, нужно только переопределить метод getHomeActivityClass вернув класс нужной нам Activity.

Теперь можно использовать все возможности Greendroid. Начнем с ActionBar. Вот простой пример использования.

public class ShortikiActivity extends GDActivity {
        @Override
	protected void onCreate(Bundle savedInstanceState) {
              	super.onCreate(savedInstanceState);
		setActionBarContentView(R.layout.list);
        }
}


Вместо привычного setContentView используем setActionBarContentView они делают одно и то же за исключением того, что последний добавляет ActionBar в этот layout.

Попробуем добавить элемент на ActionBar.

addActionBarItem(ActionBarItem.Type.Refresh);


Как видите Greendroid содержит в себе уже основные элементы ActionBar, так же есть возможность создавать свои Action. Вот класс перечисление говорящий сам за себя.

  public enum Type {
        GoHome, // A house
        Search, // A magnifying glass
        Talk, // A speech bubble
        Compose, // A sheet of paper with a pen
        Export, // A dot with an arrow
        Share, // A dot with two arrows
        Refresh, // Two curved arrows
        TakePhoto, // A camera
        // PickPhoto, // Two pictures with an arrow
        Locate, // The traditional GMaps pin
        Edit, // A pencil
        Add, // A plus sign
        Star, // A star
        SortBySize, // Some bars
        LocateMyself, // A surrounded dot
        Compass,
        Help,
        Info,
        Settings,
        List,
        Trashcan,
        Eye,
        AllFriends,
        Group,
        Gallery,
        Slideshow,
        Mail
    }


Теперь попробуем обработать нажатие какого либо Action'a, для этого нужно переопределить метод

@Override
	public boolean onHandleActionBarItemClick(ActionBarItem item, int position) {

                // обрабатываем событие
                if (position == 0) {
                      //...
                }

		return true;
	}


Как видите все просто.

На этом удобства при использовании Greendroid не заканчиваются. В эту библиотеку входит класс ItemAdapter это наследник класса BaseAdapter, который позволяет очень удобно заполнять лист.
Покажу на примере. Заполнение листа цитатами в моем приложении происходит так:

     public ListAdapter createAdapter(List<RssItem> result) {
		ItemAdapter adapter = new ItemAdapter(this);

		for (RssItem rssItem : result) {
			adapter.add(new LongTextItem(rssItem.getDescription()));
			adapter.add(new SeparatorItem());
		}

		return adapter;
	}

//............
         listView.setAdapter(createAdapter(items));


Объясню, метод Add должен получать в качестве параметра наследника класса Item, наследников класса Item из коробки в Greendroid достаточно и обычно хватает, хотя вы всегда можете сами реализовать нужный вам Item. Вот какие Item'ы уже есть: DrawableItem, LongTextItem, ThumbnailItem, SubtextItem, SubtitleItem, TextItem. За подробностями прошу читать документацию к библиотеке.

Также в библиотеке есть несколько удобных виджетов, но об этом уже в следующем посте.
Вот что получилось из всего этого: android клиент для shortiki.com

Спасибо за внимание.
Tags:
Hubs:
+32
Comments 24
Comments Comments 24

Articles