2015-08-19 64 views
0

我在here上問了這個問題我試圖用Glide加載寬屏和長圖像到GridView,並且想要像Picasso一樣加載這些不同大小的圖像,同時保持寬高比爲儘可能多。我得到的答案是它與GridView s長期存在的問題,並嘗試傑克沃頓的寬高比圖像視圖,我試過沒有任何成功。另一個建議是交錯排列RecyclerView,很好的答案,但很多變化製作網格填充滑動結構更加規整

所有這一切的原因是我的圖片太大畢加索加載速度很快,用戶抱怨說,它真的很慢,但滑翔(看起來更快)將圖像加載到縱橫比並調整網格的均勻性,您可以在鏈接中看到:長圖像佔用2張寬圖像的相同空間。總之,大量的試驗和錯誤我現在用的滑翔像這樣經過:

int width = getActivity().getWindowManager().getDefaultDisplay().getWidth(); 
int myWidth = width/2; 

Glide.with(getActivity()) 
    .load(mThumbIds[position]) 
    .placeholder(R.drawable.placeholder) 
    .override(myWidth, myWidth) 
    .centerCrop() 
    .into(imageView) 
; 

我是新來的Android,但這似乎很好地工作。我的問題現在不是getWidth被棄用,(該應用程序是API 16+)是否有什麼問題(獲取屏幕寬度並將其傳遞給Glide的調整大小調用)?我認爲必須等待衡量觀點,但仍然比畢加索更快。任何人都可以提供更好的?

+0

滑翔不會等待在這種情況下的佈局,因爲你用'.override()'這將是導致位圖的大小。 – TWiStErRob

+1

我認爲你應該與這些建議,交錯'RecyclerView'和'AspectImageView'(或更通用的佈局,如[this](https://gist.github.com/TWiStErRob/f8190f1f55ec1e7777fc))將有助於在漫長的跑。查詢顯示尺寸非常容易出錯(不考慮邊距,填充,間距等);讓Android佈局系統完成它的工作;) – TWiStErRob

+0

您需要使用'display.getSize(size);' –

回答

0

對於比蜂窩小的api,您可以使用您的方法,但對於api高於那麼您需要使用getSize()方法。我用下面的代碼爲這個

if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB_MR2) { 
     Display display = getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 
     int width = size.x; 
     int height = size.y; 
    } else { 
     Display display = getWindowManager().getDefaultDisplay(); 
     int width = display.getWidth(); 
     int height = display.getHeight(); 
    }