android获取屏幕的分辨率方法有哪几种?
获取屏幕分辨率的方式drawable-mdpi/如下:
android获取屏幕宽度_js获取手机屏幕宽度
android获取屏幕宽度_js获取手机屏幕宽度
一、在activity中
1、DisplayMetrics dm = getResources().getDisplayMetrics();
int screenWidth = dm.widthPixels;
2、DispDisplayMetrics dm = new DisplayMetrics();layMetrics dm = new DisplayMetrics();
this.getWindowMar().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
二、在serv中
dm = getResources().getDisplayMetrics();
int screenWidth = dm.widthPixels;
Android是一种基于Linux的自由及开放源代码的作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟及开发。尚未有统一中文名称,大陆地区较多人使用“安卓”或“安致”。Android作系统最初由Andy Rubin开发,主要支持手机。
如何处理与Android XLARGE屏幕
res/一、关于布局适用于区分不同的像素密度。配建议 1、不要使用布局 2、尽量使用match_parent 而不是fill_parent 。 3、能够使用权重的地方尽量使用权重(android:layout_weight) 4、如果是纯色背景,尽量使用android的shape 自定义。 5、如果需要在特定分辨率下适配,可以在res目录上新建layout-HxW.xml的文件夹。比如要适配10801800的屏幕(魅族MX3采用此分辨率)则新建layout-1800x1080.xml的文件夹,然后在下面定义布局。Android系统会优先查找分辨率相同的布局,如果不存在则换使用默认的layout下的布局。 二、术语和概念 四种屏幕尺寸分类:: all, normal, large, and xlarge 四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high) 需要注意的是: xhdpi是从 Android 2.2 (API Ll 8)才开始增加的分类. xlarge是从Android 2.3 (API Ll 9)才开始增加的分类. DPI是“dot per inch”的缩写,每英寸像素数。 一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。 三、如何做到自适应屏幕大小呢? 1)界面布局方面 需要根据物理尺寸的大小准备5套布局,layout(放一些通用布局xml文件,比如界面中顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),layout-all(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间) 2)资源方面 需要根据dpi值准备5套资源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi Android有个自动匹配机制去选择对应的布局和资源 四、两种获取屏幕分辨率信息的方法: DisplayMetrics metrics = new DisplayMetrics(); Display display = activity.getWindowMar().getDefaultDisplay(); display.getMetrics(metrics); //这里得到的像素值是设备像素dp //DisplayMetrics metrics=activity.getResources().getDisplayMetrics(); 这样获得的参数信息不正确,不要使用这种方式。 不能使用android.content.res.Resources.getSystem().getDisplayMetrics()。这个得到的宽和高是空的。
android popupWindow 中宽度莫名很大,求帮助
然后在math_parent: 根据父控件的尺寸大小设置控件的尺寸 res 下建立android中gridView怎么在代码里动态设置每一列的宽度??
3. 在strings.xml中,增加如下粗体字代码。这些代码,将会被Spinner使用:1.android:layout_height="wrap_content"
2.layout.addView(progressBar, new LayoutParam(Lay格式为 sw
参考看看就知道了吧
如何动态编辑fragment的高度,宽度和margin
wrap_content: 根据控件的内容设置控件的尺寸在实际工作中,我们经常需要在程序里面用代码来控制一些组件的宽度和高度,以适应不同分辨率的屏幕。尽管有不同的Layout供我们使用,但很多时候需要通过用代码设定组件的大小,以达到良好的界面视觉效果。
Code)是网络的全球编号。其中MCC指码,MNC指网络号。注意:组件和控件是有区别的。组件对应的英文是component,控件对应的英文是control;控件是带有界面的,组件则未必有界面;控件属于组件,可以说它是带有界面的组件。比如Button有界面,因此可以说它是控件,也可以说它是组件。LinearLayout没有界面,因此它不能算是控件,但它却是组件。本文中由于涉及了带有和不带有界面的组件,因此,用组件泛指这两者。
有些组件,比如Button,可以在程序中用setWidth和setHeight来设定其大小,这是非常方便的。但有些组件却没有这两个设定大小的方法,比如ImageButton、Spinner以及LinearLayout等等,那么如何在程序中根据需要,动态地设定他们的大小呢?下面就用实际的例子来说明这个问题。
1. 首先创建一个Android项目:
2. 将文件magnifier.png拖入到项目的res/drawable-mdpi文件夹下。mangifier.png的内容如下:
<> >
<>上海 >
<> >
<>哈尔滨 >
<>符拉迪沃斯托克 >
4. 修改main.xml,使之如下:
android:layout_width="fill_parent" android:layout_height="fill_parent" > android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello" /> android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="/uploads/5b62f531ec5aa22b51363277882d8b47.png" data-original="@drawable/magnifier" /> android:layout_width="wrap_content" android:layout_height="wrap_content" android:entries="@array/cities" android:prompt="@string/spin_prompt" /> android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:grity="left" > android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello" /> android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" > android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Android" /> 5. 运行本项目,得到的结果如下: 现在定,我们要: a) 增加Button的高度 b) 增加ImageButton的宽度和高度 c) 增加Spinner的宽度 d) 将包含Hello的EditText靠左,包含Android的EditText靠右 6. 修改AdjustControlSize.ja的代码,使之如下: public class AdjustControlSize extends Activity {private Button btn; private ImageButton imagebtn; private Spinner sp; private LinearLayout ll_left; private LinearLayout ll_right; private DisplayMetrics dm; {super.onCreate(sedInstanceState); setContentView(R.layout.main); // 获取屏幕尺寸 dm = new DisplayMetrics(); getWindowMar().getDefaultDisplay().getMetrics(dm); btn = (Button)findViewById(R.id.btn); sp =(Spinner)findViewById(R.id.sp); ll_left = (LinearLayout)findViewById(R.id.ll_left); ll_right = (LinearLayout)findViewById(R.id.ll_right); // 增加Button的高度,可以很方面地通过setHeight方法来实现。 btn.setHeight(80); // 但如果要想在代码中改变某些组件,比如ImageButton、Spinner以及LinearLayout, // 用setHeight或者setWidth的方式就不行了,因为这些组件中,没有提供这两个方法。 // 为此,可以通过LayoutParams这个类(这里我们用LinearLayout.LayoutParams)来实现这一点。 // 改变imagebtn的宽度和高度均为屏幕宽度的1/4 LinearLayout.LayoutParams imagebtn_params = newLinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); imagebtn_params.height = dm.widthPixels / 4; imagebtn_params.width = dm.widthPixels / 4; imagebtn.setLayoutParams(imagebtn_params); // 设定sp的宽度为屏幕宽度的2/3 LinearLayout.LayoutParams sp_params = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); sp_params.width = dm.widthPixels 2 / 3; sp.setLayoutParams(sp_params); // 让两个EditText分别处于屏幕的左右两端。 // 在main.xml中,两个EditText分别处于ll_left和ll_right这两个LinearLayout中,且 // 处于ll_left的grity属性为left,即置于其中的组件靠左;处于ll_right的grity // 属性为right,即置于其中的组件靠右。但是由于这两个LinearLayout的宽度属性均为 // wrap_content,所以它们靠在一起了,由此导致了两个EditText也靠在一起。 // 会分别处于屏幕的两端。 LinearLayout.LayoutParams ll_params = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); ll_params.width = dm.widthPixels / 2; ll_right.setLayoutParams(ll_params); }} 这里的sw代表allwidth的意思,当你所有屏幕的最小宽度都大于720dp时,屏幕就会自动到带sw720dp后缀的资源文件里去寻找相关资源文件,这里的最小宽度是指屏幕宽高的较小值,每个屏幕都是固定的,不会随着屏幕横向纵向改变而改变。 权重 layout-weight,搞几个看不见的布局布满整个宽度 获取屏幕宽度X,然后setwidth(X/N) wrapcontent 然后paddingright paadingleft。。。 使用LinearLayout,然后用权重weight来做吧 自定义View,想要自定义给定宽和高,你要写自定义属性,然后在xml文件中指定宽高才会有效,同时当给定的宽和高的值是wrap_content 或 fill_parent 这类的,这时需要在自定义View中重写onMeasure方法,进行控件的宽高测量。 1 如果只按你的要求来使用dip, 可以在配置文件中使用dimens.xml 在里边配置数值 自定义一个对话框类,继承android 对话框,重写对话框的样式,里面可以设置弹出时的视图view,可以写成固定宽度,也可以根据手机获取屏幕的宽度,来计算显示占屏幕的份额。 对话框的宽度跟android版本没关系。只跟不同设备的分辨率有关系吧。但是如果你设置好了不同分辨率的宽度的话,他就不会变了 4、Android提供3种方式处理屏幕自适应 4.1预缩放的资源(基于尺寸和密度去寻找) 1)如果找到相应的尺寸和密度,则利用这些进行无缩放显示。 2)如果没法找到相应的尺寸,而找到密度,则认为该尺寸为 "medium",利用缩放显示这个。 3)如果都无法匹配,则使用默认进行缩放显示。默认默认标配 "medium" (160)。 4.2自动缩放的像素尺寸和坐标(密度兼容) 1)如果应用程序不支持不同密度android:anyDensity="false",系统自动缩放尺寸和这个的坐标。 2)对于预缩放的资源,当androi一般情况,我们都是设置要进行比例分配的方向的宽度为0dp,然后再用权重进行分配。如下:d:anyDensity="false",也不生效。 3)android:anyDensity="false",只对密度兼容起作用,尺寸兼容没效果 4.3兼容更大的屏幕和尺寸(尺寸兼容) 1)对于你在声明不支持的大屏幕,而这个屏幕尺寸是normal的话,系统使用尺寸为 ("normal")和密度为("medium)显示。 2.)对于你在声明不支持的大屏幕,而这个屏幕尺寸是larger的话,系统同样使用尺寸为("normal")和密度为("medium)显示, 不过会出现一层黑色的背景。 5、Android系统自动适配技巧 Android系统采用下面两种方法来实现应用的自动适配: 1)布局文件中定义长度的时候,使用wrap_content,fill_parent, 或者dp 进行描述,这样可以保证在屏幕上面展示的时候有合适的大小 2)为不同屏幕密度的手机,提供不同的位图资源,可以使得界面清晰无缩放。 对应bitmap 资源来说,自动的缩放有时会造成放大缩小后的图像变得模糊不清,这是就需要应用为不同屏幕密度配置提供不同的资源:为高密度的屏幕提供高清晰度的图像等。 3)不要使用AbsoluteLayout 4)像素单位都使用DIP,文本单位使用SP 6、在代码中获取屏幕像素、屏幕密度 DisplayMetrics metric = new DisplayMetrics(); getWindowMar().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; // 屏幕宽度(像素) int height = metric.heightPixels; // 屏幕高度(像素) float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5) int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)关于Android resource 中 layout-sw720dp,720dp是代表分辨率还是计算出来的物理宽度。
android:grity="right关键字: 屏幕适配 px dp dpi sp large限定符 .9.png"android 如何自动调整button宽度
解决方案-支持各种屏幕密度android自定义view如何获取父容器赐予的宽度和高度
public void onCreate(Bundle sedInstanceState)不同版本的android如何控制对话框宽度
@Ov你可以即时的计算你的popupwindow所占空间 比如你现在的初始化传参是300pxXpx 即时的dp转成px
/
将dip或dp值转换为px值,保证尺寸大小不变
@param dipValue
@param scale
(DisplayMetrics类中属性density)
@return
/
public static int dip2px(float dipValue, float scale) {
return (int) (dipValue scale + 0.5f);
}
public static DisplayMetrics getMetrics(Activity activity) {
DisplayMetrics metrics = new DisplayMetrics();
Display display = activity.getWindowMar().getDefaultDisplay();
display.getMetrics(metrics);
return metrics;
}
再调用的话就是new PopupWindow(findViewById(R.id.mainlayout), dip2px(300,getMetrics(youractivity)), dip2px(,getMetrics(youractivity)));
还有 如果是在平板上面显示 这种方法也会失去效果 如果你想在高分辨率下 显示 就得传更高的值才有相同的显示效果 下面是判断是否是平板的方法
private boolean isPad() {
WindowMar wm = (WindowMar) getSystemServ(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
// 屏幕宽度
float screenWidth = display.getWidth();
// 屏幕高度
float screenHeight = display.getHeight();
DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm);
double x = Math.pow(dm.widthPixels / dm.xdpi, 2);
double y = Math.pow(dm.heightPixels / dm.ydpi, 2);
// 屏幕尺寸
double screenInches = Math.sqrt(x + y);
// 大于6尺寸则为Pad
if (screenInches >= 6.0) {
return true;
}
return false;
}errideandroid自定义view 如何适应分辨率