1. 程式人生 > >背景圖片拉伸,計算屏幕寬度和獲取控件寬高

背景圖片拉伸,計算屏幕寬度和獲取控件寬高

屏幕寬度 ack context splay ots focus pri bool thp

背景圖片拉伸:
那麽如果我們想在Activity的onCreate方法或者是onReusme方法獲取組件的寬高怎麽辦呢?這裏提供了以下的五種方式:http://blog.csdn.net/qq_23547831/article/details/51764304

1、重寫Activity的onWindowFocusChanged方法
/**
 * 重寫Acitivty的onWindowFocusChanged方法
 */ 
@Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        
/** * 當hasFocus為true的時候,說明Activity的Window對象已經獲取焦點,進而Activity界面已經加載繪制完成 */ if (hasFocus) { int widht = titleText.getWidth(); int height = titleText.getHeight(); Log.i(TAG, "onWindowFocusChanged width:" + widht + " " + " height:" + height; } } 說明: 這樣重寫onWindowFocusChanged方法,當獲取焦點的時候我們就可以通過getWidth和getHeight方法得到組件的寬和高了。但是這時候這個方法的邏輯可能會執行多次,也就是說只要我們的Activity的window對象獲取了焦點就會執行該語句, 所以我們需要做一些邏輯判斷,讓它在我們需要打印獲取組件寬高的時候在執行。 example: @Override
public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if(hasFocus){ mLayoutWidth = mBackgroundImg.getWidth(); } setPic(); } private void setPic() { ViewGroup.LayoutParams lp = mBackgroundImg.getLayoutParams();
int screenWidth = VAUtils.getScreenWidth(this);//屏幕寬度(像素) int screenHeight = VAUtils.getScreenHeight(this); lp.width = screenHeight > screenWidth ? mLayoutWidth : (int) (screenHeight * 0.5); lp.height = (int) (lp.width * 0.673); mBackgroundImg.setLayoutParams(lp); } 2、獲取屏幕寬高(1600X2454)SHT,VAUtils: public static int getScreenHeight(Context context) {//獲取屏幕高度 WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); Point point = new Point(); display.getSize(point); return point.y; } public static int getScreenWidth(Context context) {//獲取屏幕寬度 WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); Point point = new Point(); display.getSize(point); return point.x; } 3、判斷屏幕尺寸(英寸) public static boolean isTablet() { WindowManager wm = (WindowManager) VAssistantConfig.getAppContext().getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); DisplayMetrics dm = new DisplayMetrics(); display.getMetrics(dm); double x = Math.pow(dm.widthPixels / dm.xdpi, 2);//dm.widthPixels:屏幕寬度(像素px),dm.xdpi:每一寸的屏幕密度(DPI(Dots Per Inch,每英寸點數)是一個量度單位,用於點陣數碼影像) double y = Math.pow(dm.heightPixels / dm.ydpi, 2); double screenInches = Math.sqrt(x + y); if (screenInches >= 8.0) { return true; } return false; }

背景圖片拉伸,計算屏幕寬度和獲取控件寬高