2012-12-10 18 views
58

मैं जेक के ViewPageIndicator का उपयोग कर रहा हूं और एक स्वाइप गैलरी जैसी छवियां प्रदर्शित करना चाहता हूं। कोई भी रिफ़र्न्स लिंक जहां मैं शुरू कर सकता हूं। मैं बुनियादी viewpager लागू कर दिया है और अब viewpaper नीचे के रूप मेंछवि स्लाइड गैलरी के रूप में एंड्रॉइड व्यूपर

enter image description here

छवि लागू करना चाहते हैं यह ViewPageIndicator का उपयोग कर प्राप्त करने के लिए संभव है?

उत्तर

72

जैक के ViewPageIndicator में उन्होंने देखें पेजर लागू किया गया है एक स्ट्रिंग सरणी (अर्थात ["this","is","a","text"]) जो आप (कि FragmentPagerAdapter फैली) YourFragment.java जो viewpager के लिए एक दृश्य रिटर्न के लिए YourAdapter.java से पारित प्रदर्शित करने के लिए।

कुछ अलग प्रदर्शित करने के लिए, आपको बस अपने पास के संदर्भ प्रकार को बदलना होगा।

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:

यह आपके Viewpager है आप कैसे सेटअप: इस मामले में आप के रूप में नीचे नमूने में बताया गया, पाठ के बजाय छवियों पास करना चाहते हैं। जावा

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

,210

// आप छवि 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; 
    } 
} 

से पाठ की instaed आप उपरोक्त कोड से इस तरह एक दृश्य पेजर मिलना चाहिए लौटना ही होगा। enter image description here

+0

मैंने आपके कोड की कोशिश की है लेकिन छवि दिखाई नहीं दे रही है। गलत क्या ?? – Dolphin

+0

नमस्ते मैंने इस कोड को भी आजमाया, मुझे स्वाइप करने में समस्या हो रही है क्योंकि छवि पेजर बिल्कुल काम नहीं कर रहा है, यह केवल पैरेंट पेजर को स्वाइप करता है और छवियां भी प्रदर्शित नहीं होती हैं, मैं गलत क्या कर रहा हूं? –

+0

@ mak_just4anything ऐसा लगता है कि आप व्यू पेजर के अंदर एक व्यू पेजर का उपयोग कर रहे हैं। मैंने दो बार कोशिश की लेकिन इसे काम नहीं कर सका। मैंने जो किया था वह टैब था और टुकड़ों के लिए दृश्य पेजर नहीं था। –

3

होहो .. इसे लागू करने के लिए गैलरी का उपयोग करना बहुत आसान होना चाहिए, ViewPager का उपयोग करना बहुत कठिन है। लेकिन मैं अभी भी ViewPager का उपयोग करने के लिए प्रोत्साहित करता हूं क्योंकि गैलरी में वास्तव में कई समस्याएं हैं और एंड्रॉइड 4.2 के बाद से इसे हटा दिया गया है।

पेजर एडाप्टर में पृष्ठ आकार को नियंत्रित करने के लिए एक विधि getPageWidth() प्राप्त है, लेकिन केवल इसके द्वारा आप अपना लक्ष्य प्राप्त नहीं कर सकते हैं।

सहायता के लिए निम्नलिखित 2 लेख पढ़ने की कोशिश करें।

multiple-view-viewpager-options

viewpager-container

12

छवि व्यूअर ViewPager कार्यान्वयन के साथ, इस परियोजना https://github.com/chiuki/android-swipe-image-viewer

जाँच इस चर्चा का संदर्भ लें भी Swiping images (not layouts) with viewpager

+0

क्या आप मुझे बता सकते हैं कि छवियों पर ऑनक्लिक श्रोता कैसे जोड़ें? मैंने एडाप्टर में जोड़ने की कोशिश की, लेकिन एडाप्टर में जोड़ने में असमर्थ? – asliyanage

+0

इस परियोजना के लिए सचमुच शून्य दस्तावेज है। आह। – Davor

2

आप कस्टम गैलरी नियंत्रण का उपयोग कर सकते .. इस https://github.com/kilaka/ImageViewZoom उपयोग की जाँच गैलरी टच क्लास ..

+0

क्या कोई तरीका है जिसके साथ मैं इसके साथ संकेतक रख सकता हूं? या क्या आप मुझे परियोजना से संदर्भ लेने के लिए कह रहे हैं? –

+0

लोड छवि को आलसी लोडिंग के रूप में लोड करें और प्लेसहोल्डर छवि डालें .. यह छवि लोड करने से पहले प्लेसहोल्डर छवि दिखाएगा .. –

+0

ठीक है। धन्यवाद। –

4

आसपास के पृष्ठों को दृश्यमान बनाने के लिए बस https://gist.github.com/8cbe094bb7a783e37ad1 का उपयोग करें और संकेतक के लिए http://viewpagerindicator.com/ यह करें। यह बहुत अच्छा है, मैं इसे गैलरी के लिए उपयोग कर रहा हूं।

+0

क्या आपके पास कुछ प्रकार का नमूना ऐप है जो इसे कार्यान्वित कर रहा है ताकि मैं इसका संदर्भ दे सकूं? –

+2

मैंने सूचक को लागू नहीं किया है, लेकिन 'ViewPager' गैलरी कार्यान्वयन में आपको अपने प्रोजेक्ट में पूरा कोड कॉपी करना होगा, टेक्स्टव्यू से' ImageiiewItem 'अनुभाग में सामग्री को अपनी छवि दृश्य में बदलना होगा। – 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); 

    } 
0

एक महान एक छवि स्लाइडर: https://github.com/daimajia/AndroidImageSlider की जाँच करें यह

+0

है की तरह Android viewpager को यह पुस्तकालय -_- – Prasad

+0

पहले से ही से ठीक छवियों काम करता है;): पृष्ठ –

+0

@Programmingvirus मैं इससे पहले कि वह किया था यह साझा साझा @daimajia यूआरएल – Abdellah

41

मैं AndroidImageSlider नाम के एक पुस्तकालय बनाया है, आप एक कोशिश कर सकते हैं।

enter image description here

+0

@daimajia मैं सरल viewpager चाहते स्लाइडरलायआउट में छवि बदलने वाली शैली, छवि का घटता आकार जो आगे बढ़ रहा है और सामने आने वाली छवि का आकार बढ़ रहा है। मैं इस वृद्धि और आकार में कमी नहीं करना चाहता, क्या आप सुझाव दे सकते हैं कि मैं इसे कैसे प्राप्त कर सकता हूं? –

+0

@ डेमजिया मैं एंड्रॉइड इमेजस्लाइडर का उपयोग कर रहा हूं। यह बहुत अच्छा काम करता है। लेकिन समस्या यह है कि मैं कैश को अमान्य करना चाहता हूं। जैसा कि मैं दिखाया जा रहा है कि छवियों को अद्यतन कर रहा हूँ। क्या इसे करने का कोई तरीका है? –

+0

भगवान आपको इस पुस्तकालय बनाने के लिए आशीर्वाद देते हैं। छवि स्लाइडर बनाने के लिए कभी भी सर्वश्रेष्ठ लाइब्रेरी देखें – erfan

1

हाय अपने सर्कल सूचक के साथ फिसलने आप यहाँ http://javaant.com/viewpager-with-circle-indicator-in-android/#.VysQQRV96Hs से पूरा कोड डाउनलोड कर सकते हैं सरल एंड्रॉयड छवि के लिए देख रहे हैं। कृपया लाइव डेमो देखें जो स्पष्ट विचार देगा।

संबंधित मुद्दे