android屏幕參數獲取

package com.app.tools.util;


import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;


/**
 * 獲得屏幕相關的輔助類
 * 
 * @author zhy
 * 
 */
public class ScreenUtils {
private ScreenUtils() {
/* cannot be instantiated */
throw new UnsupportedOperationException("cannot be instantiated");
}


/**
* 獲得屏幕高度

* @param context
* @return
*/
public static int getScreenWidth(Context context) {
DisplayMetrics outMetrics = getMetrics(context);
return outMetrics.widthPixels;
}


/**
* 獲得屏幕寬度

* @param context
* @return
*/
public static int getScreenHeight(Context context) {
DisplayMetrics outMetrics = getMetrics(context);
return outMetrics.heightPixels;
}


/**

* @TODO TODO 獲取屏幕的密度(屏幕密度(像素比例:0.75/1.0/1.5/2.0)  )
* @param context
* @Return float
*/
public static float getScreenDensity(Context context) {
DisplayMetrics outMetrics = getMetrics(context);
return outMetrics.density;
}


/**

* @TODO TODO 獲取屏幕的密度(屏幕密度(每寸像素:120/160/240/320))
* @param context
* @return
* @Return int
*/
public static int getScreenDensityDPI(Context context) {
DisplayMetrics outMetrics = getMetrics(context);
return outMetrics.densityDpi;
}


/**

* @TODO TODO  獲取屏幕的
* @param context
* @return
* @Return DisplayMetrics
*/
private static DisplayMetrics getMetrics(Context context) {
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics;
}


/**
* 獲得狀態欄的高度

* @param context
* @return
*/
public static int getStatusHeight(Context context) {


int statusHeight = -1;
try {
Class<?> clazz = Class.forName("com.android.internal.R$dimen");
Object object = clazz.newInstance();
int height = Integer.parseInt(clazz.getField("status_bar_height")
.get(object).toString());
statusHeight = context.getResources().getDimensionPixelSize(height);
} catch (Exception e) {
e.printStackTrace();
}
return statusHeight;
}


/**
* 獲取當前屏幕截圖,包含狀態欄

* @param activity
* @return
*/
public static Bitmap snapShotWithStatusBar(Activity activity) {
View view = activity.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bmp = view.getDrawingCache();
int width = getScreenWidth(activity);
int height = getScreenHeight(activity);
Bitmap bp = null;
bp = Bitmap.createBitmap(bmp, 0, 0, width, height);
view.destroyDrawingCache();
return bp;


}


/**
* 獲取當前屏幕截圖,不包含狀態欄

* @param activity
* @return
*/
public static Bitmap snapShotWithoutStatusBar(Activity activity) {
View view = activity.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bmp = view.getDrawingCache();
Rect frame = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;


int width = getScreenWidth(activity);
int height = getScreenHeight(activity);
Bitmap bp = null;
bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height
- statusBarHeight);
view.destroyDrawingCache();
return bp;


}


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章