diff --git a/assets/android-dpichanged-swiftkey-broken.png b/assets/android-dpichanged-swiftkey-broken.png new file mode 100644 index 0000000..e9d986a Binary files /dev/null and b/assets/android-dpichanged-swiftkey-broken.png differ diff --git a/assets/android-dpichanged.png b/assets/android-dpichanged.png new file mode 100644 index 0000000..96bd5fc Binary files /dev/null and b/assets/android-dpichanged.png differ diff --git a/assets/android-originaldpi.png b/assets/android-originaldpi.png new file mode 100644 index 0000000..e643e5e Binary files /dev/null and b/assets/android-originaldpi.png differ diff --git a/know-how/hacking/android/_posts/2015-12-02-display-density.md b/know-how/hacking/android/_posts/2015-12-02-display-density.md new file mode 100644 index 0000000..36f0aa1 --- /dev/null +++ b/know-how/hacking/android/_posts/2015-12-02-display-density.md @@ -0,0 +1,117 @@ +--- +title: Display density on Android +language: en +layout: default +created: 2015-12-02 17:19:42 +0200 +updated: 2015-12-02 17:19:42 +0200 +toc: false +tags: + - know-how + - hacking + - android + - display + - resolution + - lcd +--- +Methods +======= + +Android supports changing the display resolution in 2 different ways. + +wm density +---------- + +This method works without root and changes the density of the *window manager*. +You can call this command only from the adb shell. + +The syntax is: + + wm density [ppi] + +E.g. the Nexus 9 has a real display density of 288ppi, so you would run: + + wm density 288 + +To reset the value to the factory setting (for the N9 that is 320), just run: + + wm density reset + + +build.prop +---------- + +The other way to change the display density is to edit the `build.prop`. This +only works with root access. + +To edit the file, first make the `system` partition writable by remounting it. + +Then find the file `/system/build.prop` and open it in a text editor. I use +my favourite file manager [FX File Explorer](https://play.google.com/store/apps/details?id=nextapp.fx) +with its integrated editor for that. + +Find the following line (Example from Nexus 9 with currently 320ppi): + + ro.sf.lcd_density=320 + +And change the number to your desired value. BE SURE TO NOT CHANGE ANYTHING ELSE. +Save the file and reboot your device. + + +Advantages +========== + +Setting the correct density value makes the display appear sharper and it may +even make your device run better. + +Android knows different *densities* and if an app supplies graphics in different +qualities, it loads them according to the detected density. This means: The +higher the density, the larger graphics Android has to load and keep in +memory. So reducing the density (to the real value) can make Android load +a bit less detailed graphics and thus save RAM. + +Android knows these quality classes: + +| Class | PPI | +|------:|:-------:| +| ldpi | 100-140 | +| mdpi | 141-199 | +| hdpi | 200-319 | +| xhdpi | 320-340 | +| xxhdpi| ~480 | +|xxxhdpi| ~640 | + +As you can see, the 320ppi of the Nexus 9 makes Android use *xhdpi* resources. +If you change the density to 318, you won't notice anything, but Android will +suddenly use the *hdpi* resources and save memory when running apps. + + +Problems +======== + +If you don't have root access and try to change the density using the `wm density` +command only, it might seem to work on the first glance, but you will notice +strange effects. + +If you're using SwiftKey, you'll notice it right away: + +![]({{ site.url }}/assets/android-dpichanged-swiftkey-broken.png) + + +Other problems are more subtle (Nexus 9 at 288ppi): + +![]({{ site.url }}/assets/android-dpichanged.png) + +Compare this to the same screen at the original 320ppi: + +![]({{ site.url }}/assets/android-originaldpi.png) + +(If you're still searching: Notice the huge "chevron" icon after the +developer's name. And also the **huge** background image.) + +

+These problems only occur if you use only one method to change the density. If +you use **both** methods and set them to the same value, everything will look +just fine. +

+ +More info at the [xda forum](http://forum.xda-developers.com/nexus-9/general/guide-little-trick-improvimg-nexus-9-t3224931).