Android开发屏幕自适应方法

先来看一下效果图:

上图是通过设置layout_weight来解决Android多屏幕自适应。该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中。

其值越小,则对应的layout_width或layout_height的优先级就越高,一般横向布局中,决定的是layout_width的优先级;纵向布局中,决

定的是layout_height的优先级。

传统的layout_weight使用方法是将当前控件的layout_width和layout_height都设置成fill_parent,这样就可以把控件的显示比例完全交给

layout_weight;这样使用的话,就出现了layout_weight越小,显示比例越大的情况。不过对于2个控件还好,如果控件过多,且显示比

例也不相同的时候,控制起来就比较麻烦了,毕竟反比不是那么好确定的。

于是就有了现在最为流行的0px设值法。看似让人难以理解的layout_height=0px的写法,结合layout_weight,却可以使控件成正比例

显示,轻松解决了当前Android开发最为头疼的碎片化问题之一。

先看下面的styles(style_layout.xml)

<?xml version="1.0" encoding="utf-8"?>
<resources>  

<!-- 全屏幕拉伸-->
  <style name="layout_full">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">fill_parent</item>
  </style>

<!-- 固定自身大小-->
  <style name="layout_wrap">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
  </style>

<!-- 横向分布-->
  <style name="layout_horizontal" parent="layout_full">
    <item name="android:layout_width">0px</item>
  </style> 

<!-- 纵向分布-->
  <style name="layout_vertical" parent="layout_full">
    <item name="android:layout_height">0px</item>
  </style> 

</resources>  

可以看到,layout_width和layout_height两个属性被我封装成了4个style

根据实际布局情况,选用当中的一种,不需要自己设置,看过我前一个ActivityGroup的Demo的同学应该非常熟悉了

