您的位置:首页 > 移动开发 > Android开发

Android使用Displaymetrics类

2013-11-19 17:36 225 查看


Android使用Displaymetrics类获取一下手机屏幕中的一些信息

     今天被屏幕分辨率虐了几个小时,特意学习一下使用Displaymetrics类获取一下手机屏幕中的一些信息

       首先看下文档中的讲解

      


    这个类中包含 描述大小,宽度,字体缩放和其一些其他信息,我们要访问的DisplayMetrics成员,初始化一个这样的对象:

    DisplayMetrics metrics = new DisplayMetrics();

   getWindowManager().getDefaultDisplay().getMetrics(metrics);

 

    返回值                              属性                      说明
    

       float                                           density 
                              显示屏幕密度    

       int                                               densityDpi 
                        
       int                                              heightPixels 
                      显示屏幕绝对高度  单位 像素

       float                                          scaledDensity

        int                                            widthPixels 
                       显示屏幕绝对宽度 单位 像素

       float                                          xdpi

       float                                           ydpi

   

     在上面比较常用的应该是我们要去获取屏幕的分辨率了,虽然我们在Android开发的时候可以随着窗口的大小去调整改变缩放的比例,但是如果我们能清楚的知道手机屏幕的信息,这样我在布局的时候,不至于或出现因为缩放还造成布局出现变形等等问题

     下面看下Demo源代码:

       

[java] view
plaincopyprint?

package com.android;  

  

import android.app.Activity;  

import android.os.Bundle;  

import android.util.DisplayMetrics;  

import android.util.Log;  

  

/** 

 * Demo:通过DisplayMetrices类来获取手机屏幕的一些参数 

 *  

 * @author jiangqq 

 *  

 */  

public class DisplayMetricsDemo extends Activity {  

    private static final String TAG = "DisplayMetricsDemo";  

  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.displaymetrices);  

        DisplayMetrics displayMetrics = new DisplayMetrics();  

        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);  

        Log.i(TAG, "手机屏幕分辨率:" + displayMetrics.widthPixels + "X"  

                + displayMetrics.heightPixels);  

        Log.i(TAG, "密度:" + displayMetrics.density);  

        Log.i(TAG, "使用每英寸的像素点来显示密度:" + displayMetrics.densityDpi);  

        Log.i(TAG, displayMetrics.xdpi + "," + displayMetrics.ydpi);  

        Log.i(TAG, displayMetrics.scaledDensity + "");  

  

    }  

}  

 打印出屏幕信息截图  这里打印出来的屏幕分辨都是以像素为单位的,而且是绝对的

    


下面介绍些布局知识

