標籤:android blog http java 檔案 width
項目中有個圖片在平板電腦中顯示特別小的原因,一直苦於沒找到原因,也沒有平板電腦測試,今天找了個修改解析度的,編寫相關方法終於處理了,記錄下比較:
好讓以後不造輪子。
主要是擷取文章相關圖片顯示問題,直接用getIntrinsicWidth()方法擷取,getIntrinsicWidth()擷取的並非圖片的實際寬度,在手機看還過得去,不會相差太遠,但在平板電腦看,
它簡直就是一個小女孩,太害羞了,以至於顯示那麼小。
回到正題:
解決方案:
1.擷取手機解析度 用該解析度乘以其密度
if (file.exists()) { // 如果檔案已經存在,直接返回 Drawable drawable = Drawable.createFromPath(savePath); DisplayMetrics dm = new DisplayMetrics(); //擷取手機螢幕解析度 dm = context.getResources().getDisplayMetrics(); //螢幕實際大小 // int screenWidth = dm.widthPixels; // int screenHeight = dm.heightPixels; float density = dm.density; //圖片實際大小 int imgWidth = (int) (drawable.getIntrinsicWidth() *density); int imgHeight = (int)( drawable.getIntrinsicHeight() * density); //drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.setBounds(0, 0, imgWidth,imgHeight); //} return drawable; }
沒有圖片時載入
private void setDrawable(Drawable nDrawable) { drawable = nDrawable; //drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); //setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); DisplayMetrics dm = new DisplayMetrics(); //擷取手機螢幕解析度 dm = context.getResources().getDisplayMetrics(); //螢幕實際大小 // int screenWidth = dm.widthPixels; // int screenHeight = dm.heightPixels; float density = dm.density; //圖片實際大小 int imgWidth = (int) (drawable.getIntrinsicWidth() *density); int imgHeight = (int)( drawable.getIntrinsicHeight() * density); //drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.setBounds(0, 0, imgWidth,imgHeight); setBounds(0, 0, imgWidth, imgHeight); //注意加上,不加會出現圖片和文字混淆在一起 }
原文地址:http://hongshengpeng.com/article/show/254.aspx