ile Android Native App'te bir Slayt kutusu (iyonik çerçevede olduğu gibi) Kullanmalıyım ki, yerel android uygulamasında bir slayt kutusu tipi işlevselliği (iyonik çerçeve uygulamasında kullanılan/kullanılan) entegre etmem gerekiyor. Bir sayfa göstergeli ViewPager. Dimajia kaydırıcısını denedim, ama otomatik slayt işlevini kontrol ettiğimi sanmıyorum. Rastgele kaydırmak ve slaytın aşağıdaki sayfa göstergesinde ilerlediğinden emin olmak için kullanıcıya ihtiyacım var. Giriş yapmadan önce bir kez daha benim açılış ekranımdaki tümleştirmeye ihtiyacım var. Şimdiden teşekkürler.ViewPager
cevap
FragmentStatePagerAdapter
ile ViewPager kullanın. Ardından, hangi parçayı (int dizini) kontrol edip, sayfa göstergesini güncellemek için kullanın.
@Override
public Fragment getItem(int i) {
...
Fragment fragment = new myFragment();
_pageReferenceMap.put(i, fragment);
return fragment;
}
destroyItem bu add GetItem() içinde
private HashMap<Integer, Fragment> _pageReferenceMap = new HashMap<Integer, Fragment>();
(..)
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
_pageReferenceMap.remove(position);
}
ve Nihayet görünümde şu anda hangi parçası bilmek için bu yöntemi ekleyin
public myFragment getFragment(int key) {
return (myFragment)_pageReferenceMap.get(key);
}
bu kodu deneyin yapmanız gereken tüm
int index = mViewpager.getCurrentItem();
myFragment fragment = profileAdapter.getFragment(index);
olan bu yöntemi çağırmak için:
activity_introduction.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.yourpackage.IntroductionActivity">
<com.yourpackage.CustomViewPager
android:id="@+id/photos_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottom_relative" />
<RelativeLayout
android:id="@+id/bottom_relative"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:padding="@dimen/std_padding">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
app:tabBackground="@drawable/tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp" />
<Button
android:id="@+id/next_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="@string/next" />
</RelativeLayout>
</RelativeLayout>
IntroductionActivity.java
public class IntroductionActivity extends AppCompatActivity {
private CustomViewPager viewPager;
private Button nextButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_introduction);
//Initializing the tablayout
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
//Adding the tabs using addTab() method
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
//Initializing viewPager
viewPager = (CustomViewPager) findViewById(R.id.photos_viewpager);
viewPager.setPagingEnabled(false);
//Creating our pager adapter
IntroductionPagerAdapter introductionPagerAdapter = new IntroductionPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(introductionPagerAdapter);
tabLayout.setupWithViewPager(viewPager, true);
LinearLayout tabStrip = ((LinearLayout) tabLayout.getChildAt(0));
for (int i = 0; i < tabStrip.getChildCount(); i++) {
tabStrip.getChildAt(i).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
}
nextButton = (Button) findViewById(R.id.next_button);
final SharedPreferences sharedPreferences = getSharedPreferences("SHARED_PREFERENCES_PATH", Context.MODE_PRIVATE);
nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (viewPager.getCurrentItem() == 0) {
viewPager.setCurrentItem(1);
nextButton.setText(getResources().getString(R.string.i_agree));
} else if (viewPager.getCurrentItem() == 1) {
viewPager.setCurrentItem(2);
nextButton.setText(getResources().getString(R.string.skip));
} else if (viewPager.getCurrentItem() == 2) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("KEY_INTRODUCTION_SKIPPED", 1);
editor.apply();
Intent intent = new Intent(IntroductionActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
});
}
@Override
public void onBackPressed() {
if (viewPager.getCurrentItem() == 0) {
finishAffinity();
} else if (viewPager.getCurrentItem() == 1) {
viewPager.setCurrentItem(0);
nextButton.setText(getResources().getString(R.string.next));
} else if (viewPager.getCurrentItem() == 2) {
viewPager.setCurrentItem(1);
nextButton.setText(getResources().getString(R.string.i_agree));
}
}
}
fragment_welcome.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@mipmap/ic_logo_round" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="@dimen/fab_margin"
android:text="@string/welcome"
android:textAlignment="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/colorWhite"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>
</RelativeLayout>
WelcomeFragment.java
public class WelcomeFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_welcome, container, false);
}
}
Benzer şekilde iki fragmanlar yaratmak.
IntroductionPagerAdaper.java
public class IntroductionPagerAdapter extends FragmentStatePagerAdapter {
//private variable
private int tabCount;
//Constructor to the class
public IntroductionPagerAdapter(FragmentManager fm, int tabCount) {
super(fm);
//Initializing tab count
this.tabCount = tabCount;
}
@Override
public Fragment getItem(int position) {
//Returning the current tabs
switch (position) {
case 0:
return new WelcomeFragment();
case 1:
return new DisclaimerFragment();
case 2:
return new RegistrationFragment();
default:
return null;
}
}
@Override
public int getCount() {
return tabCount;
}
}
CustomViewPager.java
public class CustomViewPager extends ViewPager {
private boolean isPagingEnabled = true;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return this.isPagingEnabled && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return this.isPagingEnabled && super.onInterceptTouchEvent(event);
}
public void setPagingEnabled(boolean b) {
this.isPagingEnabled = b;
}
}
Not: kendi tokatlamak engellemek istediğiniz sürece varsayılan ViewPager kullanabilirsiniz.
Mükemmel cevap! Benim için çalışıyor. Benim günümü kurtardın. –
- 1. ViewPager
- 2. Android: ViewPager
- 3. Viewpager Webview bellek sorunu
- 4. ViewPager programsal olarak kaydırma
- 5. ViewPager yanlış yükseklik var
- 6. Viewpager CollapsingToolbarLayout kullanırken görünmüyor
- 7. ViewPager kaydırması, RecyclerView
- 8. Android Espresso: ViewPager,
- 9. ViewPager ScrollView içinde
- 10. ViewPager Otomatik Kısmi Kaydırma
- 11. Sonsuz ViewPager android
- 12. ViewPager parça içi sorunu
- 13. CollapsingToolbarLinkout ViewPager ile
- 14. ViewPager ve Veritabanı
- 15. ViewPager + FragmentStatePagerAdapter: Ekran yönlendirmesi
- 16. ViewPager kaydırma yarım ekranı
- 17. PagerSlidingTabStrip ViewPager kaydırma yapmıyor
- 18. ViewPager hızlı swipes, IndexOutOfBoundsException
- 19. Android ViewPager görünür?
- 20. ViewPager + Fragments - Fragment gösterilmiyor
- 21. ViewPager, getChildFragmentManager() & getFragmentManager()
- 22. ListView'ü Devre Dışı Bırakma ViewPager
- 23. Sadece görünüm için Android viewpager
- 24. ViewPager yanlış yerde mi başlıyor?
- 25. Android ViewPager Dikey Kaydırmayı Algıla
- 26. Android Viewpager Resimde Slayt Galerisi
- 27. ViewPager düğmesindeki özel sayfaya kaydır
- 28. ViewPager ile bir FragmentTabHost Kullanarak
- 29. Dinamik olarak ViewPager yüksekliğinin ayarlanması
- 30. Android ViewPager TabLayout'ta görünümler görüntüleniyor
Düzenleme: İyonik yardım istediğini sanmıştım. Boşver. –
Çapraz platform uygulaması oluşturmuyorum. Bunu başarmak için bir yol ya da kütüphane olsun, JAVA'ya entegre olmalı mıyım? –
Tamam Karan, bir sorun değil. İlginiz için teşekkürler. –