Android 화면 해상도 도구 클래스 사용 설명

Android 개발 에 서 는 dip,px 를 서로 환산 하고 핸드폰 화면의 너비,높이,상태 표시 줄 높이 등 을 가 져 오 는 데 자주 사용 되 는데 다음 과 같이 화면 을 바탕 으로 정리 하 는 유형 입 니 다.

package com.per.loadingwebviewdome;

import android.content.Context;
import android.util.DisplayMetrics;

import java.lang.reflect.Field;

/**
 * @author: xiaolijuan
 * @description:         
 * @date: 2016-06-05
 * @time: 22:55
 */
public class ScreenUtil {
 /**
 *         dp  px  
 */
 public static int dip2px(Context mContext, float dpValue) {
 final float scale = mContext.getResources()
  .getDisplayMetrics().density;
 return (int) (dpValue * scale + 0.5f);
 }

 /**
 *           px(  )         dp
 */
 public static int px2dip(Context mContext, float pxValue) {
 final float scale = mContext.getResources()
  .getDisplayMetrics().density;
 return (int) (pxValue / scale + 0.5f);
 }

 /**
 *     
 *
 * @param mContext    
 * @return
 */
 private static int[] getScreenSize(Context mContext) {
 DisplayMetrics dm = mContext
  .getResources().getDisplayMetrics();
 int screenWidth = dm.widthPixels;
 int screenHeight = dm.heightPixels;

 return new int[]{screenWidth, screenHeight};
 }

 /**
 *        
 *
 * @param mContext    
 * @return
 */
 public static int getStatusBarHeight(Context mContext) {
 Class<?> c = null;
 Object obj = null;
 Field field = null;
 int x = 0, statusBarHeight = 0;
 try {
  c = Class.forName("com.android.internal.R$dimen");
  obj = c.newInstance();
  field = c.getField("status_bar_height");
  x = Integer.parseInt(field.get(obj).toString());
  statusBarHeight = mContext.getResources().getDimensionPixelSize(x);
 } catch (Exception e1) {
  e1.printStackTrace();
 }
 return statusBarHeight;
 }

 /**
 *          
 *
 * @param mContext    
 * @return
 */
 public static int getScreenWidth(Context mContext) {
 int screen[] = getScreenSize(mContext);
 return screen[0];
 }

 /**
 *          
 *
 * @param mContext    
 * @return
 */
 public static int getScreenHeight(Context mContext) {
 int screen[] = getScreenSize(mContext);
 return screen[1];
 }
}
dip,dp,px 와 sp 에 대해 이전에 잘 이해 하지 못 했 던 것 은 dip 와 px 간 의 차이 입 니 다.우 리 는 구 글 의 추천 을 알 고 있 습 니 다.픽 셀 은 dip 를 통일 적 으로 사용 하고 글꼴 은 sp 를 통일 적 으로 사용 합 니 다.다음은 구체 적 으로 설명 하 겠 습 니 다.
1.dip:device independent pixels(장치 독립 픽 셀):장치 마다 디 스 플레이 효과 가 다 릅 니 다.dip 는 화면 밀도 와 관련 이 있 고 화면 밀 도 는 장치 하드웨어 와 관련 이 있 습 니 다.일반적으로 저 희 는 WVGA,HVGA,QVGA 를 지원 하기 위해 이 걸 추천 합 니 다.픽 셀 에 의존 하지 않 습 니 다.dip 의 환산:dip(value)=(int)(px(value)/1.5+0.5)
2.dp:dip 와 똑 같 습 니 다.이름 만 다 를 뿐 입 니 다.
3.px:pixels(픽 셀),절대 픽 셀,서로 다른 장치 의 디 스 플레이 디 스 플레이 효 과 는 같 습 니 다.이것 은 얼마 면 영원히 변 하지 않 습 니 다.
4.sp:scaled pixels(픽 셀 확대).주로 글꼴 표시 에 사 용 됩 니 다.
위 에 있 는 화면 도구 종 류 를 참조 하 십시오.

Log.e("       ", String.valueOf(ScreenUtil.getStatusBarHeight(mContext)));
 Log.e("         ", String.valueOf(ScreenUtil.getScreenWidth(mContext)));
 Log.e("         ", String.valueOf(ScreenUtil.getScreenHeight(mContext)));

다음은 인쇄 된 로그 입 니 다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기