Android View Set showCheatSheet(final View view)

Here you can find the source of showCheatSheet(final View view)

Description

Display a Toast letting the user know what an item does when long pressed.

License

Apache License

Parameter

Parameter Description
view The View to copy the content description from.

Declaration

public static void showCheatSheet(final View view) 

Method Source Code

//package com.java2s;
/*/*from  w ww. jav  a  2 s . c  om*/
 * Copyright (C) 2012 Andrew Neal 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.
 */

import android.content.Context;

import android.graphics.Rect;

import android.view.Gravity;
import android.view.View;

import android.widget.Toast;

public class Main {
    /**
     * Display a {@link Toast} letting the user know what an item does when long
     * pressed.
     * 
     * @param view The {@link View} to copy the content description from.
     */
    public static void showCheatSheet(final View view) {

        final int[] screenPos = new int[2]; // origin is device display
        final Rect displayFrame = new Rect(); // includes decorations (e.g.
                                              // status bar)
        view.getLocationOnScreen(screenPos);
        view.getWindowVisibleDisplayFrame(displayFrame);

        final Context context = view.getContext();
        final int viewWidth = view.getWidth();
        final int viewHeight = view.getHeight();
        final int viewCenterX = screenPos[0] + viewWidth / 2;
        final int screenWidth = context.getResources().getDisplayMetrics().widthPixels;
        final int estimatedToastHeight = (int) (48 * context.getResources()
                .getDisplayMetrics().density);

        final Toast cheatSheet = Toast.makeText(context,
                view.getContentDescription(), Toast.LENGTH_SHORT);
        final boolean showBelow = screenPos[1] < estimatedToastHeight;
        if (showBelow) {
            // Show below
            // Offsets are after decorations (e.g. status bar) are factored in
            cheatSheet.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL,
                    viewCenterX - screenWidth / 2, screenPos[1]
                            - displayFrame.top + viewHeight);
        } else {
            // Show above
            // Offsets are after decorations (e.g. status bar) are factored in
            cheatSheet.setGravity(Gravity.BOTTOM
                    | Gravity.CENTER_HORIZONTAL, viewCenterX - screenWidth
                    / 2, displayFrame.bottom - screenPos[1]);
        }
        cheatSheet.show();
    }
}

Related

  1. initializeDrawListener(View view)
  2. layoutViewAtPos(View view, int offsetX, int offsetY)
  3. makeMultiline(View view)
  4. measureExactly(View view, int width, int height)
  5. positionAndResizeView(View v, Rect rect)
  6. transparent(View view, boolean transparent)
  7. viewBaseSetting(View target)