2012-12-10 22 views

cevap

72

.

Farklı bir şey göstermek için, geçirdiğiniz içerik türünü değiştirmeniz yeterlidir.

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:

Bu nasıl kurulum Viewpager geçerli: Aşağıdaki örnekte gösterildiği gibi, bu durumda, metin yerine resim geçmek istiyorum. 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

// görüntü Yukarıdaki koddan böyle bir Görünüm çağrı cihazı almalısınız here.//

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; 
    } 
} 

metnin instaed dönmek gerekir. enter image description here

+0

Kodunuzu denedim ancak görüntü gösterilmiyor. ne yanlış ?? – Dolphin

+0

Merhaba ben de bu kodu denedim, görüntü çağrı cihazı hiç çalışmıyor gibi kayma sorunum var, sadece ana çağrı cihazı ve sadece görüntüleri görüntüler değil, ne yapıyorum yanlış yapıyor? –

+0

@ mak_just4anything Görünüş çağrı cihazında bir görüntü çağrı cihazı kullanıyor gibisiniz. Birkaç kez denedim ama işe yaramayacaktım. Yaptığım şey parçalara sahip olmak için değil, sekmelere sahip olmaktı. –

3

Hoho .. Bunu uygulamak için Galeri'yi kullanmak çok kolay olmalı, ViewPager'ı kullanmak çok daha zor. Ama ben hala ViewPager kullanmak için teşvik çünkü Galeri gerçekten çok sorun var ve android 4.2 beri kullanımdan kaldırılmıştır.

PagerAdapter'de, sayfa boyutunu denetlemek için getPageWidth() yöntemi vardır, ancak yalnızca bu şekilde hedefinizi gerçekleştiremezsiniz.

Yardım için aşağıdaki 2 makaleyi okumaya çalışın.

multiple-view-viewpager-options

viewpager-container

2

bu https://github.com/kilaka/ImageViewZoom kullanımını kontrol .. özel galeri kontrolü kullanabilirsiniz galleryTouch sınıfı bundan ..

+0

Bu konuda bir göstergem var mı? ya da projeden referans almamı mı söylüyorsun? –

+0

görüntüyü tembel yükleme olarak yüklüyor ve yer tutucu bir görüntü koyuyor .. görüntüyü yüklemeden önce yer tutucu görüntüsü gösterecek .. –

+0

tamam. Teşekkür ederim. –

4

Çevreye duyarlı sayfalar görünür hale getirmek için bu https://gist.github.com/8cbe094bb7a783e37ad1 kullanın ve gösterge için http://viewpagerindicator.com/ kullanın. Oldukça havalı, galeri için kullanıyorum.

o bir dize dizisi Eğer viewpager için bir Görünüm döndüren YourFragment.java için (yani FragmentPagerAdapter genişletir) YourAdapter.java geçmesi (yani ["this","is","a","text"]) görüntülemek için Görünüm çağrı cihazını uygulamıştır Jake'in ViewPageIndicator olarak
+0

Bunu uygulayabilmem için bazı örnek uygulamalarınız var mı? –

+2

Gösterge uygulamamıştım, ancak 'ViewPager' galeri uygulamasında, projenize tüm kodu kopyalamanız, TextView'den "InstantiateItem" bölümündeki içeriği ImageView'unuza dönüştürmeniz gerekiyor. – sztembi

0
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); 

    } 
41

Sana denemek olabilir, AndroidImageSlider adında bir kütüphane yaptı. senin burada http://javaant.com/viewpager-with-circle-indicator-in-android/#.VysQQRV96Hs komple kod indirebilirsiniz daire göstergeli sürgülü basit android görüntüye arıyorsanız

enter image description here

+0

@daimajia basit viewpager istiyorum SliderLayout'ta görüntü değiştirme stili, giderek azalan görüntü boyutu ve öndeki görüntü boyutunu artırma. Bu artışı ve büyüklüğü azaltmak istemiyorum, bunu nasıl başarabilirim? –

+0

@daimajia AndroidImageSlider kullanıyorum. Harika çalışıyor. Ama sorun şu ki önbelleği geçersiz kılmak istiyorum. Arı gösterilen görüntüleri güncellediğim sırada. Bunu yapmanın bir yolu var mı? –

+0

Bu kütüphaneyi yapmak için tanrı sizi korusun. görüntü kaymak – erfan

1

Merhaba. net bir fikir verecek olan canlı demoyu kontrol edin.