9

मेरे पास सभी फोटो थंबनेल आइटम दिखाने के लिए एक रीसायकल दृश्य है। आइटम पर क्लिक करते समय, मैं इस आइटम में विस्तार से गतिविधि में छविदृश्य के लिए संक्रमण का उपयोग करता हूं। समस्या यह है कि छवि स्रोत UIL द्वारा इंटरनेट से प्राप्त किया गया है। और कुछ समय (हमेशा नहीं) छवियों सही आकार फिर से लोड नहीं इस तरह:शेयर छवि तत्व संक्रमण गलत आकार प्रदर्शित करें

transition error

// on view holder item click 
    final Pair<View, String>[] pairs = TransitionHelper.createSafeTransitionParticipants(this, false, 
        new Pair<>(((ItemViewHolder) viewHolder).thumbnail, getString(R.string.TransitionName_Profile_Image)), 
        new Pair<>(((ItemViewHolder) viewHolder).tvName, getString(R.string.TransitionName_Profile_Name))); 

    ActivityOptionsCompat transitionActivityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(this, pairs); 
    startActivityForResult(intent, requestCode, transitionActivityOptions.toBundle()); 

विस्तार गतिविधि

// try to post pone transition until UIL load finish 
ActivityCompat.postponeEnterTransition(this); 
getSupportFragmentManager().beginTransaction().replace(R.id.layoutContent, new DetailFragment()).commit(); 

टुकड़ा विस्तार

ImageLoader.getInstance().displayImage(url, imageViewDetail, new ImageLoadingListener() { 
       @Override 
       public void onLoadingStarted(String imageUri, View view) { 

       } 

       @Override 
       public void onLoadingFailed(String imageUri, View view, FailReason failReason) { 
        finishAnimation(); 
       } 

       @Override 
       public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 

        finishAnimation(); 
       } 

       @Override 
       public void onLoadingCancelled(String imageUri, View view) { 
        finishAnimation(); 
       } 
      }); 


private void finishAnimation(){ 
    ActivityCompat.startPostponedEnterTransition(getActivity()); 
    imageViewDetail.invalidate(); 
} 

fragment_detail.xml

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <ImageView 
     android:transitionName="@string/TransitionName.Profile.Image" 
     android:id="@+id/imageViewDetail" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:adjustViewBounds="true" 
     android:scaleType="centerCrop"/> 
</FrameLayout> 

मैं भी इंतजार विचारों लोड छवि से पहले बाहर रखी हैं, लेकिन अभी भी काम नहीं:

imageViewDetail.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 
      @Override 
      public boolean onPreDraw() { 
       // code load image from UIL 
       return false; 
      } 
     }); 

वहाँ किसी भी तरह से इस समस्या से बचने के लिए है?

+0

में आप उपयोग centerCrop शायद कि एक मुद्दा अलग पैमाने प्रकार के साथ की कोशिश कर रहा है कर रहे हैं। –

+0

@ हिमानी अच्छी तरह से, मुझे इसका उपयोग करना होगा क्योंकि फोटो स्क्रीन फिट होना चाहिए और अनुपात रखना चाहिए। लेकिन क्या आपके पास स्केलटाइप त्रुटि के बारे में कोई सुराग है? यह ** कई मामलों पर काम करता है **, लेकिन कभी-कभी छवि की तरह दिखता है – R4j

+0

तैयार नहीं है तो –

उत्तर

0

इस एक्सएमएल विभिन्न छवि का आकार

<ScrollView 
     android:id="@+id/vScroll" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginBottom="51dp" 
     android:scrollbars="none" > 

     <HorizontalScrollView 
      android:id="@+id/hScroll" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:scrollbars="none" 
      android:layout_gravity="center"> 

      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 

       <ImageView 
        android:id="@+id/imgFullscreen" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:scaleType="fitXY" /> 
      </LinearLayout> 
     </HorizontalScrollView> 
    </ScrollView> 

संभाल कर सकते हैं जावा

fullImageView = (ImageView) findViewById(R.id.imgFullscreen); 
selectedPhoto = (FeedItem) i.getSerializableExtra(TAG_SEL_IMAGE); 
     zoom = 1; 

     if (selectedPhoto != null) { 
      fetchFullResolutionImage(); 
     } else { 
      Toast.makeText(getApplicationContext(), 
        getString(R.string.msg_unknown_error), Toast.LENGTH_SHORT) 
        .show(); 
     } 



private void fetchFullResolutionImage() { 
    try { 
     final URL url = new URL(selectedPhoto.getImge());  
     new Thread(new Runnable() { 

      @Override 
      public void run() { 
       try { 
        Bitmap bmp = BitmapFactory.decodeStream(url 
          .openStream()); 
        if (bmp != null) 
         setImage(bmp); 
        else { 
         showToast("Error fetching image!"); 
        } 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }).start(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 
private void setImage(final Bitmap bmp) { 
     runOnUiThread(new Runnable() { 
      public void run() { 
       fullImageView.setImageBitmap(bmp); 
       adjustImageAspect(selectedPhoto.getWidth(), 
         selectedPhoto.getHeight()); 
      } 
     }); 
    } 
private void adjustImageAspect(int bWidth, int bHeight) { 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
       LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
     if (bWidth == 0 || bHeight == 0) 
      return; 
     int swidth; 

     if (android.os.Build.VERSION.SDK_INT >= 13) { 
      Display display = getWindowManager().getDefaultDisplay(); 
      Point size = new Point(); 
      display.getSize(size); 
      swidth = size.x; 
     } else { 
      Display display = getWindowManager().getDefaultDisplay(); 
      swidth = display.getWidth(); 
     } 

     int new_height = 0; 
     new_height = swidth * bHeight/bWidth; 
     params.width = swidth; 
     params.height = new_height; 
     saveW = swidth; 
     saveH = new_height; 
     fullImageView.setLayoutParams(params); 
    } 
+0

संक्रमण को छोड़ दिया और हटा दिया मेरी समस्या संक्रमण समस्या है, छवि स्केलिंग नहीं। स्क्रीन कोड ऊंचाई फिट करने के लिए आपका कोड बस स्केल छवि। – R4j

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