2014-12-31 7 views
5

के साथ एंड्रॉइड साझा तत्वों को मैं एक गतिविधि में एक गतिविधि से एक विस्तार गतिविधि में एक छवि पारगमन करने की कोशिश कर रहा हूं।पिकासो

विस्तार गतिविधि में छवि सूची में से बड़ी है और मैं सर्वर से छवि को पुनर्प्राप्त करने के लिए पिकासो का उपयोग कर रहा हूं।

समस्या यह है कि पहली बार जब मैं विस्तार गतिविधि लॉन्च करता हूं, तो छवि अच्छी तरह से पारगमन करती है लेकिन इसका आकार बदल नहीं जाता है और न ही केंद्रित होता है। जब मैं वापस जाता हूं, तो छवि को तुरंत बदल दिया जाता है, और यदि मैं एक ही विस्तार गतिविधि पर वापस आ जाता हूं, तो यह अपेक्षा के अनुसार काम करता है।

विस्तार गतिविधि कॉल विधि:

public static void launch(Activity activity, View transitionView, 
          StoreProduct storeProduct) { 

    ActivityOptionsCompat options = 
      ActivityOptionsCompat.makeSceneTransitionAnimation(
        activity, transitionView, activity.getString(R.string 
          .transition_product_image)); 
    Intent intent = new Intent(activity, ProductDetailActivity.class); 
    intent.putExtra(PARAM_STORE_PRODUCT, storeProduct); 
    ActivityCompat.startActivity(activity, intent, options.toBundle()); 
} 

विस्तार गतिविधियों में पिकासो छवि लोड:

Picasso.with(this).load(product.imageUrl).fit().centerInside() 

आपकी मदद

उत्तर

0

कोशिश अपनी जरूरत के आधार पर परिवर्तन का उपयोग करने के लिए धन्यवाद।

Transformation transformation = new Transformation() { 

     @Override 
     public Bitmap transform(Bitmap source) { 
      int targetWidth = context.getResources().getDisplayMetrics().widthPixels - lessWidth; 
      if (source.getWidth() > targetWidth) { 
       double aspectRatio = (double) source.getHeight() 
         /(double) source.getWidth(); 
       int targetHeight = (int) (targetWidth * aspectRatio); 
       Bitmap result = Bitmap.createScaledBitmap(source, 
         targetWidth, targetHeight, false); 
       if (result != source) { 
        source.recycle(); 
       } 
       return result; 
      } 
      return source; 
     } 

     @Override 
     public String key() { 
      return "transformation" + " desiredWidth"; 
     } 
    }; 

इस वस्तु नीचे के रूप में इस्तेमाल किया जा सकता:

Picasso.with(context).load(strImageUrl).transform(transformation) 
      .into(imageView, new com.squareup.picasso.Callback() { 

       @Override 
       public void onSuccess() { 
        Log.d("Picasso", "ImageLoadSuccess");      
       } 

       @Override 
       public void onError() { 
        Log.d("PicassoHelper", "ImageLoadError"); 
        if (imageView!=null&&defaultBitmap!=null) { 
         imageView.setImageBitmap(defaultBitmap); 
        }      
       } 
      }); 

आशा है कि यह आपकी समस्या में मदद मिलेगी।

+0

आपके सुझाव के लिए धन्यवाद। मैंने इसे लागू किया लेकिन मुझे अभी भी वही परिणाम मिल गया है। छवि का आकार बदल नहीं है, हालांकि ट्रांसफॉर्म विधि द्वारा लौटा गया बिटमैप सही ढंग से आकार दिया गया है। – Leguman

+0

आप अपनी आवश्यकताओं के अनुसार ** ** बदलें ** विधि के अंदर कोड बदल सकते हैं –

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