RelativeLayout
第一类:属性值为true可false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentlfMissing 如果找不到对应的兄弟元素找不到,就以父元素做参照物。
第二类:属性值必须为id的引用名
android:layout_below 在某元素的下方
android:layout_above 在某元素的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素右边缘对齐
第三类:属性值为具体的像素值班,如30dip
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的的距离
android:layout_marginRight 离某元素的右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
android:hint 设置EditText为空时输入的提示信息
android:gravity 对该view内容的限定:靠上 下 左 右
android:layout_gravity="right" 用来设置该Container(组件)的靠左 靠右
android:text 指定的控件当中显示的文字 尽量使用string.xml文件当中的字符串
android:textSize 文字大小
android:width 控件宽度
android:height 控件高度
android:layout_width 指定Container组件的宽度
android:layout_height 指定Container组件的高度
View 按比例划分空间
android:Padding* 内边距
android:singleLine 为真时,内容在同一行中进行显示
android:scaleType: 控制图片如何resized/moved来匹配ImageView的size
ImageView.ScaleType/android.scaleType值的意义区别:
CENTER/center按图片的原来size居中显示,当图片长宽超过View的长宽时,截取图片的居中部分显示
CENTER_CROP/centerCrop 按比例扩大图片的size居中显示,使得图片的长宽等于View的长宽
CENTER_INSIDE/centerinside将图片的内容完整居中显示,通过缩小比例或原的size使得图片长 宽等于或小于View的长宽
FIT_CENTER/fitCenter 把图片按比例扩大/缩小到VIEW的宽度,居中显示
FIT_END/fitEnd 把图片按比例扩大/缩小到VIEW的宽度,居中在VIEW的下部位置
FIT_START/fitStart 把图片按比例扩大/缩小到VIEW的宽度,居中在VIEW的上部位置
FIT_XY/fitXY 把图片不按比例 扩大/缩小到VIEW的大小显示
MATRIX/matrix 用矩阵来绘制、动态缩小放大图片来显示。
Android:interpolator 控件动画进度(alpha scale translate rotate)
Android提供了几个Interpolator子类,实现了不同的速度曲线,如下
accelerateDcelerateInterpolator 在动画开始与介绍的地方的速率比较慢,然后开始加速
CycleInterpolator 动画循环放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方的速率改变比较慢,然后开始减速
LinearInterpolator 在动画的以均匀的速率改变
android:screenOrientation="portrait" 指定屏幕为竖屏
android:screenOrientation="landscape" 指定屏幕为横屏
android:capitalize 设置英文字母大写类型
android:cursorVisible 设置光标是否显示
Android:digits 设置允许输入哪些字符。如"123456&*"
Android:drawableBottom:在text的下方输出一个drawable。如果是颜色 设置为背景颜色
Android:drawableLeft:在text的左边输出一个drawable。
Android:drawableRight:在text的右边输出一个drawable。
Android:drawableTop:在text的顶部输出一个drawable。
Android:editable 设置是否可编辑
Android:editorExtras设置文本的额外的输入数据。
Android:ellipsize 设置当文字过长时,该控件如何显示,有如下属性
start省略号显示在开头 end省略号在结尾

middle省略号在中间 marquee以跑马灯的方式显示(动画横向移动)
Android:ems 设置TextView的宽度为N个字符的宽度
Android:freezesText设置保存文本的内容以及光标内置
Android:includeFontPadding 设置文本是否包含顶部和底部额外空白,默认是true
Android:inputMethod 为文本指定输入法,需要完全限定名(完整的包名)
Android:inputType设置广西的类型,用于帮助输入法显示合适的键盘类型
Android:lines 设置文本显示的行数
Android:lineSpacingExtra 设置行间距
Android:lineSpacingMultiplier 设置行间距的倍数。如1.3
Android:linksClickAble 设置链接是否点击连接,即使设置了autoLick
Android:marqueeRepeatLimit 在ellipsize指定的情况下,设置重复滚动次数。当设置marquee_forever为时表示无限次
Android:maxEms 设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项
android:maxHeight设置文本区域的最大高度android:maxLength限制显示的文本长度,超出部分不显示。android:maxLines设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。android:maxWidth设置文本区域的最大宽度android:minEms设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。android:minHeight设置文本区域的最小高度android:minLines设置文本的最小行数,与lines类似。android:minWidth设置文本区域的最小宽度android:numeric如果被设置,该TextView有一个数字输入法。
android:password以小点”.”显示文本
android:phoneNumber设置为电话号码的输入方式android:privateImeOptions设置输入法选项android:scrollHorizontally设置文本超出TextView的宽度的情况下,是否出现横拉条android:selectAllOnFocus如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。TextView中设置后无效果。android:shadowColor指定文本阴影的颜色,需要与shadowRadius一起使用android:shadowDx设置阴影横向坐标开始位置。android:shadowDy设置阴影纵向坐标开始位置。android:shadowRadius设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。android:singleLine设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text="test_
singleLine "
adnroid:stretchColumns 在TableLayout里指定第几列作为拉伸(当填不满屏幕的时候)android:text设置显示文本.android:textSize设置文字大小,推荐度量单位”sp” 或者"pt"android:textStyle设置字形[bold(粗体)
0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开android:typeface设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3android:width设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width的区别看这里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: