android 多屏幕适配 : 第一部分

简介: 1、在xml布局文件中,控件的宽度和高度用  dp ;   字体大小用 sp 2、根据屏幕的宽高来动态的适配 , 获取屏幕的宽高的两种方法:     第一种方法: /** * 屏幕的宽度 * 屏幕的高度 * @return */ ...
1、在xml布局文件中,控件的宽度和高度用  dp ;   字体大小用 sp

2、根据屏幕的宽高来动态的适配 , 获取屏幕的宽高的两种方法:

    第一种方法:

    /**
     * 屏幕的宽度
     * 屏幕的高度
     * @return
     */
    public void initPhone1( Activity activity ){
        int phone_Width  = activity.getWindowManager().getDefaultDisplay().getWidth() ;    //单位是 px
        int phone_Height = activity.getWindowManager().getDefaultDisplay().getHeight() ;   //单位是 px
    }

    这种方法会报警告,The method getWidth() from the type Display is deprecated

    意思是这种方法已经过时,所以建议用第二种方法:

   

第二种方法:

  

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int  Phone_width  = dm.widthPixels ;
int Phone_height = dm.heightPixels ;

 

注意:1、在 Java 代码中获取的宽度和高度,以 px (像素) 为单位。 与xml 文件中的 dp 不一样 。

         2、经过测试,用两种方法分别获取手机屏幕的宽度和高度,得到的结果是一样的 。

              我的手机是小米1 ,480 x 854  px

 

3、通常情况下,一个 layout 布局文件里面的控件的大小,有两种设置控件宽高的 方法 。

    一种是在 xml 中设置 , 如果一个控件在 xml 中有定义控件的宽度和高度用  dp ;   字体大小用 sp 。

    另外一种 就是在java 代码中动态设置 。

   

    TextView tv2 = (TextView) findViewById( R.id.tv2 ) ;
    LinearLayout.LayoutParams params2 = (LayoutParams) tv2.getLayoutParams() ;
    params2.width = 300 ;    //这里的300代表  300 px 
    params2.height = 100 ;   //这里的100代表  100 px 
    tv2.setLayoutParams( params2 );


4、因为在 xml 布局中 单位是 dp , 在 java 代码中 的单位是 px 。

    为了两者的大小保持一致,所以需要将两者进行换算 。

  DensityUtil 类

package com.example.bb;

import android.content.Context;

public class DensityUtil {
    /** 
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素) 
     */  
    public static int dip2px(Context context, float dpValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (dpValue * scale + 0.5f);  
    }  

    /** 
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 
     */  
    public static int px2dip(Context context, float pxValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (pxValue / scale + 0.5f);  
    }  

}

 

5、由于android 的屏幕大小有很多中,分辨率也是多种多样的 。

   为了准确的获取屏幕的高度和宽度,需要在AndroidManifest.xml 中加入 supports-screens 节点 。

   

?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.app01"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <!-- 获得手机正确的宽度和高度 -->
    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.app01.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

 

 

     

  

 

  

   

相关文章
|
2天前
|
编解码 Java Android开发
Android技能树 — 屏幕适配小结,2024年最新android开发环境搭建教程
Android技能树 — 屏幕适配小结,2024年最新android开发环境搭建教程
|
3天前
|
编解码 Android开发
Android 屏幕适配
Android 屏幕适配
17 4
|
4天前
|
XML 编解码 Java
Android控件之高级控件——ListView、cardView、屏幕适配
Android控件之高级控件——ListView、cardView、屏幕适配
|
编解码 Android开发
Android | 老生常谈!屏幕适配原理 & 方案总结笔记
Android | 老生常谈!屏幕适配原理 & 方案总结笔记
482 0
Android | 老生常谈!屏幕适配原理 & 方案总结笔记
|
编解码 Android开发
Android屏幕适配全攻略
Android屏幕适配全攻略
243 0
Android屏幕适配全攻略
|
XML 编解码 API
浅谈 Android 屏幕适配
几组概念 分辨率 屏幕上物理像素的总数。添加对多种屏幕的支持时, 应用不会直接使用分辨率;而只应关注通用尺寸和密度组指定的屏幕尺寸及密度。
285 0
浅谈 Android 屏幕适配
|
XML 编解码 Android开发
适配完结篇一 - 超快速的Android屏幕适配方式
由于Android碎片化严重,屏幕分辨率千奇百怪,而想要在各种分辨率的设备上显示基本一致的效果,适配成本越来越高。虽然Android官方提供了dp单位来适配,但其在各种奇怪分辨率下表现却不尽如人意,因此下面探索一种简单且低侵入的适配方式。
820 0
适配完结篇一 - 超快速的Android屏幕适配方式
|
编解码 程序员 开发工具
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题(一)
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题(一)
146 0
|
XML 编解码 Android开发
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题(二)
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题(二)
230 0
【Android 应用开发】Android屏幕适配解析 - 详解像素,设备独立像素,归一化密度,精确密度及各种资源对应的尺寸密度分辨率适配问题(二)
|
XML 编解码 Android开发
Android屏幕适配讲解与实战
Android屏幕适配讲解与实战 文章大纲 一、屏幕适配是什么 二、 重要概念讲解 三、屏幕适配实战 四、项目源码下载   一、屏幕适配是什么   Android中屏幕适配就是通过对尺寸单位、图片、文字、布局这四种类型的资源进行合理的设计和规划,在布局时合理利用各种类型的资源,让布局拥有适应能力,能在各种设备下保持良好的展现效果。
1420 0