content: package com.cy.rvplaylist;
  
  import android.content.Context;
  import android.content.res.Resources;
  import android.graphics.RectF;
  import android.util.DisplayMetrics;
  import android.view.MotionEvent;
  import android.view.View;
  import android.view.WindowManager;
  
  /**
   * Created by Administrator on 2018/11/20 0020.
   */
  
  public class ScreenUtils {
  
      public static int getStatusBarHeight(Context context) {
          Resources resources = context.getResources();
          int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");
          return resources.getDimensionPixelSize(resourceId);
      }
  
      public static int getNavigationBarHeight(Context context) {
          Resources resources = context.getResources();
          int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
          return resources.getDimensionPixelSize(resourceId);
      }
  
      public static int getScreenWidth(Context context) {
          DisplayMetrics displayMetrics = new DisplayMetrics();
          WindowManager wm = (WindowManager) context
                  .getSystemService(Context.WINDOW_SERVICE);
  
          wm.getDefaultDisplay().getMetrics(displayMetrics);
          return displayMetrics.widthPixels;
      }
      public static int getScreenHeight(Context context) {
          DisplayMetrics displayMetrics = new DisplayMetrics();
          WindowManager wm = (WindowManager) context
                  .getSystemService(Context.WINDOW_SERVICE);
  
          wm.getDefaultDisplay().getMetrics(displayMetrics);
          return displayMetrics.heightPixels;
      }
      /**
       * 将px值转换为dip或dp值，保证尺寸大小不变
       *
       * @param pxValue
       * @param scale
       *            （DisplayMetrics类中属性density）
       * @return
       */
      public static int px2dip( Context context,float pxValue) {
          final float scale = context.getResources().getDisplayMetrics().density;
          return (int) (pxValue / scale + 0.5f);
      }
  
      /**
       * 将dip或dp值转换为px值，保证尺寸大小不变
       *
       * @param dipValue
       * @param scale
       *            （DisplayMetrics类中属性density）
       * @return
       */
      public static int dip2px(Context context,float dipValue) {
          final float scale = context.getResources().getDisplayMetrics().density;
          return (int) (dipValue * scale + 0.5f);
      }
      public static int dip2px(Context context,int dimen_resID) {
          final float scale = context.getResources().getDisplayMetrics().density;
          return (int) (context.getResources().getDimension(dimen_resID) * scale + 0.5f);
      }
  
      /**
       * 将px值转换为sp值，保证文字大小不变
       *
       * @param pxValue
       * @param fontScale
       *            （DisplayMetrics类中属性scaledDensity）
       * @return
       */
      public static int px2sp(Context context,float pxValue) {
          final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
          return (int) (pxValue / fontScale + 0.5f);
      }
  
      /**
       * 将sp值转换为px值，保证文字大小不变
       *
       * @param spValue
       * @param fontScale
       *            （DisplayMetrics类中属性scaledDensity）
       * @return
       */
      public static int sp2px(Context context,float spValue) {
          final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
          return (int) (spValue * fontScale + 0.5f);
      }
  
      /**
       * 计算指定的 View 在屏幕中的坐标。
       */
      public static int[] getViewScreenLocation(View view) {
          int[] location = new int[2];
          // 获取控件在屏幕中的位置，返回的数组分别为控件左顶点的 x、y 的值
          view.getLocationOnScreen(location);
          return location;
      }
      /**
       * 计算指定的 View 在屏幕中的范围。
       */
      public static RectF getViewScreenRectF(View view) {
          int[] location = new int[2];
          // 获取控件在屏幕中的位置，返回的数组分别为控件左顶点的 x、y 的值
          view.getLocationOnScreen(location);
          return new RectF(location[0], location[1], location[0] + view.getWidth(),
                  location[1] + view.getHeight());
      }
  
      /**
       * 判断触摸点是否在控件内
       */
      public static boolean isInViewRange(View view, MotionEvent event) {
  
          // MotionEvent event;
          // event.getX(); 获取相对于控件自身左上角的 x 坐标值
          // event.getY(); 获取相对于控件自身左上角的 y 坐标值
          float x = event.getRawX(); // 获取相对于屏幕左上角的 x 坐标值
          float y = event.getRawY(); // 获取相对于屏幕左上角的 y 坐标值
  
          // View view;
          RectF rect =getViewScreenRectF(view);
          return rect.contains(x, y);
      }
  }
  
  