Search code examples
androidandroid-activitydimensionsandroid-screen-support

android different dimens not working


I have four dimens.xml files in my values folder and I have different values for different dimens.xml files. for example, in dimens.xml(hdpi) u_video_width is 306dp and dimens.xml(xhdpi)u_video_width is 404dp.but this values not working, because when i run my app in Nexus S (480X800) hdpi model genymotion

This is what my View looks like:

[![This is what my View looks like][1]][1]

As I said in hdpi dimens folder, I have 302dp but I have different width when I run my app (in XML activity file) this is a my XML code

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#D53362">



<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true">
    <VideoView
        android:layout_width="@dimen/u_video_width"
        android:layout_height="@dimen/u_video_height"
        android:id="@+id/video_view"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

This is a my dimens xml files

This is a my dimens xml files

Nexus S has 480X800 resolution and i want to my VideoView to have 302dp in hdpi resolution and another resolution--another dpi how I can solve my problem?


Solution

  • To make same dimension appear the same on higher dpi devices android multiply these dimension with a constant ie

    for mdpi it is 1x

    hdpi 1.5x

    xhdpi 2x

    xxhdpi 3x

    So in your case it is 306 * 1.5 = 459px

    reset of the space (14dp ~35 px) is available on both sides of VideoView

    Please refer android developer page

    At least this is what I understood. Hope it helps you.