2016-03-30 26 views
2

Picasso'yu kullanarak bir görüntüyü indiren ve bunu ImageView'da görüntüleyen bir parçam var. Sorun, resmin dikey modda olması ve telefonun yatay moda geçmesi durumunda aynı görüntü esnetilir. Çözüm aradım ama genel anlamda sahip olduğum şey sadece 90 derece döndürmek. Ama istediğim bu değil. İki farklı görüntü yüklemek istiyorum, yani bir resim URL'si portre modu için, diğeri manzara modu için olacak. Oryantasyon değişikliğini tespit ettim ve görüntüleri buna göre yükledim. Bu işe yaramadı. Yatay modda da, portre görüntüleri yükleniyordu. Baska öneri?Picasso, dikey ve yatay modda farklı görüntüler yükler

public class FragmentOne extends Fragment{ 

    Button next, previous; 
    ProportionalImageView imageView; 


    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragmentone, container, false); 

    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     next = (Button)view.findViewById(R.id.next); 
     previous = (Button)view.findViewById(R.id.previous); 
     imageView = (ProportionalImageView)view.findViewById(R.id.image); 

     Picasso.with(getActivity()) 
       .load("http://i.imgur.com/h5iwVmh.jpg") 
       .placeholder(R.drawable.placeholder) 
       .into(imageView); 



     next.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ((ViewPager) ((MainActivity)getActivity()).findViewById(R.id.pager)).setCurrentItem(1); 
      } 
     }); 

     previous.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ((ViewPager) ((MainActivity)getActivity()).findViewById(R.id.pager)).setCurrentItem(-1); 
      } 
     }); 

    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 

     // Checks the orientation of the screen 
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      Picasso.with(getActivity()) 
        .load("http://i.imgur.com/H0IXUy0.jpg") 
        .placeholder(R.drawable.placeholder) 
        .into(imageView); 

     } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
      Picasso.with(getActivity()) 
        .load("http://i.imgur.com/h5iwVmh.jpg") 
        .placeholder(R.drawable.placeholder) 
        .into(imageView); 


     } 
    } 








} 
+0

Kontrol ettiniz? ve kod akışı doğru çalışıyor –

+0

Portre iyi çalışıyor. Modu yatay olarak değiştirmeye çalıştığımda, hala dikey görüntü URL'sini yükler. –

+0

Uygulamanın doğru orritasyonunu algıladığını kontrol etmek için '' else' içinde 'onConfigurationChanged' içinde bazı logcat yazabilirsiniz –

cevap

1

bu kodu kullanabilirsiniz nedenle bu yardım onViewCreated içinde yerine onConfigurationChanged

@Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    ... 
    int currentOrientation = getResources().getConfiguration().orientation; 
    if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) { 
     // load you landscape image 
    } 
    else { 
     // load your portrait image 
    } 
    ... 
} 

Hope imajını değiştirmek gerektiğini portre görüntüsünü

nedeni neden

ve görüntüyü döndürme durumuna göre yükleyin. exm: - if (rotasyon == durumunuz) {}

ayrıca kodunun altına yapmak için kullanabilirsiniz: senin bile kovuluyor onConfigurationChanged eğer

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // refresh the instructions image 
    ImageView instructions = (ImageView) findViewById(R.id.img_instructions); 

    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     //load image in picasso here 
    } else { 
     //load image in picasso here 
    } 
} 
+0

Hala çalışmıyor @Bhunnu –

+0

Ekranda yatay olarak ne var ve dikey olarak dikey –

+0

Dikey modda, doğru görüntü yükleri ancak yatay modda aynı görüntü görüntülenir. Olması gereken URL'yi yüklemiyor. @Bhunnu –

0

sorun onViewCreated tekrar denir cihazı döndürün (ama denilen onConfigurationChanged sonra adlandırılır) Kodunuzda

zaman, görüntü manzara onConfigurationChanged değiştirildi, ancak görüntü değişikliği bundan sonra var olan onViewCreated çağrıldığında Bu, her zaman yönünü almak için

+0

Denedim ama yine de aynı görüntüyü yatay modda yükleniyor. –

İlgili konular