获取屏幕或图片的宽和高

一,在android中当自定义view的时候可能我们需要用到屏幕的宽度和高度,在此记录方法,以后省去度娘

 private void initWindowView(){
        WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(dm);
        int mScreenWidth  = dm.widthPixels;
        int mScreenHeight = dm.heightPixels;
    }

二,在Activity的onCreate()方法中我们可能获取不到view的宽度和高度,那么下面的方法就可以应急了

 private void initView() {
        mParentLayout = (LinearLayout) findViewById(R.id.parent_layout);
//        获得宽度或者高度。这是获得一个view的宽度和高度的方法之一。
        mParentLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
//              获取view的宽和高这里我因为嵌套了ScrollView所以用到Measure的宽和高
                mParentWidth = mParentLayout.getMeasuredWidth();
                mParentHeight = mParentLayout.getMeasuredHeight();
//  此方法会多次监听。所以在拿到宽和高以后最好取消监听
                mParentLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            }
        });
    }

在包含有ScrollView的容器中,我们如果不想通过onTouchEvent来获取按下还是滑动,那么上面的方法又可以复现了,

private void initView() {
        mParentLayout = (LinearLayout) findViewById(R.id.parent_layout);
        mScrollView = (ScrollView) findViewById(R.id.scrollview);
//        获得宽度或者高度。这是获得一个view的宽度和高度的方法之一。
        mParentLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
//                当焦点改变的时候就会触发
                onScrollView(mScrollView.getScrollY());
            }

        });
    }

    private void onScrollView(int pos) {
//    TODO do something...
    }

三,当我们在给屏幕插入广告的时候,图片的宽和高可能不会定死,那么有一个需求说广告的宽度和高度都显示为屏幕的2/3,这时候我们在不自定义view的情况下,就要动态设置图片的宽高了
我们在xml定义好后代码如下

private void initImageView(){
        ImageView imageView = (ImageView) findViewById(R.id.iv);
        ViewGroup.LayoutParams lp = imageView.getLayoutParams();
      //  屏幕宽度的2/3
        lp.width = SCREEN_WIDTH_2_3;
      //  屏幕高度的2/3
        lp.height = SCREEN_WIDTH_2_3;
        imageView.setLayoutParams(lp);
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值