Back when I started the process of upgrading my phone, I immediately went for the Paranoid Android ROM because of its per-app DPI settings. I had to abandon the ROM however, as it wasn’t really all that impressive in any other way, rather the opposite in fact.  Thanks to the same commenter who suggested the ROM I switched to, Geni, I tried out something that promises the same per-app DPI settings on Android 4.0+, and it works great.

Xposed is a tweaking framework that can run on practically any Android 4.0+ ROM with root, as long as the device has an ARM processor. It allows modules to be installed that use the framework for various tweaks, one of which is the per-app DPI module. Installation is fairly simple and basically involves installing a few .apks, rebooting a couple of times, and that’s it (full instructions in the original source). Assuming it works on your ROM/device (a backup is recommended before installing just in case), you will then be able to use the per-app DPI app to set settings for individual apps.

What this does is essentially trick the app into thinking hat your device has a different screen than it really does. Since that is what decides how an app looks to the end user, this means that you will be able to scale your apps on a per-app basis, as well as activate different modes (phone or tablet UI).

I always hate how large everything is on most phones, as I prefer to cram a lot more information onto the screen than what you get with the stock version of any OS. I still prefer the phone UI to the tablet UI for a lot of apps though  meaning that I for instance don’t wan an always-visible sidebar in Gmail, I just want everything to be smaller.

A such, most of what I’ve done with this tweak simply involves lowering the DPI for each app, which in turn makes everything smaller. The logic there is that with a resolution of X and a DPI of Y, a lower DPI signifies a larger screen (as actual screen size is not a measurement available to apps), which in turn makes the app display al text and other elements smaller to meet a certain physical size on the screen it thinks it’s being displayed on.

The stock DPI of my Galaxy S II is 240, and in most cases I lowered it to 180, which gives the result you see in the image on top. The most extreme change I did was to YouTube, where I set the DPI to 120, set the resolution the app thinks the device is to 1280×800 (which enables tablet mode as it would display on a tablet with that resolution), set it to display full screen, and locked it to landscape mode. You can see the change this caused in the video below.

Years ago I had a Nokia N800 internet tablet, and despite its screen and resolution being almost identical to that of the S II, it always felt like it had a bigger screen, because it utilized the space better  By changing the DPI of individual apps, I’m starting to feel like my S II is getting closer to where the N800 was. Up until now, I’ve only had the UI size I want on apps a I’ve created in Tasker, and it’s great to be able to force stock apps to display the way I want.

I realize that device and OS creators need to cater to the common user with interface sizes, but I think that this feature really needs to make it into stock Android, as it would frankly revolutionize the stock experience. Until then, this tweak is gold for anyone with a compatible ROM/device.

[Xposed framework | per-app DPI module]