×

android layout布局

android layout布局(如何让Android自适应不同分辨率或不同屏幕大小的layout布局)

admin admin 发表于2024-01-04 17:19:49 浏览36 评论0

抢沙发发表评论

各位老铁们好,相信很多人对android layout布局都不是特别的了解,因此呢,今天就来为大家分享下关于android layout布局以及如何让Android自适应不同分辨率或不同屏幕大小的layout布局的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

本文目录

如何让Android自适应不同分辨率或不同屏幕大小的layout布局

一:不同的layout Android手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。 二:hdpi、mdpi、ldpi 在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。 drawable- hdpi、drawable- mdpi、drawable-ldpi的区别: (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854) (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480) (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320) 系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。 更正:应该是对应不同density 的图片 在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。 屏幕方向: 横屏竖屏自动切换: 可以在res目录下建立layout-port-800x600和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,这样在手机屏幕方向变化的时候系统会自动调用相应的布局文件,避免一种布局文件无法满足两种屏幕显示的问题。 不同分辨率横屏竖屏自动切换: 以800x600为例 可以在res目录下建立layout-port-800x600和layout-land-800x600两个目录 不切换: 以下步骤是网上流传的,不过我自己之前是通过图形化界面实现这个配置,算是殊途同归,有空我会把图片贴上来。 还要说明一点:每个activity都有这个属性screenOrientation,每个activity都需要设置,可以设置为竖屏(portrait),也可以设置为无重力感应(nosensor)。 要让程序界面保持一个方向,不随手机方向转动而变化的处理办法: 在AndroidManifest.xml里面配置一下就可以了。加入这一行android:screenOrientation="landscape"。 例如(landscape是横向,portrait是纵向): Java代码: 《?xml version="1.0" encoding="utf-8"?》 ***隐藏网址*** package="com.ray.linkit" android:versionCode="1" android:versionName="1.0"》 《application android:icon="@drawable/icon" android:label="@string/app_name"》 《activity android:name=".Main" android:label="@string/app_name" android:screenOrientation="portrait"》 《intent-filter》 《action android:name="android.intent.action.MAIN" /》 《category android:name="android.intent.category.LAUNCHER" /》 《/intent-filter》 《/activity》 《activity android:name=".GamePlay" android:screenOrientation="portrait"》《/activity》 《activity android:name=".OptionView" android:screenOrientation="portrait"》《/activity》 《/application》 《uses-sdk android:minSdkVersion="3" /》 《/manifest》 另外,android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置,那样,进行中的游戏就不会自动重启了! 有的程序适合从竖屏切换到横屏,或者反过来,这个时候怎么办呢?可以在配置Activity的地方进行如下的配置android:screenOrientation="portrait"。这样就可以保证是竖屏总是竖屏了,或者landscape横向。 而有的程序是适合横竖屏切换的。如何处理呢?首先要在配置Activity的时候进行如下的配置:android:configChanges="keyboardHidden|orientation",另外需要重写Activity的 onConfigurationChanged方法。实现方式如下,不需要做太多的内容: @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { // land do nothing is ok } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { // port do nothing is ok } } 写一个支持多分辨的程序,基于1.6开发的,建立了三个资源文件夹drawable-hdpi drawable-mdpi drawable-ldpi,里面分别存放72*72 48*48 36*36的icon图标文件。当我在G1(1.5的系统)上测试时,图标应该自适应为48*48才对啊,但实际显示的是36*36。怎么才能让其自适应 48*48的icon图标呢 解决办法 drawable-hdpi drawable-mdpi drawable-ldpi改成drawable-480X320 drawable-800X480的多分辨支持的文件夹

Android布局问题,Fragmentlayout

现在都不用tabhost了,使用tablayout+viewpager,下面这个截图就是用这个开发的。

请先看framelayout的截图:

例子来自android学习手册,360手机助手中可以下载,里面有108个android例子,源码文档都可在里面看,下面是截图

FrameLayout框架布局是最简单的布局形式。所有添加到这个布局中的视图都以层叠的方式显示。第一个添加的控件被放在最底层,最后一个添加到框架布局中的视图显示在最顶层,上一层的控件会覆盖下一层的控件。这种显示方式有些类似于堆栈。

当我们往里面添加组件的时候,所有的组件都会放置于这块区域的左上角;

帧布局的大小由子控件中最大的子控件决定,如果都组件都一样大的话,同一时刻就只能看到最上面的那个组件了。

1 layout_gravity

      FrameLayout根本无法控制他的子控件的位置,子控件可以通过Android:layout_gravity属性来控制自己在父控件中的位置,从而制定组件的对其方式。

2 layout_margin

        FrameLayout布局里面的控件单独设置layout_margin类的属性没有效果。FrameLayout中的控件layout_margin设置要依赖layout_gravity属性,否则layout_margin设置无效。layout_gravity有好几个值可以设置,具体要设置哪一个呢?其实layout_gravity可以理解为设置控件的参考点,控件最终显示位置最终由layout_gravity和layout_margin共同决定。

  如果想要控件正常显示,可以将控件的layout_gravity设置为top,以屏幕左上角为参考点。

3 前景图像:

       永远处于帧布局最顶的,直接面对用户的图像,,就是不会被覆盖的图片

常用属性:

   android:foreground:设置该帧布局容器的前景图像

     android:foregroundGravity:设置前景图像显示的位置

帧布局在游戏开发方面用的比较多。当你需要自己写一个View的时候,在View里面已经完成了你的逻辑(例如游戏^_^),那么这个View只需要一个容器放置,就可以使用FrameLayout了。虽然用其他的布局也可以,但是用最简单的不是更省系统资源么。

Android几种layout(布局)的区别

Android几种layout(布局)的区别 1.FrameLayout:children按照从左上开始的顺序排列,主要用于tabed view或者图片切换功能;最简单的布局模型,在这种布局下每个添加的子控件都被放在布局的左上角,并覆盖在前一子控件的上层。 2.线性布局(LinearLayout):children排列成一行多列或者一列多行的形式,应该是应用程序中最常用的布局方式,它提供了控件水平或者垂直排列的模型,同时我们可通过设置子控件的weight布局参数控制各个控件在布局中的相对大小。 android:orientation="vertical"使linearlayout里面的东西一行一行排列。3.相对布局(RelativeLayout):children是相互之间相关位置或者和他们的parent位置相关,参照控件可以是父控件,也可以是其他子控件,但被参照的控件必须要在参照它的控件之前定义。相对布局模型所涉及的属性设置比较多,但并不复杂。 4.TableLayout:children按照行列的排序,类似于html的table;模型以行列的形式管理子控件,每一行为一个TableRow的对象,也可为一个View的对象。TableRow可添加子控件,每添加一个子控件为一列。 5.坐标布局(AbsoluteLayout)的子控件需要指定相对于此坐标布局的横、纵坐标值,否则将会像FrameLayout那样被排在左上角。手机应用需要适用于不同的屏幕大小,而这种布局模型不能自适应屏幕尺寸大小,所以应用得相当少。

Android中常用的五种布局

常用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。 LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )

