Intereting Posts
Почему я не могу создать несколько идентификаторов клиента OAuth 2.0 для одного и того же имени пакета? В каком блоге разработки Android есть самые пошаговые руководства и учебные пособия? Android Studio – несколько приложений для Android с общими зависимостями в одном проекте Skype начинает набор номера и разворачивается через 2 секунды – Android Как установить собственный шрифт для текста в тексте TextView Служба Android: процесс против не Firebase getDownloadURL Создание и совместное использование файла из внутреннего хранилища Как я могу играть в mp3 без загрузки с URL? Установите блокировку экрана на «Нет» программно? Сильная прямая адресная строка в Chrome на Android Camera.setParameters не удалось в android Плагин Google не работает для проекта App Engine – Eclipse Indigo – WindowsXP Отключить и включить изменения ориентации в активности на Android программно Ошибка входа в Facebook на некоторых устройствах

Android-плейер с индикатором страницы

Мне нужно получить индикатор страницы в файле пейджера представления с изображениями. Вот мой код.

public class IndicatorActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyPagerAdapter adapter = new MyPagerAdapter(); ViewPager myPager = (ViewPager) findViewById(R.id.pager); myPager.setAdapter(adapter); myPager.setCurrentItem(0); TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicat); indicator.setViewPager( myPager ); } } 

В этом коде я получил ошибку в TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicat); TitlePageIndicator cannot be resolved to a type . Какова эта ошибка. Как я могу это решить?

Вот мой xml-код:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" /> <com.viewpagerindicator.TitlePageIndicator android:id="@+id/indicat" android:layout_height="wrap_content" android:layout_width="fill_parent" /> </LinearLayout> 

Какой код мне нужно написать в TitlePageIndicator ? Я хочу сделать это без использования фрагментов .

Я также создал класс, такой как:

 class MyPagerAdapter extends PagerAdapter { private static Integer[] titles = new Integer[] { R.drawable.jk,R.drawable.lm,R.drawable.no }; public int getCount() { return 3; } public Object instantiateItem(View collection, int position) { LayoutInflater inflater = (LayoutInflater) collection.getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view; ImageView iv; view = inflater.inflate(R.layout.first, null); ((ViewPager) collection).addView(view, 0); switch (position) { case 0: iv = (ImageView)view.findViewById(R.id.imageView1); iv.setImageResource(titles[position]); break; case 1: iv = (ImageView)view.findViewById(R.id.imageView1); iv.setImageResource(titles[position]); break; case 2: iv = (ImageView)view.findViewById(R.id.imageView1); iv.setImageResource(titles[position]); break; } return view; } public void destroyItem(View arg0, int arg1, Object arg2) { ((ViewPager) arg0).removeView((View) arg2); } public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == ((View) arg1); } } 

Я хотел сделать что-то большее, чем этот класс?

Заранее спасибо за помощь

Solutions Collecting From Web of "Android-плейер с индикатором страницы"

Вот несколько вещей, которые вам нужно сделать:

1-Загрузите библиотеку, если вы еще этого не сделали.

2- Импорт в Eclipse.

3- Задайте проект для использования библиотеки: Project-> Properties -> Android -> Прокрутите вниз до раздела «Библиотека», нажмите « Добавить …» и выберите «viewpagerindicator».

4- Теперь вы должны иметь возможность импортировать com.viewpagerindicator.TitlePageIndicator .

Теперь о реализации этого без использования фрагментов:

В примере, который поставляется с viewpagerindicatior , вы можете видеть, что библиотека используется с ViewPager которого есть FragmentPagerAdapter .

Но на самом деле сама библиотека является независимым от Fragment . Ему просто нужен ViewPager . Так что просто используйте PagerAdapter вместо FragmentPagerAdapter и вам хорошо идти.

ОБНОВЛЕНИЕ: 22/03/2017

Макет основного фрагмента:

  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" /> <RadioGroup android:id="@+id/page_group" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|bottom" android:layout_marginBottom="@dimen/margin_help_container" android:orientation="horizontal"> <RadioButton android:id="@+id/page1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" /> <RadioButton android:id="@+id/page2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioButton android:id="@+id/page3" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RadioGroup> </FrameLayout> 

