获取屏幕或图片的宽和高
2015-11-23 19:31
387 查看
一,在android中当自定义view的时候可能我们需要用到屏幕的宽度和高度,在此记录方法,以后省去度娘
二,在Activity的onCreate()方法中我们可能获取不到view的宽度和高度,那么下面的方法就可以应急了
在包含有ScrollView的容器中,我们如果不想通过onTouchEvent来获取按下还是滑动,那么上面的方法又可以复现了,
三,当我们在给屏幕插入广告的时候,图片的宽和高可能不会定死,那么有一个需求说广告的宽度和高度都显示为屏幕的2/3,这时候我们在不自定义view的情况下,就要动态设置图片的宽高了
我们在xml定义好后代码如下
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); }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories