Android 获得屏幕宽高的三种方式
程序员文章站
2023-12-13 08:25:34
老风格,废话不多说了,直接给大家贴android获取屏幕宽高的代码了。
主要代码:
package com.km.screeninfo;
import...
老风格,废话不多说了,直接给大家贴android获取屏幕宽高的代码了。
主要代码:
package com.km.screeninfo; import android.os.bundle; import android.support.v.app.fragment; import android.support.v.app.fragmentactivity; import android.util.displaymetrics; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.viewgroup; import android.widget.textview; public class mainactivity extends fragmentactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); if (savedinstancestate == null) { getsupportfragmentmanager().begintransaction().add(r.id.container, new placeholderfragment()).commit(); } } /** * a placeholder fragment containing a simple view. */ public static class placeholderfragment extends fragment { private textview tvmodel; private textview tvscreenheight; private textview tvscreenheight; private textview tvscreenheight; private textview tvscreenwidth; private textview tvscreenwidth; private textview tvscreenwidth; private textview tvscreendensity; private textview tvscreendensitydpi; private textview tvscreendensity; private textview tvscreendensitydpi; private textview tvscreenwidth; private textview tvscreenheight; public placeholderfragment() { } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.fragment_main, container, false); tvmodel = (textview) rootview.findviewbyid(r.id.tv_model); tvscreenheight = (textview) rootview.findviewbyid(r.id.tv_screen_height); tvscreenheight = (textview) rootview.findviewbyid(r.id.tv_screen_height); tvscreenheight = (textview) rootview.findviewbyid(r.id.tv_screen_height); tvscreenheight = (textview) rootview.findviewbyid(r.id.tv_screen_height); tvscreenwidth = (textview) rootview.findviewbyid(r.id.tv_screen_width); tvscreenwidth = (textview) rootview.findviewbyid(r.id.tv_screen_width); tvscreenwidth = (textview) rootview.findviewbyid(r.id.tv_screen_width); tvscreenwidth = (textview) rootview.findviewbyid(r.id.tv_screen_width); tvscreendensity = (textview) rootview.findviewbyid(r.id.tv_screen_density); tvscreendensitydpi = (textview) rootview.findviewbyid(r.id.tv_screen_densitydpi); tvscreendensity = (textview) rootview.findviewbyid(r.id.tv_screen_density); tvscreendensitydpi = (textview) rootview.findviewbyid(r.id.tv_screen_densitydpi); tvmodel.settext(android.os.build.model); // 获取屏幕密度(方法) int screenwidth = getactivity().getwindowmanager().getdefaultdisplay().getwidth(); // 屏幕宽(像素,如:px) int screenheight = getactivity().getwindowmanager().getdefaultdisplay().getheight(); // 屏幕高(像素,如:p) tvscreenheight.settext(screenheight + " px"); tvscreenwidth.settext(screenwidth + " px"); // 获取屏幕密度(方法) displaymetrics dm = getresources().getdisplaymetrics(); float density = dm.density; // 屏幕密度(像素比例:./././.) int densitydpi = dm.densitydpi; // 屏幕密度(每寸像素:///) float xdpi = dm.xdpi; float ydpi = dm.ydpi; int screenwidth = dm.widthpixels; // 屏幕宽(像素,如:px) int screenheight = dm.heightpixels; // 屏幕高(像素,如:px) tvscreenheight.settext(screenheight + " px"); tvscreenwidth.settext(screenwidth + " px"); tvscreendensity.settext(density + ""); tvscreendensitydpi.settext(densitydpi + ""); // 获取屏幕密度(方法) displaymetrics dm = new displaymetrics(); getactivity().getwindowmanager().getdefaultdisplay().getmetrics(dm); density = dm.density; // 屏幕密度(像素比例:./././.) densitydpi = dm.densitydpi; // 屏幕密度(每寸像素:///) xdpi = dm.xdpi; ydpi = dm.ydpi; tvscreendensity.settext(density + ""); tvscreendensitydpi.settext(densitydpi + ""); int screenwidth = dm.widthpixels; // 屏幕宽(px,如:px) int screenheight = dm.heightpixels; // 屏幕高(px,如:px) tvscreenheight.settext(screenheight + " px"); tvscreenwidth.settext(screenwidth + " px"); float screenwidthdip = (dm.widthpixels / density); // 屏幕宽(dip,如:dip) float screenheightdip = (dm.heightpixels / density); // 屏幕宽(dip,如:dip) tvscreenheight.settext(screenheightdip + " dip"); tvscreenwidth.settext(screenwidthdip + " dip"); return rootview; } } }
activity_main.xml:
<framelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.km.screeninfo.mainactivity" tools:ignore="mergerootframe" /> <scrollview xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" tools:context="com.km.screeninfo.mainactivity$placeholderfragment" > <linearlayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="dip" android:orientation="horizontal" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="手机型号:" android:textstyle="bold" /> <textview android:id="@+id/tv_model" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginbottom="dip" android:layout_margintop="dip" android:text="方法一:getdefaultdisplay().geth/w()" android:textcolor="#aaaa" android:textsize="sp" /> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="dip" android:layout_margintop="dip" android:orientation="horizontal" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="屏幕高(一):" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_height" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="dip" android:orientation="horizontal" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="屏幕宽(一):" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_width" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginbottom="dip" android:layout_margintop="dip" android:text="方法二:getresources().getdisplaymetrics().h/w" android:textcolor="#aaaa" android:textsize="sp" /> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="dip" android:layout_margintop="dip" android:orientation="horizontal" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="屏幕高(二):" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_height" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="dip" android:orientation="horizontal" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="屏幕宽(二):" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_width" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="dip" android:layout_margintop="dip" android:orientation="horizontal" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="density:" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_density" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginleft="dip" android:text="densitydpi:" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_densitydpi" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginbottom="dip" android:layout_margintop="dip" android:text="方法三:getdefaultdisplay().getmetrics(displaymetrics).h/w" android:textcolor="#aaaa" android:textsize="sp" /> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="dip" android:layout_margintop="dip" android:orientation="horizontal" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="屏幕高(三):" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_height" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="dip" android:orientation="horizontal" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="屏幕宽(三):" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_width" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="dip" android:layout_margintop="dip" android:orientation="horizontal" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="density:" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_density" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginleft="dip" android:text="densitydpi:" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_densitydpi" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginbottom="dip" android:layout_margintop="dip" android:text="屏幕宽高(px/density)" android:textcolor="#aaaa" android:textsize="sp" /> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="dip" android:layout_margintop="dip" android:orientation="horizontal" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="屏幕高:" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_height" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="dip" android:orientation="horizontal" > <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="屏幕宽:" android:textstyle="bold" /> <textview android:id="@+id/tv_screen_width" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </linearlayout> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginbottom="dip" android:layout_margintop="dip" android:text="科普:" android:textcolor="#aaaa" android:textsize="sp" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="dip" android:text="density = densitydpi/" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="dip" android:text="px(pixels) = dip * (densitydpi/) = dip*density" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="dip" android:text="dip(device independent pixels) = dp " /> <textview android:layout_width="wrap_content" android:layout_margin="dip" android:layout_height="wrap_content" android:text="dip = (px * )/densitydpi = px / density" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="dip" /> </linearlayout> </scrollview>
ps:在 activity 中获得屏幕的宽和高
int srceenw = this.getwindowmanager().getdefaultdisplay().getwidth(); int screenh = this.getwindowmanager().getdefaultdisplay().getheight();
如果需要适应不同分辨率的屏幕,则按照以下方式操作:
准备多套不同的图片:
分别放hdpi、mdpi、ldp文件夹中;
摆放控件的时候要得到屏幕宽高度,然后在程序中设定控件的百分乘屏幕的宽和高。