分类:C#、Android、VS2015;

创建日期:2016-02-11

一、简介

帧布局是显示多个层次图的有效手段。比如第3章介绍的百度地图就是利用帧布局来实现的,它将图层分为22级分别缓存到指定的文件夹下,程序根据用户对地图的放大程度,自动判断应该将哪一级作为最顶层的图层。另外,地图覆盖物功能也是利用它来实现的。

帧布局的特点是:所有元素都会从容器的左上角开始放置,第一个添加的元素被放在最底层,最后一个添加的元素放在在最顶层。默认情况下,上一层的元素会覆盖下一层的元素,除非不同层元素的大小不一样(其效果是部分覆盖),或者顶层的元素是透明的。

具体来说,对于不透明度为1(范围0.0~1.0,1为完全完全不透明)的元素,可进一步细分为:

(1)如果下层元素和上层元素的宽高都相同,则上层元素将完全覆盖下层元素。

(2)如果下层元素大,上层元素小,则上层元素仅部分覆盖下层元素。

二、示例—Demo05FrameLayout

本示例简单演示3个图层的情况:

第0层:img1.jpg

第1层:img2.jpg

第2层:img3.jpg

每单击一次【下一层】按钮,都会将图层减1,然后显示对应层的图。当减到第0层时,变为第2层,依次循环。

注意:该示例仅为了演示图层覆盖的情况(默认都可见,但仅顶层可看到),例子并没有处理如何缓存图片的问题。

1、运行截图

2、添加Demo05FrameLayout.axml文件

在Resources/layout文件夹下添加该文件。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/image1"
android:src="@drawable/sample_2"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<ImageView
android:id="@+id/image2"
android:src="@drawable/sample_4"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<ImageView
android:id="@+id/image3"
android:src="@drawable/sample_6"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<Button
android:id="@+id/btnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一层"
android:layout_gravity="center_horizontal" />
</FrameLayout>

3、添加Demo05FrameLayout.cs文件

在SrcDemos文件夹下添加该文件。

using System.Collections.Generic;
using Android.App;
using Android.OS;
using Android.Views;
using Android.Widget;
namespace ch07demos.SrcDemos
{
[Activity(Label = "Demo05FrameLayout")]
public class Demo05FrameLayout : Activity
{
List<ImageView> images = new List<ImageView>();
int current;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Demo05FrameLayout); images.Add(FindViewById<ImageView>(Resource.Id.image1));
images.Add(FindViewById<ImageView>(Resource.Id.image2));
images.Add(FindViewById<ImageView>(Resource.Id.image3));
current = images.Count - ;
FindViewById<Button>(Resource.Id.btnNext).Click +=delegate
{
images[current].Visibility = ViewStates.Invisible;
current--;
if (current < ) current = images.Count - ;
images[current].Visibility = ViewStates.Visible;
};
}
}
}

