背景图片拉伸,计算屏幕宽度和获取控件宽高

Posted lobin的代码成长之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了背景图片拉伸,计算屏幕宽度和获取控件宽高相关的知识,希望对你有一定的参考价值。

背景图片拉伸:
那么如果我们想在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;
    }

 

以上是关于背景图片拉伸,计算屏幕宽度和获取控件宽高的主要内容,如果未能解决你的问题,请参考以下文章

动态获取手机屏幕宽高及动态设置控件宽高

【安卓开发】怎么获取用户点击图片中的坐标

js如何获取图片的高和宽?根据我的部分代码添加完善,谢谢!

android自定义控件-利用onMeasure测量使图片拉伸永不变形,解决屏幕适配问题

HTML如何获取浏览器的宽度?

android获取控件宽高和屏幕宽高