Android在java中改变密度DPI

Android在java中改变密度DPI,android,keyboard,viewport,dpi,Android,Keyboard,Viewport,Dpi,有人知道如何在java中更改android应用程序的densityDpi吗 我正在开发一个android应用程序,在该应用程序中,我在视点标记中操纵目标密度。这在应用程序的某些地方造成了一个小问题,目标密度似乎被软键盘重置 因此,我需要一种方法来重置此设置,或防止键盘改变密度。对于联想A1(密度为240dpi的平板电脑)或galaxy note等设备,您可能需要在应用程序中执行此操作,以避免在不同的设备上出现大小不一的情况 将以下函数添加到扩展应用程序类中,并从onCreate调用它: publ

有人知道如何在java中更改android应用程序的densityDpi吗

我正在开发一个android应用程序,在该应用程序中,我在视点标记中操纵目标密度。这在应用程序的某些地方造成了一个小问题,目标密度似乎被软键盘重置


因此,我需要一种方法来重置此设置,或防止键盘改变密度。

对于联想A1(密度为240dpi的平板电脑)或galaxy note等设备,您可能需要在应用程序中执行此操作,以避免在不同的设备上出现大小不一的情况

将以下函数添加到扩展应用程序类中,并从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);
}

改变密度?这听起来很奇怪,可能是个坏主意。用例是什么?肯定是非传统的。目前正在进行一项实验,以确定这种方法是否有效。我们有一个phonegap应用程序,它的大小过大,正在使用查看端口目标密度来缩小。当软键盘缩放时,似乎会更改密度以实现缩放效果,正在寻找重置密度或防止发生此密度更改的方法。这似乎是这种方法的唯一缺陷,但在解决它时遇到了一些重大困难。对应用程序onconfigchange中的更改有何反应?