Урок 125. ViewPager
-
- Сообщения: 37
- Зарегистрирован: 21 апр 2014, 15:27
Re: Урок 125. ViewPager
подскажите как добавлять сюда view элементы?
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
-
- Сообщения: 2
- Зарегистрирован: 17 апр 2014, 11:13
Re: Урок 125. ViewPager
Вобщем обнаружил вот что насчёт моей проблемы по смазыванию экрана: если при создании проекта выбирать Blank Activity и использовать его то всё нормально, если же Fullscreen, то происходит сей баг при использовании любого fragment. Если Fullscreen получать из Blank программно, то опять же всё ок. Можете кто-нибудь попробовать выполнить данный урок, но отметить изначально Fullscreen, и посмотреть что будет. Может у меня одного такое.
- Вложения
-
- Безымянный.jpg (90.7 КБ) 14485 просмотров
Re: Урок 125. ViewPager
Использую ActionBar и
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Как понял из топика, что кастомизировать его нельзя.
Хочу создать такие же закладки но с картинками на них. Ну и свайп желательно.
Уверен должны быть такие разработки.
Помогите в какую сторону копать. Может ссылки какие...
Вот так было бы классно сделать - http://webfile.ru/7c6557316ec50bf22ee48793bd57c39b
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Как понял из топика, что кастомизировать его нельзя.
Хочу создать такие же закладки но с картинками на них. Ну и свайп желательно.
Уверен должны быть такие разработки.
Помогите в какую сторону копать. Может ссылки какие...
Вот так было бы классно сделать - http://webfile.ru/7c6557316ec50bf22ee48793bd57c39b
Тут должна быть подпись.
Re: Урок 125. ViewPager
Здравствуйте! А можно сделать что бы просто картинку перемещать , которая находится на средине экрана , не используя фрагменты а использую одни комнопенты? Подскажите что у меня не правильно ?
Пост был взял с - http://habrahabr.ru/post/131889/
main_layout
main2
Пост был взял с - http://habrahabr.ru/post/131889/
Вот моя часть кода , в которой перелистывывается вся активность -Вот пример:Вопрос
а как зафиксировать один View, чтобы он не перемещался при слайдинге? например элемент Button или ImageViewОтвет
Можно описать в файле разметки элементы так, чтобы ViewPager был лишь одним из компонентов. Например, создать такой файл main_layout.xml:
Затем в activity приложения делаем setContentView(R.layout.main_layout), а экземпляр ViewPager добываем с помощью findViewById(R.id.view_pager).Код: Выделить всё
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon"/> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="wrap_content" android:layout_height="wrap_content"> </android.support.v4.view.ViewPager> </LinearLayout>
Указанная картинка будет находиться наверху экрана, а страницы, которые скроллятся с помощью ViewPager будут располагаться ниже.
Код: Выделить всё
\......
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//===========================================
LayoutInflater inflater = LayoutInflater.from(this);
List<View> pages = new ArrayList<View>();
View page = inflater.inflate(R.layout.main_layout, null);
ViewPager vp = (ViewPager)page.findViewById(R.id.view_pager);
pages.add(page);
page = inflater.inflate(R.layout.main2, null);
pages.add(page);
SamplePagerAdapter pagerAdapter = new SamplePagerAdapter(pages);
ViewPager viewPager = new ViewPager(this);
viewPager.setAdapter(pagerAdapter);
viewPager.setCurrentItem(1);
setContentView(viewPager);
//==========================================
}
}
\........
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="300dp"
android:layout_height="400dp" >
</android.support.v4.view.ViewPager>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="51dp"
android:layout_toRightOf="@+id/image"
android:text="Button" />
</RelativeLayout>
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/image1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="300dp"
android:layout_height="400dp" >
</android.support.v4.view.ViewPager>
<Button
android:id="@+id/button11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="51dp"
android:layout_toRightOf="@+id/image"
android:text="Button" />
</RelativeLayout>
Re: Урок 125. ViewPager
Я взяла сайт http://www.tuicool.com/articles/qY3yya и копировала код. Где FragmentTab1.class, я написала свои код. Никаких ошибок исходники. Но когда запускает эмулятор, он выдает ошибка и не показывает viewpager. У меня все фрагменты, я что-то не правильно написала или где-то упустила... Или из за этого ошибка public void onActivityCreated(Bundle savedInstanceState)?
Код: Выделить всё
public class FragmentTab1 extends Fragment {
private ListView listView;
private WeakReference<GetSchedAsyncTask> getSchedTaskWeakRef;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragmenttab1, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
listView = (ListView) getView().findViewById(R.id.fragment_list);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
String name = ((TextView)view.findViewById(R.id.fragmentName)).getText().toString();
Intent i = new Intent (getActivity(),NameActivity.class);
i.putExtra(NameActivity.FRAGMENT_NAME, name);
startActivity(i);
}
});
setRetainInstance(true);
startNewAsyncTask();
}
private void startNewAsyncTask() {
Calendar calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_WEEK);
String weekType;
if (day==1 || day ==7) {
weekType="we";
}
else
weekType="wd";
String timeNow = (new SimpleDateFormat("HH:mm").format(calendar.getTime()));
GetSchedAsyncTask asyncTask = new GetSchedAsyncTask(this);
this.getSchedTaskWeakRef = new WeakReference<GetSchedAsyncTask>(asyncTask);
asyncTask.execute(weekType,timeNow);
}
private class GetSchedAsyncTask extends AsyncTask<Object, Void, List<Schedule>> {
private WeakReference<FragmentTab1> fragmentWeakRef;
private GetSchedAsyncTask (FragmentTab1 fragment) {
this.fragmentWeakRef = new WeakReference<FragmentTab1>(fragment);
}
@Override
protected List<Schedule> doInBackground(Object... params) {
NameDatabase db = NameDatabase.getInstance(getActivity());
List<Schedule> schedule = db.getSchedule((String) params[0], (String) params[1]);
return schedule;
}
@Override
protected void onPostExecute(List<Schedule> schedule) {
super.onPostExecute(schedule);
if (this.fragmentWeakRef.get() != null) {
listView.setAdapter(new ScheduleListAdapter(getActivity(), R.layout.station_row_item, schedule));
}
}
}
}
- FastRus1804
- Сообщения: 49
- Зарегистрирован: 22 июн 2014, 11:20
Re: Урок 125. ViewPager
у меня 3 вопроса есть
1) как сохранить данные при повороте экрана
2)можно сделать вертикальный скролинг страниц?
1) как сохранить данные при повороте экрана
2)можно сделать вертикальный скролинг страниц?
- Вложения
-
- 3) как сделать такую реализацию ViewPager
- Снимок.PNG (18.34 КБ) 14285 просмотров
Re: Урок 125. ViewPager
а что до урока по сохранению данных вы не дочитали?
вертикальный скролл - компонент поищите на палитре скролвью кажется.
вертикальный скролл - компонент поищите на палитре скролвью кажется.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- FastRus1804
- Сообщения: 49
- Зарегистрирован: 22 июн 2014, 11:20
Re: Урок 125. ViewPager
Foenix писал(а):а что до урока по сохранению данных вы не дочитали?
вертикальный скролл - компонент поищите на палитре скролвью кажется.
Читал. Но здесь то используется адаптер фрагменты. Как в этом случае сохранять там не написано . Я пытался сделать аналогию с тем уроком, но ничего не вышло.
Re: Урок 125. ViewPager
Книжка по сети гуляет Харди, Филипс Программирование для андроид. Там фрагменты очень подробно рассмотрены на примерах, и вопрос поворотов тоже. Советую.
По сути там аналогично активностям можно сохранять все в onSaveInstance
По сути там аналогично активностям можно сохранять все в onSaveInstance
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- FastRus1804
- Сообщения: 49
- Зарегистрирован: 22 июн 2014, 11:20
Re: Урок 125. ViewPager
Foenix писал(а):Книжка по сети гуляет Харди, Филипс Программирование для андроид. Там фрагменты очень подробно рассмотрены на примерах, и вопрос поворотов тоже. Советую.
По сути там аналогично активностям можно сохранять все в onSaveInstance
То есть нужно было прописать setRetainInstance(true); и все XD
Спасибо. Хорошая книга.
Re: Урок 125. ViewPager
да нет, не все так простоFastRus1804 писал(а):Foenix писал(а):Книжка по сети гуляет Харди, Филипс Программирование для андроид. Там фрагменты очень подробно рассмотрены на примерах, и вопрос поворотов тоже. Советую.
По сути там аналогично активностям можно сохранять все в onSaveInstance
То есть нужно было прописать setRetainInstance(true); и все XD
Спасибо. Хорошая книга.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
- FastRus1804
- Сообщения: 49
- Зарегистрирован: 22 июн 2014, 11:20
Re: Урок 125. ViewPager
Foenix писал(а):да нет, не все так простоFastRus1804 писал(а):Foenix писал(а):Книжка по сети гуляет Харди, Филипс Программирование для андроид. Там фрагменты очень подробно рассмотрены на примерах, и вопрос поворотов тоже. Советую.
По сути там аналогично активностям можно сохранять все в onSaveInstance
То есть нужно было прописать setRetainInstance(true); и все XD
Спасибо. Хорошая книга.
Ну я понял что в случае нехватки памяти, всё равно фрагмент удалится. и там уже нужен onSaveInstanceState.
- FastRus1804
- Сообщения: 49
- Зарегистрирован: 22 июн 2014, 11:20
Re: Урок 125. ViewPager
Код: Выделить всё
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState==null){
pageNumber = getArguments().getInt(ARGUMENT_PAGE_NUMBER);
Random r = new Random();
backColor = Color.argb(40, r.nextInt(255), r.nextInt(255), r.nextInt(255));}
else
{
backColor = savedInstanceState.getInt("backColor", 0);
pageNumber = savedInstanceState.getInt("pageNumber", 0);
}
//setRetainInstance(true);
}
Код: Выделить всё
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("pageNumber", pageNumber);
outState.putInt("backColor", backColor);
}
Re: Урок 125. ViewPager
Привет всем. Друзья, помогите справиться с проблемой. У меня есть ViewPager состоящий из 3 фрагментов. В среднем (1) фрагменте у меня находиться ListView, а в первом(0) или третьем (2) фрагменте я добавляю данные в ArrayList, который в дальнейшем используется для заполнения моего ListView в среднем фрагменте. Проблема заключается в том, что при возвращении в средний фрагмент, мой ListView в нем не обновляется, соответственно в результате чего при нажатии на список вылетает ошибка.
Для обновления списка я использую adapter.notifyDataSetChanged(); , но ничего не происходит. Что я делаю не так или может кто то знает какой то способ обновления этого списка? За ранее спасибо.
Для обновления списка я использую adapter.notifyDataSetChanged(); , но ничего не происходит. Что я делаю не так или может кто то знает какой то способ обновления этого списка? За ранее спасибо.
Re: Урок 125. ViewPager
adapter относится к ListView или ViewPager?
Re: Урок 125. ViewPager
Использовал и к ListView и к ViewPager. Я вот уже думаю, может надо как то убить фрагмент в котором находиться список, а потом его пересоздать? Проблема в том, что ViewPager хранит в памяти как минимум три фрагмента - открытый, предыдущий и следующий за открытым.finberg писал(а):adapter относится к ListView или ViewPager?
Re: Урок 125. ViewPager
Все, разобрался)prometey писал(а):Использовал и к ListView и к ViewPager. Я вот уже думаю, может надо как то убить фрагмент в котором находиться список, а потом его пересоздать? Проблема в том, что ViewPager хранит в памяти как минимум три фрагмента - открытый, предыдущий и следующий за открытым.finberg писал(а):adapter относится к ListView или ViewPager?
Re: Урок 125. ViewPager
Подскажите начинающему,пожалуйста
пытаюсь поместить ListView на ViewPager. Но не могу понять какой указать Context при создании ArrayAdapter?
ArrayAdapter<String> lvAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list)
- ругается что не может найти конструктора под такой вызов
пытаюсь поместить ListView на ViewPager. Но не могу понять какой указать Context при создании ArrayAdapter?
ArrayAdapter<String> lvAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list)
- ругается что не может найти конструктора под такой вызов
Re: Урок 125. ViewPager
можно уменьшить кол-во страниц в памяти - pager.setOffscreenPageLimit(0);prometey писал(а):Использовал и к ListView и к ViewPager. Я вот уже думаю, может надо как то убить фрагмент в котором находиться список, а потом его пересоздать? Проблема в том, что ViewPager хранит в памяти как минимум три фрагмента - открытый, предыдущий и следующий за открытым.finberg писал(а):adapter относится к ListView или ViewPager?