पिकासो के साथ पूर्ण चौड़ाई और निश्चित ऊंचाई तक छवि का आकार बदलें


164

मेरे पास एक ऊर्ध्वाधर रैखिकलेयूट है जहां एक आइटम ImageViewपिकासो का उपयोग करके लोड किया गया है। मुझे छवि की चौड़ाई को पूर्ण डिवाइस की चौड़ाई तक बढ़ाने की आवश्यकता है, और एक निश्चित ऊंचाई (150dp) द्वारा फसली छवि के केंद्र भाग को प्रदर्शित करने के लिए। वर्तमान में मेरे पास निम्नलिखित कोड हैं:

Picasso.with(getActivity()) 
    .load(imageUrl) 
    .placeholder(R.drawable.placeholder) 
    .error(R.drawable.error) 
    .resize(screenWidth, imageHeight)
    .centerInside() 
    .into(imageView);

मुझे किन मूल्यों में screenWidthऔर imageHeight(= 150dp) लगाना चाहिए ?

जवाबों:


486

आप क्या देख रहे हैं:

.fit().centerCrop()

इनका क्या मतलब है:

  • fit- जब तक ImageViewमापा नहीं गया है तब तक प्रतीक्षा करें और छवि को उसके आकार से बिल्कुल मेल खाने के लिए आकार बदलें।
  • centerCrop- जब तक यह आकार नहीं भरता तब तक पहलू अनुपात का सम्मान करने वाली छवि को मापें। फसल या तो ऊपर और नीचे या बाएँ और दाएँ तो यह आकार से बिल्कुल मेल खाती है।

5
ImageView की ऊंचाई कितनी होनी चाहिए? मैं अपने imageView के लिए एक निश्चित ऊंचाई नहीं चाहता। इसे छवि की ऊंचाई के अनुसार बदलना चाहिए।
चेतना

4
.fit().centerInside()मेरे लिए काम किया जहां सिर्फ त्रुटि संदेश के .centerInside()साथ दुर्घटनाग्रस्त हो गया था Center inside requires calling resize with positive width and height.
रॉक ली

@Rock ली, आपको इसे आकार देने की आवश्यकता है: '.load (url) .resize (targetWidth, targetHeight)' .........
FRK

8
.fit().centerCrop()या .fit().centerInside()काम नहीं कर रहा है। इमेज लोड हो रहा है नहीं है imageView। बिना .fit()छवि ठीक लोड हो रहा है। मैं .resize()दोनों मामलों में उपयोग नहीं कर रहा हूं ।
निशांत भक्त

इसे किसी भी पक्ष से क्रॉप किए बिना कैसे बदला जाए और पहलू को भी बनाए रखा जाए
रोहित शर्मा

1

कुछ मामलों में फिट () बेकार है। इससे पहले कि आप समाप्त होने के लिए चौड़ाई और ऊंचाई माप के लिए प्रतीक्षा करें। तो आप globallayoutlistener का उपयोग कर सकते हैं। उदाहरण के लिए;

imageView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            public void onGlobalLayout() {
                Picasso.with(getActivity())
                        .load(imageUrl)
                        .placeholder(R.drawable.placeholder)
                        .error(R.drawable.error)
                        .resize(screenWidth, imageHeight)
                        .fit
                        .centerInside()
                        .into(imageView);
                imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.