zoukankan      html  css  js  c++  java
  • 背景图片拉伸,计算屏幕宽度和获取控件宽高

    背景图片拉伸:
    那么如果我们想在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 " + 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;
        }
  • 相关阅读:
    prototype.js超强的javascript类库
    MySQL Server Architecture
    Know more about RBA redo block address
    MySQL无处不在
    利用Oracle Enterprise Manager Cloud Control 12c创建DataGuard Standby
    LAMP Stack
    9i中DG remote archive可能导致Primary Database挂起
    Oracle数据库升级与补丁
    Oracle为何会发生归档日志archivelog大小远小于联机重做日志online redo log size的情况?
    Oracle Ksplice如何工作?How does Ksplice work?
  • 原文地址:https://www.cnblogs.com/sanbianxia/p/7718863.html
Copyright © 2011-2022 走看看