org.alfresco.mobile.android.application.fragments.DisplayUtils.java Source code

Java tutorial

Introduction

Here is the source code for org.alfresco.mobile.android.application.fragments.DisplayUtils.java

Source

/*
 *  Copyright (C) 2005-2015 Alfresco Software Limited.
 *
 *  This file is part of Alfresco Mobile for Android.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.alfresco.mobile.android.application.fragments;

import org.alfresco.mobile.android.application.R;
import org.alfresco.mobile.android.application.activity.MainActivity;

import android.content.Context;
import android.content.res.Resources;
import android.support.v4.app.FragmentActivity;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.Display;
import android.view.View;
import android.widget.LinearLayout;

import com.mobidevelop.widget.SplitPaneLayout;

public abstract class DisplayUtils {

    public static int getFragmentPlace(FragmentActivity a) {
        int id = R.id.left_pane_body;
        if (DisplayUtils.hasCentralPane(a)) {
            id = R.id.central_pane_body;
        }
        return id;
    }

    // ///////////////////////////////////////////
    // FLAGS
    // ///////////////////////////////////////////
    public static boolean hasLeftPane(FragmentActivity a) {
        return getLeftPane(a) != null;
    }

    public static boolean hasCentralPane(FragmentActivity a) {
        return getCentralPane(a) != null;
    }

    // ///////////////////////////////////////////
    // RETRIEVE FRAGMENT IDS
    // ///////////////////////////////////////////
    public static int getLeftFragmentId(FragmentActivity a) {
        return R.id.left_pane_body;
    }

    public static int getCentralFragmentId(FragmentActivity a) {
        return R.id.central_pane_body;
    }

    public static int getMainPaneId(FragmentActivity a) {
        if (hasCentralPane(a)) {
            return getCentralFragmentId(a);
        }
        return getLeftFragmentId(a);
    }

    // ///////////////////////////////////////////
    // RETRIEVE PANE
    // ///////////////////////////////////////////
    public static View getLeftPane(FragmentActivity a) {
        return a.findViewById(R.id.left_pane);
    }

    public static View getCentralPane(FragmentActivity a) {
        return a.findViewById(R.id.central_pane);
    }

    public static View getMainPane(FragmentActivity a) {
        if (hasCentralPane(a)) {
            return getCentralPane(a);
        }
        return getLeftPane(a);
    }

    // ///////////////////////////////////////////
    // SHOW / HIDE
    // ///////////////////////////////////////////
    public static void hide(View v) {
        v.setVisibility(View.GONE);
    }

    public static void hide(View v, int id) {
        v.findViewById(id).setVisibility(View.GONE);
    }

    public static void show(View v) {
        v.setVisibility(View.VISIBLE);
    }

    public static void show(View v, int id) {
        v.findViewById(id).setVisibility(View.VISIBLE);
    }

    // ///////////////////////////////////////////
    // SIZE OF THE SCREEN
    // ///////////////////////////////////////////
    public static int getWidth(FragmentActivity context) {
        Display display = context.getWindowManager().getDefaultDisplay();
        DisplayMetrics outMetrics = new DisplayMetrics();
        display.getMetrics(outMetrics);

        float density = context.getResources().getDisplayMetrics().density;
        int width = Math.round(outMetrics.widthPixels / density);

        Resources res = context.getResources();

        int coeff;
        if (width < 320) {
            coeff = res.getInteger(R.integer.width_320);
        } else if (width < 480) {
            coeff = res.getInteger(R.integer.width_480);
        } else if (width < 600) {
            coeff = res.getInteger(R.integer.width_600);
        } else if (width < 720) {
            coeff = res.getInteger(R.integer.width_720);
        } else if (width < 1000) {
            coeff = res.getInteger(R.integer.width_1000);
        } else {
            coeff = res.getInteger(R.integer.width_max);
        }

        return coeff;
    }

    public static int getDPI(DisplayMetrics dm, int sizeInDp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, sizeInDp, dm);
    }

    public static int getPixels(Context context, int sizeInDp) {
        return context.getResources().getDimensionPixelSize(sizeInDp);
    }

    public static LinearLayout.LayoutParams resizeLayout(Context context, int widthInDp, int heightInDp) {
        return new LinearLayout.LayoutParams(getDPI(context.getResources().getDisplayMetrics(), widthInDp),
                getDPI(context.getResources().getDisplayMetrics(), heightInDp));
    }

    // ///////////////////////////////////////////
    // SPLITTER BAR
    // ///////////////////////////////////////////
    /**
     * Returns in dp
     * 
     * @param context
     * @return
     */
    public static int getSplitterWidth(MainActivity context) {
        Display display = context.getWindowManager().getDefaultDisplay();
        DisplayMetrics outMetrics = new DisplayMetrics();
        display.getMetrics(outMetrics);
        float density = context.getResources().getDisplayMetrics().density;

        SplitPaneLayout split = (SplitPaneLayout) context.findViewById(R.id.master_pane);
        return (split != null) ? Math.round(split.getSplitterPosition() / density)
                : Math.round(outMetrics.widthPixels / density);
    }

    public static int getScreenWidth(FragmentActivity context) {
        Display display = context.getWindowManager().getDefaultDisplay();
        DisplayMetrics outMetrics = new DisplayMetrics();
        display.getMetrics(outMetrics);

        float density = context.getResources().getDisplayMetrics().density;

        return Math.round(outMetrics.widthPixels / density);
    }
}