欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android編程獲取屏幕寬高與獲取控件寬高的方法

 更新時(shí)間:2015年12月31日 09:47:33   作者:chenguang79  
這篇文章主要介紹了Android編程獲取屏幕寬高與獲取控件寬高的方法,實(shí)例分析了Android針對(duì)屏幕及控件常用屬性的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Android編程獲取屏幕寬高與獲取控件寬高的方法。分享給大家供大家參考,具體如下:

獲取屏幕寬高

// 獲取屏幕寬高(方法1)
int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 屏幕寬(像素,如:480px)
int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 屏幕高(像素,如:800p)
Log.e(TAG + " getDefaultDisplay", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// 獲取屏幕密度(方法2)
DisplayMetrics dm = new DisplayMetrics();
dm = getResources().getDisplayMetrics();
float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
int densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
float xdpi = dm.xdpi;
float ydpi = dm.ydpi;
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);
screenWidth = dm.widthPixels; // 屏幕寬(像素,如:480px)
screenHeight = dm.heightPixels; // 屏幕高(像素,如:800px)
Log.e(TAG + " DisplayMetrics(111)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);
// 獲取屏幕密度(方法3)
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
densityDPI = dm.densityDpi; // 屏幕密度(每寸像素:120/160/240/320)
xdpi = dm.xdpi;
ydpi = dm.ydpi;
Log.e(TAG + " DisplayMetrics", "xdpi=" + xdpi + "; ydpi=" + ydpi);
Log.e(TAG + " DisplayMetrics", "density=" + density + "; densityDPI=" + densityDPI);
int screenWidthDip = dm.widthPixels; // 屏幕寬(dip,如:320dip)
int screenHeightDip = dm.heightPixels; // 屏幕寬(dip,如:533dip)
Log.e(TAG + " DisplayMetrics(222)", "screenWidthDip=" + screenWidthDip + "; screenHeightDip=" + screenHeightDip);
screenWidth = (int)(dm.widthPixels * density + 0.5f); // 屏幕寬(px,如:480px)
screenHeight = (int)(dm.heightPixels * density + 0.5f); // 屏幕高(px,如:800px)
Log.e(TAG + " DisplayMetrics(222)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight);

獲取控件的寬高

一般來(lái)說(shuō),我們?cè)趏nCreate里面得到的控件的寬高全是0.采用下面的方法,可以得到真實(shí)的寬高

方法一:

int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
imageView.measure(w, h);
int height =imageView.getMeasuredHeight();
int width =imageView.getMeasuredWidth();
textView.append("\n"+height+","+width);

此方法會(huì)加載onMeasure三次

方法二:

ViewTreeObserver vto = imageView.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
  public boolean onPreDraw() {
    int height = imageView.getMeasuredHeight();
    int width = imageView.getMeasuredWidth();
    textView.append("\n"+height+","+width);
    return true;
  }
});

此方法會(huì)加載onMeasure二次,但是回調(diào)函數(shù)會(huì)回調(diào)很多次

方法三:

ViewTreeObserver vto2 = imageView.getViewTreeObserver();
vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
  @Override
  public void onGlobalLayout() {
    imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
    textView.append("\n\n"+imageView.getHeight()+","+imageView.getWidth());
  }
});

此方法會(huì)加載onMeasure二次,但是回調(diào)函數(shù)只回調(diào)一次

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android編程基于距離傳感器控制手機(jī)屏幕熄滅的方法詳解

    Android編程基于距離傳感器控制手機(jī)屏幕熄滅的方法詳解

    這篇文章主要介紹了Android編程基于距離傳感器控制手機(jī)屏幕熄滅的方法,結(jié)合具體實(shí)例形式分析了Android距離傳感器的控制屏幕熄滅的實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • 30分鐘搞清楚Android Touch事件分發(fā)機(jī)制

    30分鐘搞清楚Android Touch事件分發(fā)機(jī)制

    30分鐘搞清楚Android Touch事件分發(fā)機(jī)制,Touch事件分發(fā)中只有兩個(gè)主角:ViewGroup和View,想要深入學(xué)習(xí)的朋友可以參考本文
    2016-03-03
  • Android StatusBar 透明化方法(不同的版本適配)

    Android StatusBar 透明化方法(不同的版本適配)

    本篇文章主要介紹了Android StatusBar 透明化方法(不同的版本適配),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • Android開(kāi)發(fā)中4個(gè)常用的工具類【Toast、SharedPreferences、網(wǎng)絡(luò)及屏幕操作】

    Android開(kāi)發(fā)中4個(gè)常用的工具類【Toast、SharedPreferences、網(wǎng)絡(luò)及屏幕操作】

    這篇文章主要介紹了Android開(kāi)發(fā)中4個(gè)常用的工具類,包括Toast管理、SharedPreferences存儲(chǔ)管理、網(wǎng)絡(luò)操作及屏幕操作等功能的封裝類,需要的朋友可以參考下
    2017-11-11
  • android實(shí)現(xiàn)音樂(lè)播放器進(jìn)度條效果

    android實(shí)現(xiàn)音樂(lè)播放器進(jìn)度條效果

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)音樂(lè)播放器進(jìn)度條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Android編程實(shí)現(xiàn)攝像頭臨摹效果的方法

    Android編程實(shí)現(xiàn)攝像頭臨摹效果的方法

    這篇文章主要介紹了Android編程實(shí)現(xiàn)攝像頭臨摹效果的方法,涉及Android權(quán)限控制、布局及攝像頭功能調(diào)用等相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • 最新評(píng)論