не поделишься кодом? Очень любопытно как ты это сделал)assan писал(а):значит у меня намного проще, через анимацию, в любую сторону.
Урок 125. ViewPager
Re: Урок 125. ViewPager
Re: Урок 125. ViewPager
так что за велосипеды? SlidingMenu скачали, установили, какой ViewPager? Всё просто и доступно =)
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 125. ViewPager
Ну вот, пришел он и разрушил все извращения...
Re: Урок 125. ViewPager
а ViewPager уже и ни причем тут, разговор конечно немного не по теме зашел, но все-таки тема приближенная К тому же ситуации разные бывают, возможно в каких-то конкретных случаях подойдет определенный способ, всегда полезно знать альтернатиные вариантыrezak90 писал(а):так что за велосипеды? SlidingMenu скачали, установили, какой ViewPager? Всё просто и доступно =)
Re: Урок 125. ViewPager
велосипед альтернатива авто? в некой степени да, но в 1 случае из ста
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 125. ViewPager
есть три "плана" анимации
1) tree_mov_left.xml
2) tree_mov_left_b.xml (прячет "без анимации" применяется один раз, если не надо показывать фрэйм при открытии)
3) tree_mov_right.xml
есть фрэйм (но можно любой), на котором всё что нужно,
в начале его прячем (если он не нужен первоначально)
есть кнопка (но без разницы на какое действие обрабатывать)
fr.setVisibility используется как переменная (поле)
меняя планы анимации, можно убирать и показывать любым методом (сверху, снизу, закручиванием и как придет фантазия в голову)
надо учитывать что layout это "слоеный пирог" и тот слой, что описан в самом низу xml файла , на экране - самый верхний слой (если положить планшетник на стол )
1) tree_mov_left.xml
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-100%"
android:fillAfter="true"
android:duration="500">
</translate>
<scale
android:duration="20"
android:startOffset="500"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="0"
android:pivotY="0"
android:toXScale="0"
android:toYScale="1.0"/>
</set>
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-100%"
android:fillAfter="true"
android:duration="0">
</translate>
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-100%"
android:toXDelta="0"
android:fillAfter="true"
android:duration="500">
</translate>
в начале его прячем (если он не нужен первоначально)
Код: Выделить всё
fr = (FrameLayout) findViewById(R.id.fr);
anim = AnimationUtils.loadAnimation(this, R.anim.tree_mov_left_b);
fr.setVisibility(View.GONE);
fr.startAnimation(anim);
Код: Выделить всё
button= (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (fr.getVisibility() == View.GONE) {
ccr();
} else {
ccl();
}
}
});
private void ccr() {
fr.setVisibility(View.VISIBLE);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.tree_mov_right);
fr.startAnimation(anim);
}
public void ccl() {
Animation anim = AnimationUtils.loadAnimation(this, R.anim.tree_mov_left);
fr.startAnimation(anim);
fr.setVisibility(View.GONE);
}
fr.setVisibility используется как переменная (поле)
меняя планы анимации, можно убирать и показывать любым методом (сверху, снизу, закручиванием и как придет фантазия в голову)
надо учитывать что layout это "слоеный пирог" и тот слой, что описан в самом низу xml файла , на экране - самый верхний слой (если положить планшетник на стол )
Re: Урок 125. ViewPager
Ув форумчане,
никак не могу сообразить: Создал активити, и фрагменты. При создании фрагментов (перелистывании) берется один и тот же .xml файл. Как сделать так, чтобы после создания фрагмента я мог создать в нем нужные мне вьюшки? Сразу создать нельзя, т.к. они будут время от времени меняться(их количество)?
никак не могу сообразить: Создал активити, и фрагменты. При создании фрагментов (перелистывании) берется один и тот же .xml файл. Как сделать так, чтобы после создания фрагмента я мог создать в нем нужные мне вьюшки? Сразу создать нельзя, т.к. они будут время от времени меняться(их количество)?
Re: Урок 125. ViewPager
Всем привет. Подскажите, если мне надо во фрагмент передавать кроме номера страницы еще и дополнительную информацию, как это правильно сделать?
Спасибо
Спасибо
Re: Урок 125. ViewPager
Доброго времени суток!
В этом уроке вы показали, как загружать в ViewPager с первой странницы, но как загрузить с какой-нибудь другой странницы и при этом с возможностью возвращаться на предыдущие?
Спасибо.
В этом уроке вы показали, как загружать в ViewPager с первой странницы, но как загрузить с какой-нибудь другой странницы и при этом с возможностью возвращаться на предыдущие?
Спасибо.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 125. ViewPager
Кол-во вьюшек меняться будет или кол-во фрагментов?Andrew писал(а):Ув форумчане,
никак не могу сообразить: Создал активити, и фрагменты. При создании фрагментов (перелистывании) берется один и тот же .xml файл. Как сделать так, чтобы после создания фрагмента я мог создать в нем нужные мне вьюшки? Сразу создать нельзя, т.к. они будут время от времени меняться(их количество)?
Если нужно показать это дело сразу при создании фрагмента, то можно в Bundle засунуть информацию фрагменту, при его создании (но стоит помнить, что конструктор без параметров должен быть обязательно!). Но лично мне такой подход никогда не нравился. Я делаю во фрагменте метод, который заполняет информацию фрагмента. В onCreateView (в нём мы уже имеем доступ ко View элементам) я бросаю BroadCast (или LocalBroadcast, если сделать более безопасно), ловлю его к примеру в активности или во viewPager и уже там вызываю данный метод на заполнение.shtil писал(а):Всем привет. Подскажите, если мне надо во фрагмент передавать кроме номера страницы еще и дополнительную информацию, как это правильно сделать?
Спасибо
С другой страницы, это метод setCurrentItem, куда передаем номер страницы.sarnakov писал(а):Доброго времени суток!
В этом уроке вы показали, как загружать в ViewPager с первой странницы, но как загрузить с какой-нибудь другой странницы и при этом с возможностью возвращаться на предыдущие?
Спасибо.
Re: Урок 125. ViewPager
на самом деле у будет количество дней. в каждом дне заполняется listview. хочу сделать через viewpager перелистывание между днями. я могу конечно сделать кучу фрагментов и каждый с базы будет выгребать свою информацию и передать в viewpager, но это наверное забьет память.
не найдется ли у вас примера вашей реализации?
вот и я хочу так сделать. но во фрагмент передается только номер страницы, а мне надо еще передать туда , например, "день", по которому сделаю выборку с базы и отображу во view.Я делаю во фрагменте метод, который заполняет информацию фрагмента.
не найдется ли у вас примера вашей реализации?
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 125. ViewPager
1. А что вам мешает передавать НЕ ТОЛЬКО номер страницы? Номер же как-то передаётся. Он передаётся через Bundle в уроке. Через этот же Bundle можно передавать сами объекты, например как putParcelable или putSerializable. Можете глянуть какие есть методы в самом Bundle для передачи данных через него.вот и я хочу так сделать. но во фрагмент передается только номер страницы
2. Но если всё же хочется через методы заполнять... Делаем так. В методе onCreateView бросаем Broadcast (getActivity.sendBroadcast(...)), в который можно передать сам номер созданного фрагмента (я так понимаю это у вас номер дня как раз). В активности в самой мы ловим этот бродкаст, дальше достаем номер фрагмента, идём во ViewPager, достаём нужный фрагмент и заполняем его.
Советую глянуть в том же уроке внизу про FragmentStatePagerAdapter, который хранит только боковые фрагменты.я могу конечно сделать кучу фрагментов и каждый с базы будет выгребать свою информацию и передать в viewpager, но это наверное забьет память.
На счет примера сейчас не подскажу, нету под рукой, да и убегаю..
Re: Урок 125. ViewPager
спасибо, будем экспериментировать...
Re: Урок 125. ViewPager
Спасибо за урок, интересно.
Но жаль только кратковато. И интерес вызывает также сравнительная характеристика ViewPager, ViewAnimator с его потомками ViewFlipper и ViewSwitcher и как производные ImageSwitcher и TextSwitcher на практических примерах. Вроде как ViewAnimator более универсален своих потомков, но разве что не поддерживает ViewFactory как потомки и drag&drop как ViewPager.
Но жаль только кратковато. И интерес вызывает также сравнительная характеристика ViewPager, ViewAnimator с его потомками ViewFlipper и ViewSwitcher и как производные ImageSwitcher и TextSwitcher на практических примерах. Вроде как ViewAnimator более универсален своих потомков, но разве что не поддерживает ViewFactory как потомки и drag&drop как ViewPager.
Re: Урок 125. ViewPager
Подскажите как обновлять содержимое ViewPager?
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 125. ViewPager
Что конкретно изменять? Фрагмент? Его представление? Данные во фрагменте? Кол-в фрагментов?
Re: Урок 125. ViewPager
перечитав урок сделал такое:
1)из базу в курсор вытягиваю id всех записей
2)в FragmentStatePagerAdapter передаю этот курсор
3) в методе getItem вытягиваю id записи и вместе с position передаю в фрагмент
4) в фрагменте получаю id, вытягиваю по нему из базы текст и заполняю TextView.
5) из этого фрагмента я так же получаю доступ до actionbar'а, добавляю кнопки "редактировать" и "удалить". на "редактировать" вешаю вызов другого активити и передаю туда id - тут все нормально.
а вот с "удалить" у меня проблемы. получается имея id - я могу удалить запись с базы, а вот как быть с pageadapter - не знаю. необходимо как то удалять этот фрагмент и перегружать адаптер...
если есть идеи или примеры для работы в таком случаи - только рад узнать.
спасибо.
1)из базу в курсор вытягиваю id всех записей
2)в FragmentStatePagerAdapter передаю этот курсор
3) в методе getItem вытягиваю id записи и вместе с position передаю в фрагмент
4) в фрагменте получаю id, вытягиваю по нему из базы текст и заполняю TextView.
5) из этого фрагмента я так же получаю доступ до actionbar'а, добавляю кнопки "редактировать" и "удалить". на "редактировать" вешаю вызов другого активити и передаю туда id - тут все нормально.
а вот с "удалить" у меня проблемы. получается имея id - я могу удалить запись с базы, а вот как быть с pageadapter - не знаю. необходимо как то удалять этот фрагмент и перегружать адаптер...
если есть идеи или примеры для работы в таком случаи - только рад узнать.
спасибо.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 125. ViewPager
Ох, это муторное занятие. Я как-то день убил, понимая как лучше это сделать. Сделал. Правда сделал только смену фрагмента. Вот тема, откуда черпать понимание
http://stackoverflow.com/questions/7723 ... -viewpager
http://stackoverflow.com/questions/7723 ... -viewpager
Re: Урок 125. ViewPager
Привет всем.
Совсем кругом голова идет
Решил сделать пример перелистывание в пейджере записи из базы данных. только не могу понять куда прикрутить курсор и где его обновлять?
Совсем кругом голова идет
Решил сделать пример перелистывание в пейджере записи из базы данных. только не могу понять куда прикрутить курсор и где его обновлять?
Re: Урок 125. ViewPager
посмотриsnowkam писал(а):Привет всем.
Совсем кругом голова идет
Решил сделать пример перелистывание в пейджере записи из базы данных. только не могу понять куда прикрутить курсор и где его обновлять?
http://stackoverflow.com/questions/1273 ... d-database
у меня аналогичная задача) но нужно еще и удалять эти записи. с базы удалить не проблема. но столкнулся с этим
Короче я полностью запутался. Получается такая ситуация. Сделал простой адаптер
Код: Выделить всё
private class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
private ArrayList<Integer> mFragmentId;
private SparseArray<WeakReference<PageFragment>> mPageReferenceMap = new SparseArray<WeakReference<PageFragment>>();
public MyFragmentPagerAdapter(FragmentManager fm, ArrayList<Integer> mFagmentListId) {
super(fm);
mFragmentId = mFagmentListId;
Log.d(LOG_TAG, "start MyFragmentPagerAdapter mFagmentListId.size()="+mFagmentListId.size());
}
@Override
public Fragment getItem(int index) {
return getFragment(index);
}
@Override
public int getCount() {
return mFragmentId.size();
}
public Object instantiateItem(ViewGroup container, int position) {
mPageReferenceMap.put(Integer.valueOf(position), new WeakReference<PageFragment>((PageFragment)PageFragment.newInstance(position,Integer.parseInt(mFragmentId.get(position).toString()),mFragmentId.size())));
return super.instantiateItem(container, position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
mPageReferenceMap.remove(Integer.valueOf(position));
}
/*
* Overriding this method in conjunction with calling
* notifyDataSetChanged removes a page from the pager.
*/
public int getItemPosition(Object object) {
Log.d(LOG_TAG, "start getItemPosition ");
return POSITION_NONE;
}
public PageFragment getFragment(int key) {
WeakReference<PageFragment> weakReference = mPageReferenceMap.get(key);
if (null != weakReference) {
return (PageFragment) weakReference.get();
}
else {
return null;
}
}
}
Код: Выделить всё
mFragmentId1 = getListId();
pagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(),mFragmentId1);//new CursorFragmentPagerAdapter(this,getSupportFragmentManager(),cursor);
pager.setAdapter(pagerAdapter);
но потом делаю вот такое
Код: Выделить всё
@Override
public void onDeleteNoteClick(long id, int position) {
mFragmentId1.remove(position);
pagerAdapter.notifyDataSetChanged();
}
Может кто в курсе, от чего такое странное поведение.