android coordinatorlayout怎么布局

CoordinatorLayout1、app:layout_scrollFlags (子布局设置是否可滑动)2、android:layout_gravity 属性控制组件在布局中的位置3、app:layout_behavior="@string/appbar_scrolling_view_behavior" 通知布局中包含滑动组件!4、app:layout_scrollFlags是一个重要的属性 子布局通过此确定是否可滑动.给需要滑动的组件设 置app:layout_scrollFlags="scroll|enterAlways"属性。设置的layout_scrollFlags有如下几种选项:(1) scroll: 所有想滚动出屏幕的view都需要设置这个flag- 没有设置这个flag的view将被固定在屏幕顶部。(2)enterAlways:这个flag让任意向下的滚动都会导致该view变为可见,启用快速“返回模式”。(3)enterAlwaysCollapsed:当你的视图已经设置minHeight属性又使用此标志时,你的视图只能已最小高度进入,只有当滚动视图 到达顶部时才扩大到完整高度。(4)exitUntilCollapsed: 滚动退出屏幕,最后折叠在顶端。

android 一个activity是不是对应一个layout布局

不是Activity是android的一个重要组件,主要负责和用户交互部分,有自己的生命周期,在其上可以布置按钮,文本框等各种控件,简单来说就是Android的UI部分。只能说一般情况下会指定一个layout布局,通常是定义在layout文件夹下.xml文件。也可以是一个具体的View视图。也可以什么都不加,也不会出错,仅仅一片黑。

OK,关于android layout布局和如何让Android自适应不同分辨率或不同屏幕大小的layout布局的内容到此结束了,希望对大家有所帮助。