Перейти к содержимому
Меню
  • Java SE
  • Android
  • Поиск
  • Java SE
  • Android

JAVA-HELP

Сайт для Java разработчиков

ViewPagerIndicator — индикатор для ViewPager. Часть 2

Здравствуйте. В прошлом обзоре я рассмотрел лишь часть индикаторов, которые нам предоставляет библиотека. В этой статье я рассмотрю оставшийся вида индикаторов.

4. IconPageIndicator

IconPageIndicator — индикатор в виде иконок.

Для начала создадим drawable-файл:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_selected="true"
         android:drawable="@drawable/perm_group_calendar_selected">
   <item android:drawable="@drawable/perm_group_calendar_normal">
</selector>

У нас есть два состояния: выбран и не выбран.

Код адаптера:

public class IconsAdapter extends FragmentPagerAdapter implements IconPagerAdapter {

    protected static final String[] CONTENT = new String[] { "This", "Is", "A", "Test", };
    protected static final int[] ICONS = new int[] {
            R.drawable.perm_group_calendar,
            R.drawable.perm_group_camera,
            R.drawable.perm_group_device_alarms,
            R.drawable.perm_group_location
    };

    public IconsAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return new TestFragment(CONTENT[position]);
    }

    @Override
    public int getCount() {
        return CONTENT.length;
    }

    @Override
    public CharSequence getPageTitle(int position) {
      return CONTENT[position];
    }

    @Override
    public int getIconResId(int index) {
      return ICONS[index];
    }

}

В адаптере мы храним текст, который будет отображаться на экране. Также у нас есть массив с id drawable-ресурсов, которые мы создали ранее. В методе getItem мы каждый раз создаем новый фрагмент. Хоть это и не правильно с точки зрения экономичности, но зато очень сильно облегчает код.

Код TestFragment:

public final class TestFragment extends Fragment {

   private String mContent = "";

    public TestFragment(String mContent) {
    this.mContent = mContent;
  }

  @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        TextView text = new TextView(getActivity());
        text.setGravity(Gravity.CENTER);
        text.setText(mContent);
        text.setTextSize(20 * getResources().getDisplayMetrics().density);
        text.setPadding(20, 20, 20, 20);

        LinearLayout layout = new LinearLayout(getActivity());
        layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        layout.setGravity(Gravity.CENTER);
        layout.addView(text);

        return layout;
    }


}

В методе onCreateView  мы создаем TextView, устанавливаем ему размер текста, отступы и т. д.

Код main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <android.support.v4.view.ViewPager
        android:id="@+id/icons_default_pager"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
    <com.viewpagerindicator.IconPageIndicator
        android:id="@+id/icons_default_indicator"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent">

</LinearLayout>

И код MainActivity.java:

public class MainActivity extends FragmentActivity  {


  private IconPageIndicator mIndicator;
  private ViewPager viewPager;
  private IconsAdapter viewPagerAdapter;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.icons_default);

    viewPagerAdapter = new IconsAdapter(getSupportFragmentManager());

    viewPager = (ViewPager) findViewById(R.id.icons_default_pager);
    viewPager.setAdapter(viewPagerAdapter);

       		mIndicator = (IconPageIndicator)findViewById(R.id.icons_default_indicator);
        	mIndicator.setViewPager(viewPager);

  }
}

Обратите внимание на то, что наша Activity наследуется от FragmentActivity. Это нужно для того, чтобы вызвать метод getSupportFragmentManager()при создании адаптера. Далее мы инициализируем ViewPager и адаптер и привязываем их. На этом все.

Библиотека на GitHub: ViewPagerIndicator.
Исходники примера: ViewPagerIndicator.

Категории
  • Android
  • Android-библиотеки
Предыдущая заметка

Обзор лучшей AndroidORM — ActiveAndroid

Следующая заметка

Android. Обзор библиотеки Otto

Рубрики

  • Android
    • Android-библиотеки
    • Android-сниппеты
    • Material Design
    • Инструменты разработчика
    • Уроки Android
  • Java SE
    • Java-сниппеты
    • Изучение Java
    • Обзор Java-классов
    • Основы Java
  • Kotlin

Популярные записи

  • Загрузка изображений с помощью библиотеки Glide. Начало работы
  • Руководство по использованию ORM DBFlow в Android-приложении
  • Анимированный Toolbar: фичи Design Support Library
  • Я хочу программировать под Android. Вопрос #5
  • Используем ACRA в своем приложении

Copyright © 2020– JAVA-HELP. Все права защищены. Политика конфиденциальности