分类: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. 【CSS】瀑布流布局的两种方式:传统多列浮动和绝对定位布局

    传统多列浮动 各列固定宽度,并且左浮动: 一列中的数据块为一组,列中的每个数据块依次排列即可: 更多数据加载时,需要分别插入到不同的列上: 优点: (1)布局简单,应该说没啥特别的难点: (2)不用明 ...

  2. 改进版高速排序(平均复杂度O(NlogN))

    #include<iostream> using namespace std; #define MAXSIZE 21 typedef int SqList[MAXSIZE]; #defin ...

  3. iOS CGRectGetMaxX/Y 使用

    在iOS的界面布局中我们能够使用CGRectGetMaxX 这种方法来方便的获取当前控件的x坐标值+宽度的数值.这样便能够方便布局. 同理CGRectGetMaxY是获取y坐标值+控件高度的值,当然这 ...

  4. webpack 处理CSS

    1.安装插件 npm i style-loader css-loader --save-dev npm i postcss-loader --save-dev npm i autoprefixer - ...

  5. struts2接收参数的几种形式

    1.使用属性 HTML: <form action="login" method="post" name="form1"> 用户 ...

  6. 创建安全的基于HTTP的api应用接口

    #http://my.oschina.net/xiangtao/blog/196211 #要创建安全的基于HTTP的api接口,最重要的是要在服务端的进行请求的认证. #如何进行有效的服务端验证呢? ...

  7. office-word去掉效验红色的波浪线

         工作中,总是能发现不足.能再次学习到知识和经验!

  8. 如何在 Linux 下调试动态链接库

    大家都知道在 Linux 可以用 gdb 来调试应用程序,当然前提是用 gcc 编译程序时要加上 -g 参数.我这篇文章里将讨论一下用 gdb 来调试动态链接库的问题. 首先,假设我们准备这样的一个动 ...

  9. 【环境配置】配置ndk

    1. 背景 Android平台从诞生起,就已经支持C.C++开发. 众所周知,Android的SDK基于Java实现.这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言.但这 ...

  10. jQuery:用 lightTreeview 实现树形分类菜单的功能 展开收缩分类代码

    最近在做前端开发项目中,需要用到树形结构.在网上查阅到了许多相应资源.其中觉得lightTreeview是一款非常不错的JQ树形分类菜单代码,结构简单,支持多级.还有详细的参数可以配置,以实现各种效果 ...