您的位置:首页 > 移动开发 > Android开发

获取屏幕或图片的宽和高

2015-11-23 19:31 387 查看
一,在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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  view宽高 android