1.请说出Android中的五种布局,并介绍作用?

  • FrameLayout(堆栈布局),层叠方式显示,类似于PhotoShop上的层叠图层。
  • LinearLayout(线性布局),将视图以水平或者垂直方式显示。
  • RelativeLayout(相对布局),通过确定两个视图的相对位置进行布局。
  • TableLayout(表格布局),将视图以表格的形式排列。
  • AbsoluteLayout(绝对布局),设置View的绝对坐标。
  • GridLayout(网格布局),和TableLayout布局相似。

2.xmlns:android的值可以任意设置吗?

  • xmlns:android是一个命名空间。
  • 它的值需要以 http://schemas.android.com/apk/res开头
  • android是可以替换的,需要自定义一个attrs.xml文件,然后根据配置变量,即可通过命名空间使用。

3.在RelativeLayout中有一个Button,确定相对于手机屏幕的位置坐标?

  View view=findViewById(R.id.button1);

  int[] locations=new int[2];

  view.getLocationOnScreen(locations);

  int x=locations[0];

  int y=locations[1];

4.如何用Java代码设置组件的值?

  • 需要一个LayoutParams对象
  • 通过LayoutParams的一个addRule方法来设置属性的值

5.如何将布局存成图像?

  • view.setDrawingCacheEnabled方法打开图像缓存
  • view.getDrawingCache获取Bitmap对象
  • Bitmap.compress保存图像
  • 注意:首先需要调用measure和layout方法才能成功获取Bitmap对象。

6.设置渐变背景色的方法?

  • 使用GradientDrawable
  • 渐变的图像来渲染窗口背景

7.如何理解android:layout_weight属性?

  • 用于设置组件的重要程度
  • 重要程度越高,值越低

8.对于android:layout_gravity怎么理解的呢?

  • android:layout_gravity属性指定了当前View在父View中的位置
  • android:layout_gravity属性在水平线性布局中时,值为center不起作用

9.如何重用布局文件?

  • 采用include标签
  • <include android:id="@+id/layout1" layout="layout/mylayout">

10.顶层布局使用FrameLayout好不好?

  • 这是多余的,系统会自动生成一个FrameLayout标签
  • 可以用<merge>代替,merge不会生成任何节点

11.如何查看apk文件中的布局文件源代码呢?

  • 反编译工具
  • 使用AXMLPrinter2工具对XML文件反编译

Android面试收集录 Android布局的更多相关文章

  1. Android面试收集录 Android入门

    1.Android的特点有哪些? 编程语言是Java或Kotlin,Android中的Java字节码是允许在Dalvik虚拟机上的 支持4大组件 Android内置了WebKit核心的浏览器,支持H5 ...

  2. Android面试收集录 Android系统的资源+其他

    1.Android应用程序的资源是如何存储的,如何使用? res文件夹或者assets文件夹 res目录中的资源在R类中生成一个int变量,然后再布局文件中可以直接使用,在代码中,要getResour ...

  3. Android面试收集录 Android组件

    1.请说出Android SDK支持哪些方式显示富文本信息? 使用TextView组件可以显示富文本信息,如果要实现图文混排,需实现ImageGetter接口 使用WebView组件显示HTML页面 ...

  4. Android面试收集录11 Window+Activity+DecorView+ViewRoot之间的关系

    一.职能简介 Activity Activity并不负责视图控制,它只是控制生命周期和处理事件.真正控制视图的是Window.一个Activity包含了一个Window,Window才是真正代表一个窗 ...

  5. Android面试收集录4 Fragment详解

    1.什么是Fragment? 你可以简单的理解为,Fragment是显示在Activity中的Activity. 它可以显示在Activity中,然后它也可以显示出一些内容. 因为它拥有自己的生命周期 ...

  6. Android面试收集录16 Android动画总结

    一.Android 动画分类 总的来说,Android动画可以分为两类,最初的传统动画和Android3.0 之后出现的属性动画: 传统动画又包括 帧动画(Frame Animation)和补间动画( ...

  7. Android面试收集录14 Android进程间通信方式

    一.使用 Intent Activity,Service,Receiver 都支持在 Intent 中传递 Bundle 数据,而 Bundle 实现了 Parcelable 接口,可以在不同的进程间 ...

  8. Android面试收集录10 LruCache原理解析

    一.Android中的缓存策略 一般来说,缓存策略主要包含缓存的添加.获取和删除这三类操作.如何添加和获取缓存这个比较好理解,那么为什么还要删除缓存呢?这是因为不管是内存缓存还是硬盘缓存,它们的缓存大 ...

  9. Android面试收集录9 IntentService详解

    一. 定义 IntentService是Android里面的一个封装类,继承自四大组件之一的Service. 二.作用 处理异步请求,实现多线程 三. 工作流程 注意:若启动IntentService ...

随机推荐

  1. 浅谈 ECMAScript 和 JavaScript

    ES5与ES3基本保持兼容,较大的语法修正和新功能加入,将由JavaScript.next完成. 什么是ECMAScript?http://baike.baidu.com/link?url=G1T8n ...

  2. 【起航计划 013】2015 起航计划 Android APIDemo的魔鬼步伐 12 App->Activity->SetWallpaper 设置壁纸 WallpaperManager getDrawingCache使用

    SetWallpaper介绍如何在Android获取当前Wallpaper,对Wallpaper做些修改,然后用修改后的图像重新设置Wallpaper.(即设置>显示>壁纸>壁纸的功 ...

  3. Swagger2:常用注解说明

    Swagger2常用注解说明 Spring Boot : Swagger 2使用教程:https://www.cnblogs.com/JealousGirl/p/swagger.html 这里只讲述@ ...

  4. 使用sqlyog连接ubuntu mysql server错误解决方案

    现在很多服务都部署在linux环境中,但是在开发阶段,使用windows远程连接工具,直观,这对开发人员更友好. 下面是我在ubuntu16.04使用mysql- server时,遇到了一下的问题,以 ...

  5. HCNA配置RIPv1

    1.拓扑图 2.配置 R1 The device is running! ###### <Huawei>sys Enter system view, return user view wi ...

  6. javascript代码工具库

    1. 垃圾收集 另一个块作用域非常有用的原因和闭包及回收内存垃圾的回收机制相关.这里简要说明一 下,而内部的实现原理,也就是闭包的机制会在第 5 章详细解释. 考虑以下代码: function pro ...

  7. 笨办法学Python(三十六)

    习题 36: 设计和调试 现在你已经学会了“if 语句”,我将给你一些使用“for 循环”和“while 循环”的规则,一面你日后碰到麻烦.我还会教你一些调试的小技巧,以便你能发现自己程序的问题.最后 ...

  8. s7nodave用于上位机连接西门子PLC,开源项目epics

    s7nodave 可以看作是Prodave的开源替代者,在PLC侧,不需要编程 This device support does not require any special programming ...

  9. SSH连接linux时,长时间不操作就断开的解决方案(增强版)

    1.第一次尝试失败 修改/etc/ssh/sshd_config文件, 找到 ClientAliveInterval 0 ClientAliveCountMax 3 并将注释符号("#&qu ...

  10. 【洛谷P3390】矩阵快速幂

    矩阵快速幂 题目描述 矩阵乘法: A[n*m]*B[m*k]=C[n*k]; C[i][j]=sum(A[i][1~n]+B[1~n][j]) 为了便于赋值和定义,我们定义一个结构体储存矩阵: str ...