2012-08-09 55 views
0

劑量任何人都知道如何更改Java中的android應用程序的densityDpi?Android在java中更改densityDPI

我正在處理一個android應用程序,我在視點標記中操作目標密度。這在應用程序的某個地方導致了一個小問題,目標密度似乎被軟鍵盤重置。

所以我需要一種方法來重置它,或者防止鍵盤改變密度。

+0

更改密度?這聽起來很奇怪,可能是一個壞主意。什麼是用例? – dmon 2012-08-09 00:19:39

+0

非常規的肯定。在這一點上進行實驗,看看這種方法是否可行。我們有一個超大尺寸的phonegap應用程序,它使用視圖端口目標密度來縮小比例。當軟鍵盤變焦時,它會改變密度以達到縮放效果,尋找重置密度或防止發生密度變化的方法。這似乎是這種方法唯一的缺陷,但有一些重大難點。 – 2012-08-09 01:11:34

+0

對應用程序onconfigchange中的更改做出反應? – 2016-04-22 22:50:39

回答

0

對於像聯想A1(240dpi密度的平板電腦)或銀河筆記這樣的設備,您可能需要在您的應用中執行此操作,以避免在各種設備上看起來像是各種尺寸。

從的onCreate以下函數添加到您的擴展應用類並調用它:

public void changeDensity(float desiredDensity) { 
    //desiredDensity : ldpi = 0.75 (120dpi) , mdpi = 1 (160dpi), hdpi = 1.5 (240dpi), xhdpi = 2.0 (320dpi) 
    DisplayMetrics metrics = getResources().getDisplayMetrics(); 

    metrics.density = desiredDensity; 
    metrics.xdpi = desiredDensity * 160; 
    metrics.ydpi = desiredDensity * 160; 
    metrics.densityDpi = (int) (desiredDensity * 160); 

    getResources().updateConfiguration(null, null); 
}