Android Viewpager как слайд-Галерея изображений
Я использую ViewPageIndicator и хотите, чтобы отображать изображения, как салфетки галереи. Любая ссылка, ссылки, где я могу начать. Я реализовал базовый viewpager и теперь хочу реализовать Image viewpaper, как показано ниже
можно ли добиться с помощью ViewPageIndicator ?
9 ответов:
в ViewPageIndicator Джейка он реализовал просмотр пейджера для отображения массива строк (т. е.
["this","is","a","text"]
) который вы передаете от YourAdapter.java (который расширяет FragmentPagerAdapter) к YourFragment.java, которая возвращает представление в viewpager.чтобы отобразить что-то другое, вам просто нужно изменить тип контекста вашего прохождения. В этом случае вы хотите передать изображения вместо текста, как показано в примере ниже:
вот как вы настраиваете свой Viewpager:
public class PlaceDetailsFragment extends SherlockFragment { PlaceSlidesFragmentAdapter mAdapter; ViewPager mPager; PageIndicator mIndicator; public static final String TAG = "detailsFragment"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_place_details, container, false); mAdapter = new PlaceSlidesFragmentAdapter(getActivity() .getSupportFragmentManager()); mPager = (ViewPager) view.findViewById(R.id.pager); mPager.setAdapter(mAdapter); mIndicator = (CirclePageIndicator) view.findViewById(R.id.indicator); mIndicator.setViewPager(mPager); ((CirclePageIndicator) mIndicator).setSnap(true); mIndicator .setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int position) { Toast.makeText(PlaceDetailsFragment.this.getActivity(), "Changed to page " + position, Toast.LENGTH_SHORT).show(); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageScrollStateChanged(int state) { } }); return view; } }
your_layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" /> <com.viewpagerindicator.CirclePageIndicator android:id="@+id/indicator" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dip" /> </LinearLayout>
YourAdapter.java
public class PlaceSlidesFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter { private int[] Images = new int[] { R.drawable.photo1, R.drawable.photo2, R.drawable.photo3, R.drawable.photo4 }; protected static final int[] ICONS = new int[] { R.drawable.marker, R.drawable.marker, R.drawable.marker, R.drawable.marker }; private int mCount = Images.length; public PlaceSlidesFragmentAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return new PlaceSlideFragment(Images[position]); } @Override public int getCount() { return mCount; } @Override public int getIconResId(int index) { return ICONS[index % ICONS.length]; } public void setCount(int count) { if (count > 0 && count <= 10) { mCount = count; notifyDataSetChanged(); } } }
YourFragment.java
// вам нужно вернуть изображение instaed текста отсюда.//
public final class PlaceSlideFragment extends Fragment { int imageResourceId; public PlaceSlideFragment(int i) { imageResourceId = i; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ImageView image = new ImageView(getActivity()); image.setImageResource(imageResourceId); LinearLayout layout = new LinearLayout(getActivity()); layout.setLayoutParams(new LayoutParams()); layout.setGravity(Gravity.CENTER); layout.addView(image); return layout; } }
вы должны получить вид пейджера, как это из приведенного выше кода.
Я сделал библиотеку с именем AndroidImageSlider, вы можете попробовать.
просмотр изображений с реализацией ViewPager, проверьте этот проект https://github.com/chiuki/android-swipe-image-viewer
см. это обсуждение также считывание изображений (не макетов) с помощью viewpager
просто используйте это https://gist.github.com/8cbe094bb7a783e37ad1 для отображения окружающих страниц и http://viewpagerindicator.com/ это, для индикатора. Это довольно круто, я использую его для галереи.
Хохо.. Это должно быть очень легко использовать галерею для реализации этого, используя ViewPager намного сложнее. Но я по-прежнему рекомендую использовать ViewPager, так как Галерея действительно имеет много проблем и устарела с android 4.2.
в PagerAdapter есть метод getPageWidth () для управления размером страницы, но только этим вы не можете достичь своей цели.
попробуйте прочитать следующие 2 статьи помощь.
вы можете использовать пользовательский элемент управления галереей.. проверьте это https://github.com/kilaka/ImageViewZoom используйте класс galleryTouch из этого..
Привет если вы ищете простой Android изображение скольжения с круговым индикатором вы можете скачать полный код отсюда http://javaant.com/viewpager-with-circle-indicator-in-android/#.VysQQRV96Hs . пожалуйста, проверьте демо-версию, которая даст четкое представление.
enter code here public Timer timer; public TimerTask task; public ImageView slidingimage; private int[] IMAGE_IDS = { R.drawable.home_banner1, R.drawable.home_banner2, R.drawable.home_banner3 }; enter code here @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home_screen); final Handler mHandler = new Handler(); // Create runnable for posting final Runnable mUpdateResults = new Runnable() { public void run() { AnimateandSlideShow(); } }; int delay = 2000; // delay for 1 sec. int period = 2000; // repeat every 4 sec. Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { public void run() { mHandler.post(mUpdateResults); } }, delay, period); enter code here private void AnimateandSlideShow() { slidingimage = (ImageView)findViewById(R.id.banner); slidingimage.setImageResource(IMAGE_IDS[currentimageindex%IMAGE_IDS.length]); currentimageindex++; Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.custom_anim); slidingimage.startAnimation(rotateimage); }
отличный слайдер изображений:https://github.com/daimajia/AndroidImageSlider Проверьте это