basics of device-independent-pixels

im throughoutly confused by dips on Android.

I understand from the reference that the base for dp values is 160.
So, shouldn’t 80dp in width equals a view with a width of 50% of the screen ?
On my Nexus One the width in dp is something around 300dp as it seems.

  • How to make a button that shows the backspace (⌫) character on Android?
  • Best Android equivalent for iOS Tab Bar Controller
  • Error:(3, 17) java: package org.junit does not exist- intellij
  • Nexus7 emulator crashing after creating it
  • Incorrect Coordinates From getLocationOnScreen/getLocationInWindow
  • How to find height of status bar in Android through React Native?
  • What am i missing here ?

    thx in advance

    Related posts:

    Will Google Android ever support .NET?
    Apache Cordova splash screens not showing in Android
    how to convert an image into base64 string
    Android TextView setTextSize incorrectly increases text size
    Android: How to share image with text on facebook via intent?
    Advantage of using single TableLayout instead of multiple LinearLayouts as TableRow extends LinearLa...
  • android imageView: setting drag and pinch zoom parameters
  • Flash is not loading in Web view in Android
  • Delete SQLite Row with where clause with multiple clauses
  • android: device not supported by app- why?
  • Make a certain part of a android-textview align to the right
  • How can get top of records by GreenDAO?
  • 4 Solutions collect form web for “basics of device-independent-pixels”

    “dp” == “Density-independent Pixels” (This is also why it was earlier called “dip”, though I prefer to use “dp” these days.)

    Think of it like other units — “in” (inches), “mm” (millimeters), etc. It allows you to provide a size that is scaled based on the density of the screen.

    We define mdpi to be the base density, so “10dp” on an mdpi screen will result in exactly 10 pixels. On an hdpi screen it will result in 15 pixels, because hdpi is 1.5*mdpi.

    Note that though the constants for various densities are similar to DPI (mdpi is 160, etc), density is not exactly DPI. It is an abstract scaling factor that adjusts for screen dpi, but does not try to exactly reflect it. (You would use “in”, “mm”, etc for exact sizes but 99.9% that is not what you want so stick with “dp”.) This greatly simplifies life for everyone because you don’t need to deal with many Android devices having a slightly different amount of space for its UI because they each of slight different screen DPIs. Also, device manufacturers can select the density of their device to achieve a desired UI — for example the Samsung Tab uses a density that is a fair amount larger than the actual DPI, resulting in an overall larger UI.

    160 dots per inch. So 80dp would be 1/2 an inch, roughly.

    I don’t understand your question completely but I suggest you take a look at this, if you haven’t already.

    http://developer.android.com/guide/practices/screens_support.html

    pixels = dps * (density / 160)

    Density independent pixels (short: dp) are a virtual pixel unit that will be determined at the runtime of your application.

    Formala:
    1 dp = 1 Pixel on 160 dpi screen.
    So 160 dpi is the baseline density for the system.

    The conversion of dp units to screen pixels are quite simple.
    Actual device pixels (px) = dp (1) * (dpi (of the device) / 160(baseline) )
    For the sake of simplicity: px = dp * (dpi / 160)

    Example:
    If a 240 dpi device starts your app, then 1 dp equals to 1,5 actual device pixels.

    Conclusion:
    Dp automatically handles any scaling to bigger or smaller devices. The times where you hardcode the pixels are over. DP ensures the proper scaling on different screen densities.

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.