2012-10-14 24 views
8

का उपयोग करके चुटकी ज़ूम को कार्यान्वित करना मैं दूरस्थ सर्वर से छवियों को पुनर्प्राप्त करने के लिए ViewPager का उपयोग कर रहा हूं। सब कुछ ठीक से काम कर रहा है, लेकिन समस्या यह है कि मुझे नहीं पता कि इसमें चुटकी ज़ूम इन/आउट फ़ंक्शन को कैसे कार्यान्वित किया जाए। यदि आपका viewpager तो आप touchImageViewViewPager

उपयोग कर सकते हैं

https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/example/touch/TouchImageView.java

सिर्फ इस कस्टम दृश्य के साथ अपने वर्तमान imageView की जगह एक imageView उपयोग कर रहा है मेरे कोड के नीचे

public class ImagePagerActivity extends BaseActivity { 

    private ViewPager pager; 

    private DisplayImageOptions options; 

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.ac_image_pager); 
    Bundle bundle = getIntent().getExtras(); 
    String[] imageUrls = bundle.getStringArray(Extra.IMAGES); 
    int pagerPosition = bundle.getInt(Extra.IMAGE_POSITION, 0); 

    options = new DisplayImageOptions.Builder() 
       .showImageForEmptyUri(R.drawable.image_for_empty_url) 
       .cacheOnDisc() 
       .imageScaleType(ImageScaleType.IN_SAMPLE_INT) 
       .build(); 

    pager = (ViewPager) findViewById(R.id.pager); 
    pager.setAdapter(new ImagePagerAdapter(imageUrls)); 
    pager.setCurrentItem(pagerPosition); 

    } 

    protected void onStop() { 
    imageLoader.stop(); 
    super.onStop(); 
    } 

    private class ImagePagerAdapter extends PagerAdapter { 

    private String[] images; 
    private LayoutInflater inflater; 

    ImagePagerAdapter(String[] images) { 
    this.images = images; 
    inflater = getLayoutInflater(); 
    } 

    public void destroyItem(View container, int position, Object object) { 
    ((ViewPager) container).removeView((View) object); 
    } 

    public void finishUpdate(View container) { 
    } 

    public int getCount() { 
    return images.length; 
    } 

    public Object instantiateItem(View view, int position) { 
       final View imageLayout = inflater.inflate(R.layout.item_pager_image, null); 
       final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image); 
       final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading); 

    imageLoader.displayImage(images[position], imageView, options, new ImageLoadingListener() { 

    public void onLoadingStarted() { 
    spinner.setVisibility(View.VISIBLE); 
    } 


    public void onLoadingFailed(FailReason failReason) { 
    String message = null; 
    switch (failReason) { 
    case IO_ERROR: 
    message = "Input/Output error"; 
    break; 
    case OUT_OF_MEMORY: 
    message = "Out Of Memory error"; 
    break; 
    case UNKNOWN: 
    message = "Unknown error"; 
    break; 
    } 
    Toast.makeText(ImagePagerActivity.this, message, Toast.LENGTH_SHORT).show(); 

    spinner.setVisibility(View.GONE); 
           imageView.setImageResource(android.R.drawable.ic_delete); 
        } 


    public void onLoadingComplete(Bitmap loadedImage) { 
    spinner.setVisibility(View.GONE); 
    Animation anim = AnimationUtils.loadAnimation(ImagePagerActivity.this, R.anim.fade_in); 
    imageView.setAnimation(anim); 
    anim.start(); 
    } 

    public void onLoadingCancelled() { 
    // Do nothing 
    } 
    }); 

    ((ViewPager) view).addView(imageLayout, 0); 
    return imageLayout; 
    } 

    public boolean isViewFromObject(View view, Object object) { 
    return view.equals(object); 
    } 

    public void restoreState(Parcelable state, ClassLoader loader) { 
    } 
    public Parcelable saveState() { 
    return null; 
    } 

    public void startUpdate(View container) { 
    } 
    } 
    } 
+1

यह एक मूल कार्य की तरह लगता है जो छवि होने पर विरासत में होना चाहिए। समझ में नहीं आ रहा है कि Google ने इसे छवि दृश्य – JPM

उत्तर

6

है। goodluck

+0

में एक विकल्प के रूप में क्यों उपलब्ध नहीं किया है, यह बहुत उपयोगी था :) परिणाम का प्रयास करने और अपडेट करने का प्रयास करेगा। – iabhi

+5

ऐसा लगता है कि ज्यादातर काम करते हैं, हालांकि पेजर की कार्रवाई टचिमेजव्यू के कार्यों से लड़ रही है, और चुटकी-ज़ूम करने का प्रयास करने से पेज को चालू करना भी शुरू हो जाएगा। और एक बार पृष्ठ चालू होने के बाद, चुटकी-ज़ूम कार्रवाई समाप्त होती है। वास्तव में सफलतापूर्वक ज़ूम करने के लिए कई सावधानीपूर्वक प्रयासों की आवश्यकता है। – directedition

+0

यह पूर्ण स्क्रीन की तरह ज़ूम नहीं कर रहा है। लेकिन ज़ूम नियंत्रण ठीक काम करता है। क्या आप मेरी पूरी स्क्रीन के साथ इसे ज़ूम करने में मदद कर सकते हैं? –