Witam
Jak zmusić ViewPager do przesuwania stron w pionie a nie w poziomie?
ViewPager moze wziac implementacje PageTransformera aby zmienic animacje. Te animacje moga byc np. translate animation. Domyslnie przuwane jest w poziomie (os x) a twoj transformer bedzie to robil w pionie (os y). Wiecej na ten temat: http://developer.android.com/training/animation/screen-slide.html.
Jesteś pewny, że da się takie coś zrobić? Próbowałem w internecie poszukać jakiś informacji lub zastosowania tego, ale nic nie znalazłem. może faktycznie da się zmienić animację, ale gesty dalej pozostaną domyślne czyli mazanie na boki zamiast w górę i dół.
Masz racje, gesty pozostana standardowe, nie pomyslalem o tym. No wiec nie da sie tego zrobic z normalnym ViewPagerem, ale moze ten kod: https://github.com/JakeWharton/Android-DirectionalViewPager/ pomoze ci zaczac.
Dzięki
A jak wykorzystać ten kod? konkretnie jak go otworzyć? składa się z przykładu i biblioteki, więc jak to połączyć żeby działało?
zauważyłem, że jest w internecie wiele kodów które tak wyglądają, ale nie wiem jak je poskładać do postaci wykonywalnej.
Wiem jak dodaje się do projektu biblioteki jar, ale za coś takiego jak w Android-DirectionalViewPager to nie wiem jak się za to zabrać.
Bardzo proszę o pomoc.
Tak jak wszystkie inne liby. Sciagasz jara wrzucassz do katalogu libs (zakladam ze uzywasz Eclipsa), importujesz w Twoim kodzie odpowiednie klasy i uzywasz. W sumie nie rozumiem pytania.
Jesli uzywasz Android Studio z gradle to dodajesz w build.gradle aplikacji zaleznosc i wszystko dzieje sie automatycznie.
Ale tam ten lib dość dziwnie wygląda, bo nie ma tam jar'a tylko kod źródłowy, nie wiem jak to podczepić do projektu : )
He? Masz 2 opcje:
- tzw. na pałę: kopiujesz kod zrodlowy plik po pliku i dolaczasz do swojego projekty - w ten sposob mozesz poprawiac w nim bugi i szperac
- po bożemu: bierzesz gita, robisz clone projekty z github, instalujesz mavena (tam jest plik pom.xml), i za pomoca mavena budujesz liba i w wyniku dostajesz jara, z ktorym juz wiesz co zrobic
Obsluga gita i mavena is not in scope of this post.
Ten lib korzysta z FragmentActivity co zrobić żeby działało w AppWidgetProvider czyli w typowym widget?
The method getSupportFragmentManager() is undefined for the type SampleActivity
SampleActivity.java
package com.directionalviewpager.sample;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.Button;
import com.directionalviewpager.DirectionalViewPager;
public class SampleActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// //Set up the pager
final DirectionalViewPager pager = (DirectionalViewPager)findViewById(R.id.pager);
pager.setAdapter(new TestFragmentAdapter(getSupportFragmentManager())); //tutaj jest problem z TestFragmentAdapter i getSupportFragmentManager
//Bind to control buttons
((Button)findViewById(R.id.horizontal)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pager.setOrientation(DirectionalViewPager.HORIZONTAL);
}
});
((Button)findViewById(R.id.vertical)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pager.setOrientation(DirectionalViewPager.VERTICAL);
// pager.setCurrentItem(0); // ustawienie strony króra ma się wyświetlić
}
});
}
}
TestFragmentAdapter.java
package com.directionalviewpager.sample;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
class TestFragmentAdapter extends FragmentPagerAdapter {
private Context _context;
public static int totalPage=2;
public TestFragmentAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment f = new Fragment();
switch(position){
case 0:
f=LayoutOne.newInstance(_context);
break;
case 1:
f=LayoutTwo.newInstance(_context);
break;
}
return f;
// return TestFragment.newInstance(CONTENT[position]);
}
@Override
public int getCount() {
return totalPage;
}
}
Problem jest gdy zmieni się na AppWidgetProvider zamiast FragmentActivity