關於dip、dpi和解析度的一些事,dipdpi解析度

來源:互聯網
上載者:User

關於dip、dpi和解析度的一些事,dipdpi解析度

    解析度,這個在android平台上異常麻煩的問題,讓很多新手要崩潰了。今天,我想和解析度這個傢伙談談。

    首先,什麼是解析度呢?我們通常說的480*800、1280*720等等,就是所謂的手機螢幕的解析度。解析度代表的是整個螢幕上,一共有多少個像素點,也就是在ps或者是其他的影像編輯軟體中的px的概念。美工在幫我們做高清原型圖的時候,一般會按照多少解析度來做。這裡提醒一下剛入職的新手,android版本的高清原型圖最好選擇1280*720像素,這樣美工在後期的切圖的時候會比較容易。目前的項目因為解析度選擇的是480*800,所以在後期做高解析度適配的時候,有很多的小表徵圖需要重做,否則顯示效果很模糊,這無形之中加大了UI設計師的工作量,算是一個教訓吧!

    但是呢,我們開發人員在用xml寫介面的時候,可不會直接用px做為單位,這是因為在不同的解析度下面,相同顯示效果的介面上,控制項的實際像素並不是一樣的,因此,我們在設定控制項大小的時候,一般用的是dip(dp)作為長度單位,那麼,dip到底是一種什麼單位呢?

    dip是Density independent pixel的縮寫,也就是獨立的像素密度的意思,dip是基於螢幕密度的抽象單位,與裝置無關,用於說明與密度無關的尺寸和位置。它是相對於一個160dpi的螢幕來說的,因此1dip對應160dpi螢幕上的1px。

    這裡一定要注意,dip和dpi是截然不同的兩個概念,不要弄混。

    dip指的是一種獨立像素的表示方式,它的計算是在dpi的基礎之上的,也就是說,我們只有在知道dpi是多少之後,才能夠根據不同的dpi,來精確計算我們需要的dip。

    dpi是一種密度單位,是dot per inch的縮寫,也就是每英寸多少個像素點的意思。比如說,我們有一個480*800解析度的手機,螢幕的物理尺寸是3英寸*5英寸,那麼我們就可以計算出這個手機的是480/3=160dpi,是屬於低解析度的,那麼在這種解析度下面,一個dip就相當於1個px,怎麼計算呢?當然就是1dip*(160/160)=1px。也就是說,當我們在這種解析度的手機下,控制項的寬度和長度就和設計圖一樣大小就可以,一個dip對應一個px。但是,如果還是相同的解析度,換成了2英寸*3.3英寸呢?那麼我們就可以先算出手機的密度是480/2=240dpi,是屬於高解析度的,那麼在這種解析度下面,一個dip就相當於1.5像素,怎麼計算呢?當然還是1dip*(240/160)=1.5px。

    因此,明白了dip和dpi的關係,我們就可以精確的設定控制項的大小。

    具體而言,當螢幕的的解析度為320x480時,無論實際的物理尺寸大小,密度都會被設定為160dpi,也就意味著這個裝置上,一行最多可以放置320dp,而對於480x800的裝置,只需螢幕尺寸在3寸到4.3寸之間,密度都會被設定為240dpi,一行同樣可以放置320dp。因此在開發中,用dp作為單位,只需要設定一次,就可以適配到多個螢幕上。

    現在我們清楚了這兩個名詞之間的關係,那麼,我們在程式中,如何對兩者進行轉換呢?

    下面的代碼,可以協助我們實現dp到px的轉換

<span style="font-size:18px;">/** * 根據手機的解析度從 dp 的單位 轉成為 px(像素) */public static int dip2px(Context context, float dpValue) {//擷取當前螢幕密度dpi與基礎密度160dpi的倍數關係,+0.5f是為了保證轉化成int類型時的資料正確float scale = context.getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}</span>
    

    我們也可以實現px到dp的轉換

<span style="font-size:18px;">/** * 根據手機的解析度從 px(像素) 的單位 轉成為 dp */public static int px2dip(Context context, float pxValue) {//擷取當前螢幕密度dpi與基礎密度160dpi的倍數關係,+0.5f是為了保證轉化成int類型時的資料正確float scale = context.getResources().getDisplayMetrics().density;return (int) (pxValue / scale + 0.5f);}</span>




問 DPI 與 DIP 的不同與概念

兩者之間沒有聯絡。
DIP是錯誤詞彙,也是其他專業單詞的縮寫,但與電腦領域無關

DPI 通常指的是解析度,英文全稱為:Dots Per Inch 就是點每英寸

在滑鼠裡面就是重新整理率。
在印表機、掃描器裡面就是,一英寸裡面可以識別多少點。
 
怎改變圖片的DIP解析度?

圖象選項圖象大小裡
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.