Настроить вид и событие на вашем фрагменте следующим образом:

  mViewPaper = (ViewPager) view.findViewById(R.id.viewpager); mViewPaper.setAdapter(adapder); mPageGroup = (RadioGroup) view.findViewById(R.id.page_group); mPageGroup.setOnCheckedChangeListener(this); mViewPaper.addOnPageChangeListener(this); ************************************************* ************************************************* @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { // when current page change -> update radio button state int radioButtonId = mPageGroup.getChildAt(position).getId(); mPageGroup.check(radioButtonId); } @Override public void onPageScrollStateChanged(int state) { } @Override public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { // when checked radio button -> update current page RadioButton checkedRadioButton = (RadioButton)radioGroup.findViewById(checkedId); // get index of checked radio button int index = radioGroup.indexOfChild(checkedRadioButton); // update current page mViewPaper.setCurrentItem(index), true); } 

Пользовательский флажок: Пользовательский флажок

Учебник Viewpager: http://architects.dzone.com/articles/android-tutorial-using

Введите описание изображения здесь

Я знаю, что на это уже был дан ответ, но для тех, кто ищет простую, без излишеств реализацию индикатора ViewPager, я реализовал тот, который я открываю. Для тех, кто находит версию Джейка Уортона немного сложной для своих нужд, посмотрите на https://github.com/jarrodrobins/SimpleViewPagerIndicator .

Я также использовал SimpleViewPagerIndicator от @JROD. Он также выходит из строя, как описано в @manuelJ.

Согласно его документации:

 SimpleViewPagerIndicator pageIndicator = (SimpleViewPagerIndicator) findViewById(R.id.page_indicator); pageIndicator.setViewPager(pager); 

Обязательно добавьте эту строку:

 pageIndicator.notifyDataSetChanged(); 

Он выходит из строя с исключением из-за границ, потому что SimpleViewPagerIndicator не получает экземпляр правильно и элементы пустые. Вызов функции notifyDataSetChanged приводит к тому, что все значения будут установлены правильно или, скорее, правильно сброшены.

Вы должны сделать следующее:

1-Загрузить полный проект здесь https://github.com/JakeWharton/ViewPagerIndicator ViewPager Indicator 2- Импорт в Eclipse.

После импорта, если вы хотите сделать следующий тип экрана, выполните следующие шаги:

Скриншот

Изменение в

Примеры кругов По умолчанию

  package com.viewpagerindicator.sample; import android.os.Bundle; import android.support.v4.view.ViewPager; import com.viewpagerindicator.CirclePageIndicator; public class SampleCirclesDefault extends BaseSampleActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_circles); mAdapter = new TestFragmentAdapter(getSupportFragmentManager()); mPager = (ViewPager)findViewById(R.id.pager); // mPager.setAdapter(mAdapter); ImageAdapter adapter = new ImageAdapter(SampleCirclesDefault.this); mPager.setAdapter(adapter); mIndicator = (CirclePageIndicator)findViewById(R.id.indicator); mIndicator.setViewPager(mPager); } } 

ImageAdapter

  package com.viewpagerindicator.sample; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; public class ImageAdapter extends PagerAdapter { private Context mContext; private Integer[] mImageIds = { R.drawable.about1, R.drawable.about2, R.drawable.about3, R.drawable.about4, R.drawable.about5, R.drawable.about6, R.drawable.about7 }; public ImageAdapter(Context context) { mContext = context; } public int getCount() { return mImageIds.length; } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } @Override public Object instantiateItem(ViewGroup container, final int position) { LayoutInflater inflater = (LayoutInflater) container.getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View convertView = inflater.inflate(R.layout.gallery_view, null); ImageView view_image = (ImageView) convertView .findViewById(R.id.view_image); TextView description = (TextView) convertView .findViewById(R.id.description); view_image.setImageResource(mImageIds[position]); view_image.setScaleType(ImageView.ScaleType.FIT_XY); description.setText("The natural habitat of the Niligiri tahr,Rajamala Rajamala is 2695 Mts above sea level" + "The natural habitat of the Niligiri tahr,Rajamala Rajamala is 2695 Mts above sea level" + "The natural habitat of the Niligiri tahr,Rajamala Rajamala is 2695 Mts above sea level"); ((ViewPager) container).addView(convertView, 0); return convertView; } @Override public boolean isViewFromObject(View view, Object object) { return view == ((View) object); } @Override public void destroyItem(ViewGroup container, int position, Object object) { ((ViewPager) container).removeView((ViewGroup) object); } } 

gallery_view.xml

  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/about_bg" android:orientation="vertical" > <LinearLayout android:id="@+id/about_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:weightSum="1" > <LinearLayout android:id="@+id/about_layout1" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight=".4" android:orientation="vertical" > <ImageView android:id="@+id/view_image" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/about1"> </ImageView> </LinearLayout> <LinearLayout android:id="@+id/about_layout2" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight=".6" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="SIGNATURE LANDMARK OF MALAYSIA-SINGAPORE CAUSEWAY" android:textColor="#000000" android:gravity="center" android:padding="18dp" android:textStyle="bold" android:textAppearance="?android:attr/textAppearance" /> <ScrollView android:layout_width="fill_parent" android:layout_height="match_parent" android:fillViewport="false" android:orientation="vertical" android:scrollbars="none" android:layout_marginBottom="10dp" android:padding="10dp" > <TextView android:id="@+id/description" android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="#000000" android:text="TextView" /> </ScrollView> </LinearLayout> </LinearLayout> 

Просто улучшение хорошего ответа, данное @ vuhung3990. Я реализовал решение и отлично поработал, но если я коснусь одного переключателя, он будет выбран и ничего не произойдет.

Я предлагаю также сменить страницу при нажатии переключателя. Для этого просто добавьте слушателя в группу radioGroup:

 mPager = (ViewPager) findViewById(R.id.pager); final RadioGroup radioGroup = (RadioGroup)findViewById(R.id.radiogroup); radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.radioButton : mPager.setCurrentItem(0, true); break; case R.id.radioButton2 : mPager.setCurrentItem(1, true); break; case R.id.radioButton3 : mPager.setCurrentItem(2, true); break; } } });