Android屏幕相關輔助類 ScreenUtils
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;/**
- 獲得屏幕相關的輔助類
*/
public class ScreenUtils
{
private ScreenUtils()
{/* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated");
}
/**
- 獲得屏幕高度
- @param context
- @return
*/
public static int getScreenWidth(Context context)
{
WindowManager wm = (WindowManager) context
DisplayMetrics outMetrics = new DisplayMetrics();.getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.widthPixels;
}
/**
- 獲得屏幕寬度
- @param context
- @return
*/
public static int getScreenHeight(Context context)
{
WindowManager wm = (WindowManager) context
DisplayMetrics outMetrics = new DisplayMetrics();.getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.heightPixels;
}
/**
- 獲得狀態欄的高度
- @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;
}
} </pre>