然后我的Demo的布局如下(weight_layout.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        style="@style/layout_full"
        android:orientation="vertical">
        <LinearLayout
                style="@style/layout_vertical"
                android:layout_weight="1"
                android:orientation="horizontal">
                 <View
                         style="@style/layout_horizontal"
                         android:background="#aa0000"
                         android:layout_weight="1"/>
                 <View
                         style="@style/layout_horizontal"
                         android:background="#00aa00"
                         android:layout_weight="4"/>
                 <View
                         style="@style/layout_horizontal"
                         android:background="#0000aa"
                         android:layout_weight="3"/>
                 <View
                         style="@style/layout_horizontal"
                         android:background="#aaaaaa"
                         android:layout_weight="2"/>
        </LinearLayout>
        <LinearLayout
                style="@style/layout_vertical"
                android:layout_weight="2"
                android:orientation="vertical">
                <View
                         style="@style/layout_vertical"
                         android:background="#ffffff"
                         android:layout_weight="4"/>
                 <View
                         style="@style/layout_vertical"
                         android:background="#aa0000"
                         android:layout_weight="3"/>
                 <View
                         style="@style/layout_vertical"
                         android:background="#00aa00"
                         android:layout_weight="2"/>
                 <View
                         style="@style/layout_vertical"
                         android:background="#0000aa"
                         android:layout_weight="1"/>

        </LinearLayout>
</LinearLayout>

整个界面布局看起来非常直观,只是嵌套的逻辑要自己理下。显示效果如下图,其中左面一个是480x800的界面,右面的是320x480

的界面(后面的图也如此),可以看出显示比例和代码中完全一致,如下图。

时间: 2024-11-09 13:39:33

Android开发屏幕自适应方法的相关文章

Android开发 屏幕自适应

方案一:在不同的dpi的drawable里面各自放置一套图片,系统读取手机硬件的dpi的时候自动获取相应drawable文件夹里面的图片.这个方案只能部分解决问题. 方案二:推荐方法:针对不同屏幕的手机设置相应的layout.如MX3手机分辨率是1800*1080,那么在res文件夹新增一个layout文件夹命名为layout-1800x1080. 有的手机是1280*720,则新增一个layout为layout-1280x720.这种情况下当你的测试机是1280x720屏幕,就会读取layou

Android开发屏幕适配方案

Android屏幕适配方案总结 日常开发中,难免遇到屏幕适配的方案,网上也有很多方案,在这里本人只是做一个总结,以免日后使用 单位的概念 pt(point):磅,一个标准的固定长度单位,大小为1/72英寸,主要用于印刷与平面设计.1英寸=2.54厘米=72磅 1pt=0.03527cm px(pixel):像素,组成屏幕图像的最小点,一个相对大小单位.同尺寸屏幕中像素越小越多,代表屏幕分辨率越高,反之越高. 1pt=(ppi/72)*px 屏幕尺寸(screen size):屏幕物理尺寸,指屏幕

android手机屏幕适配方法

1.你需要在AndroidManifest.xml文件的元素如下添加子元素    android:normalScreens="true" android:anyDensity="true"    android:smallScreens="true">    名如其意,以上是为我们的屏幕设置多分辨率支持(更准确的说是适配大.中.小三种密度).android:anyDensity="true" ,这一句对整个的屏幕都起着

关于android 开发屏幕适配的个人见解

一.android 中各个单位的基本概念 px 是英文单词pixel的缩写,意为像素,屏幕上的点.我们通常所说的分辨率如480X800就是指的像素. 在设计领域中,像素是用来计算数码影像的最小单位.计算机中显示的图像并非连续的线条组成,而是由许多肉眼看不见的小点组成.如果把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小点所组成,这些小点就是构成影像的最小单位"像素".由于是最小的独立显示单位,px均为整数,不会出现0.5px的情况 in 表示英寸,是屏幕的物理尺寸.每英寸等于

Android开发中回调方法的简单应用

"回调/回调方法"这个词语对我们程序员来说肯定不陌生.在Android的学习及开发过程中,我们经常会听到也会用到"回调(回调方法)"这个词,那么什么是回调呢:在类A中定义了一个方法,这个方法中用到了一个接口(Interface)和该接口中的方法,但是这个方法方法没有具体的实现,需要在类B中去实现,类B实现该方法具体业务处理后,再传递给A类,供A类去调用,这种机制就称为回调.A来B去听起来有点拗口,下面我们用个简单的例子来实现. 我们在Activity中定义了一个Li

Android开发 - ActivityLifecycleCallbacks使用方法初探

ActivityLifecycleCallbacks是什么? Application通过此接口提供了一套回调方法,用于让开发者对Activity的生命周期事件进行集中处理. 为什么用ActivityLifecycleCallbacks? 以往若需监测Activity的生命周期事件代码,你可能是这样做的,重写每一个Acivity的onResume(),然后作统计和处理: @Override protected void onResume() { super.onResume(); //TODO 处

离线安装Android开发环境的方法

对于大家从官网上下载下来的SDK其实是一个安装工具,里面啥都没有,如果在线安装的话会需要很长时间.我们同样可以从网络上用下载工具将所需要安装的东西下载下来,(同样有劳大家自己动手找找了)然后直接放入相应的目录,再在Eclipse里面配置下SDK的路径就可以用了. 具体如下:在Android安装目录下的add-ons文件夹(若没有则自己创建,名字一定要是add-ons)里面放置的是google_apis-*(*是其对应的版本号):在platforms文件夹里面放的是开发的平台,如android-1

Android开发屏幕适配知识点

1.了解几个概念 (1)分辨率.分辨率就是手机屏幕的像素点数,一般描述成屏幕的"宽×高",安卓手机屏幕常见的分辨率有480×800.720×1280.1080×1920等.720×1280表示此屏幕在宽度方向有720个像素,在高度方向有1280个像素. (2)屏幕大小.屏幕大小是手机对角线的物理尺寸,以英寸(inch)为单位.比如某某手机为"5寸大屏手机",就是指对角线的尺寸,5寸×2.54厘米/寸=12.7厘米. (3)密度(dpi,dots per inch:或

Android布局 屏幕滚动方法 ScrollView

ScrollView标签要放到最外层,事例: <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match