在Android中获取屏幕尺寸[重复]
Posted
技术标签:
【中文标题】在Android中获取屏幕尺寸[重复]【英文标题】:Get screen Dimensions in Android [duplicate] 【发布时间】:2014-05-19 14:41:33 【问题描述】:因为有两种获取大小的方法。从 13 以上的 API 级别开始,此方法适用于我
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
14岁以下这个方法适合我
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
我可以获取所有 API 级别的屏幕尺寸吗??? 请帮助我。
【问题讨论】:
只需根据设备的 API 使用这两种方法。 This question 会告诉你怎么做。 【参考方案1】:要支持所有版本的android,请使用以下代码
int Measuredwidth = 0;
int Measuredheight = 0;
Point size = new Point();
WindowManager w = getWindowManager();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
w.getDefaultDisplay().getSize(size);
Measuredwidth = size.x;
Measuredheight = size.y;
else
Display d = w.getDefaultDisplay();
Measuredwidth = d.getWidth();
Measuredheight = d.getHeight();
【讨论】:
【参考方案2】:试试这个家伙
int density;
private DisplayMetrics metrics;
private int widthPixels;
private float scaleFactor;
private float widthDp;
private DisplayMetrics metrics;
metrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
density= getResources().getDisplayMetrics().densityDpi;
widthPixels = metrics.widthPixels;
scaleFactor = metrics.density;
widthDp = widthPixels / scaleFactor;
【讨论】:
【参考方案3】:public void ScreenSize()
int Measuredwidth = 0;
int Measuredheight = 0;
Point size = new Point();
WindowManager w = getWindowManager();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
w.getDefaultDisplay().getSize(size);
Measuredwidth = size.x;
Measuredheight = size.y;
else
Display d = w.getDefaultDisplay();
Measuredwidth = d.getWidth();
Measuredheight = d.getHeight();
【讨论】:
【参考方案4】:试试这个代码,我用来显示屏幕规格:
此示例在 API 8 上测试,您可以轻松理解 Display Matrix ... 希望对您有所帮助
public class MainActivity extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN );
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
TextView tv=(TextView) findViewById(R.id.tv);
TextView tv1=(TextView) findViewById(R.id.TextView01);
TextView tv2=(TextView) findViewById(R.id.TextView02);
TextView tv3=(TextView) findViewById(R.id.TextView03);
TextView tv4=(TextView) findViewById(R.id.TextView04);
TextView tv5=(TextView) findViewById(R.id.TextView05);
TextView tv6=(TextView) findViewById(R.id.TextView06);
TextView tv7=(TextView) findViewById(R.id.TextView07);
TextView tv8=(TextView) findViewById(R.id.TextView08);
TextView tv9=(TextView) findViewById(R.id.TextView09);
TextView tv10=(TextView) findViewById(R.id.TextView10);
TextView tv11=(TextView) findViewById(R.id.TextView11);
TextView tv12=(TextView) findViewById(R.id.TextView12);
DisplayMetrics metrics=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
float height=metrics.heightPixels/metrics.ydpi;
float width=metrics.widthPixels/metrics.xdpi;
tv.setText("The screen size is:"+Math.sqrt(height*height+width*width));
tv1.setText("The screen height:"+height);
tv2.setText("The screen width:"+metrics.densityDpi);
tv3.setText("The screen metrics.heightPixels:"+metrics.heightPixels);
tv4.setText("The screen metrics.xdpi:"+metrics.xdpi);
tv5.setText("The screen height:"+height);
tv6.setText("The screen width:"+metrics);
tv7.setText("The screen metrics.widthPixels:"+metrics.widthPixels);
tv8.setText("The screen metrics.ydpi:"+metrics.ydpi);
tv9.setText("The screen Math.pow x :"+Math.pow(metrics.widthPixels/metrics.xdpi,2));
tv10.setText("The screen Math.pow y :"+Math.pow(metrics.heightPixels/metrics.ydpi,2));
float x = (float) Math.pow(metrics.widthPixels/metrics.xdpi,2);
float y = (float) Math.pow(metrics.heightPixels/metrics.ydpi,2);
tv11.setText("The screen metrics.widthPixels:"+Math.sqrt(x+y));
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".MainActivity" >
<TextView
android:id="@+id/tv"
android:layout_
android:layout_
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView01"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/tv"
android:layout_marginTop="20dp"
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView02"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView01"
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView03"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView02"
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView04"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView03"
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView05"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView04"
android:layout_marginTop="40dp"
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView06"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView05"
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView07"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView06"
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView08"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView07"
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView09"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView08"
android:layout_marginTop="63dp"
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView10"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView09"
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView11"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView10"
android:text="@string/hello_world" />
<TextView
android:id="@+id/TextView12"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_below="@+id/TextView11"
android:text="@string/hello_world" />
<ImageView
android:id="@+id/imageView1"
android:layout_
android:layout_
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/tv"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/inch1" />
</RelativeLayout>
【讨论】:
【参考方案5】:Disply disply=((WindowManager)getSystemService(Context.WINDOWMANAGER)).getDefaultDiaply();
int width=display.getWidth();
int heighte=disply.getHeight();
【讨论】:
【参考方案6】:显示显示 = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay();
int w = display.getWidth();
int h = display.getHeight();
这段代码对我有用,试试吧。
【讨论】:
以上是关于在Android中获取屏幕尺寸[重复]的主要内容,如果未能解决你的问题,请参考以下文章