【Android】7.6 FrameLayout(帧布局)的更多相关文章

  1. Android中的FrameLayout帧布局

    帧布局由FrameLayout所代表,FrameLayout直接继承了ViewGoup组件. 帧布局容器为每一个增加当中的组件创建一个空白的区域(称为一个帧),每一个子组件占领一帧,这些帧都会依据gr ...

  2. android布局 FrameLayout(帧布局)详解

    看到一篇很有趣的文章对我就是冲着萌妹子看的 FrameLayout(帧布局) 前言 作为android六大布局中最为简单的布局之一,该布局直接在屏幕上开辟出了一块空白区域, 当我们往里面添加组件的时候 ...

  3. Android精通:TableLayout布局,GridLayout网格布局,FrameLayout帧布局,AbsoluteLayout绝对布局,RelativeLayout相对布局

    在Android中提供了几个常用布局: LinearLayout线性布局 RelativeLayout相对布局 FrameLayout帧布局 AbsoluteLayout绝对布局 TableLayou ...

  4. Android零基础入门第30节:两分钟掌握FrameLayout帧布局

    原文:Android零基础入门第30节:两分钟掌握FrameLayout帧布局 前面学习了线性布局.相对布局.表格布局,那么本期来学习第四种布局--FrameLayout帧布局. 一.认识FrameL ...

  5. Android之FrameLayout帧布局

    1.简介 这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角; 帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看 ...

  6. FrameLayout帧布局

    一.FrameLayout(帧布局)重点: FrameLayout(帧布局)可以说是五大布局中最为简单的一个布局,这个布局会默认把控件放在屏幕上的左上角的区域,后续添加的控件会覆盖前一个,如果控件的大 ...

  7. android的布局-----FrameLayout(帧布局)

    (-)帧布局简介 帧布局容器为每个加入的其中的组件创建一个空白的区域称为一帧每个子组件占据一帧,这些帧都会根据gravity的属性执行自动对齐 (二)属性 foreground:这是帧布局的前景图像 ...

  8. Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片

    场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...

  9. Android UI基础之五大布局

    Android  UI基础之五大布局 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Andro ...

  10. 第24讲 UI_布局 之帧布局 表格布局 绝对布局

    第24讲 UI_布局 之帧布局 表格布局 绝对布局 3. FrameLayout(帧布局) 帧布局是从屏幕的左上角(0,0)坐标开始布局,多个组件层叠排序,后一个组件总会将前一个组件所覆盖,除非最后一 ...

随机推荐

  1. wepy - 与原生有什么不同(app.js和app.wpy比较)

    app.js和app.wpy有什么不同呢? 答.app.wpy单文件包含了app.wxss\app.js\app.json\app.wxml app.js App({ /** * 当小程序初始化完成时 ...

  2. gradle 添加jar依赖,执行grade build时出现“程序包不存在”问题

    引用的第三方依赖的包都找不到了 解决办法 group'com.suneony' version'1.0.0' apply plugin:'java' repositories { mavenLocal ...

  3. 在LinuxMint中对firefox进行手动安装flash插件

    /*********************************************************************  * Author  : Samson  * Date   ...

  4. 〖Linux〗Android NDK调用已编译好的C/C++动态连接库(so文件)

    一.背景:假定已有应用程序zigbeeclient.cpp,内容如下: ... extern "C" { int getresult(int argc, char **argv); ...

  5. java中相同名字不同返回类型的方法

    这种名字相同返回类型不同的方法,在同一个类中是无法共存的,不论是继承过来的方法,还是多实现过来的方法,在一个类内都无法共存.名字确定了,你能改的只有参数(重载).

  6. java 和 C 代码运行效率的比较(整理)

    最近和朋友无意间讨论起了 有关java 和C 的 效率问题, (我是java 推介者, 他是 c 语言推介者, 他做的是嵌入式) 故,想通过网络查询一下, 总结一下,两者到底效率如何,其有何差异,原因 ...

  7. 1038. Recover the Smallest Number (30)

    题目链接:http://www.patest.cn/contests/pat-a-practise/1038 题目: 1038. Recover the Smallest Number (30) 时间 ...

  8. VC6.0 +WDK 开发驱动的环境配置

    前段时间,系统偶感风寒,挂掉了,苦于又没有备份过,只有重装了.原来开发驱动的环境是VC6+DDK+DriverStudio3.2,当时配置的时候就花了好一阵功夫,也没有彻底搞清楚.现在要重装了,决定改 ...

  9. 用zd1211+Ubuntu 10.04实现的AP

    [日期:2010-06-24]   zd1211 在Ubuntu 10.04 LTS上的master mode 的问题解决之后,理论上就可以把zd1211 USB网卡用来做一个AP了,实际上还有几个问 ...

  10. javascript书籍推荐

    本文转自:http://blog.csdn.net/yangnihaozan/article/details/48294545 在当下,极多的程序员是通过自学来完成入门以及提升的.对于JavaScri ...