【Android】7.6 FrameLayout(帧布局)
分类: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(帧布局)的更多相关文章
- Android中的FrameLayout帧布局
帧布局由FrameLayout所代表,FrameLayout直接继承了ViewGoup组件. 帧布局容器为每一个增加当中的组件创建一个空白的区域(称为一个帧),每一个子组件占领一帧,这些帧都会依据gr ...
- android布局 FrameLayout(帧布局)详解
看到一篇很有趣的文章对我就是冲着萌妹子看的 FrameLayout(帧布局) 前言 作为android六大布局中最为简单的布局之一,该布局直接在屏幕上开辟出了一块空白区域, 当我们往里面添加组件的时候 ...
- Android精通:TableLayout布局,GridLayout网格布局,FrameLayout帧布局,AbsoluteLayout绝对布局,RelativeLayout相对布局
在Android中提供了几个常用布局: LinearLayout线性布局 RelativeLayout相对布局 FrameLayout帧布局 AbsoluteLayout绝对布局 TableLayou ...
- Android零基础入门第30节:两分钟掌握FrameLayout帧布局
原文:Android零基础入门第30节:两分钟掌握FrameLayout帧布局 前面学习了线性布局.相对布局.表格布局,那么本期来学习第四种布局--FrameLayout帧布局. 一.认识FrameL ...
- Android之FrameLayout帧布局
1.简介 这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角; 帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看 ...
- FrameLayout帧布局
一.FrameLayout(帧布局)重点: FrameLayout(帧布局)可以说是五大布局中最为简单的一个布局,这个布局会默认把控件放在屏幕上的左上角的区域,后续添加的控件会覆盖前一个,如果控件的大 ...
- android的布局-----FrameLayout(帧布局)
(-)帧布局简介 帧布局容器为每个加入的其中的组件创建一个空白的区域称为一帧每个子组件占据一帧,这些帧都会根据gravity的属性执行自动对齐 (二)属性 foreground:这是帧布局的前景图像 ...
- Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片
场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...
- Android UI基础之五大布局
Android UI基础之五大布局 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Andro ...
- 第24讲 UI_布局 之帧布局 表格布局 绝对布局
第24讲 UI_布局 之帧布局 表格布局 绝对布局 3. FrameLayout(帧布局) 帧布局是从屏幕的左上角(0,0)坐标开始布局,多个组件层叠排序,后一个组件总会将前一个组件所覆盖,除非最后一 ...
随机推荐
- WebService SOAP、Restful和HTTP(post/get)请求区别
web service(SOAP) Webservice的一个最基本的目的就是提供在各个不同平台的不同应用系统的协同工作能力. Web service 就是一个应用程序,它向外界暴露出一个能够通过We ...
- PyQt5教程——介绍(1)
PyQt5教程阅读须知 “PyQt5教程”系列若不做明显提示,默认翻译自zetcode. 有需要翻译精度的朋友可以自行阅读英文文档. 如果本系列博文侵犯了您的合法权益,请在博客中留下评论或联系:che ...
- Tkinter教程之Text篇(1)
from Tkinter import *root = Tk()t = Text() for i in range(1,10): t.insert(1.0,'0123456789\n')a = 'te ...
- Eclipse Console 加大显示的行数和禁止错误弹出
在 Preferences-〉Run/Debug-〉Console里边,去掉对Limit console output的选择,或者选择,设置一下buffer size的设定值 禁止弹出: Prefer ...
- Windows I/O完成端口
内容: 1.基本概念 2.WINDOWS完成端口的特点 3.完成端口(Completion Ports )相关数据结构和创建 4.完成端口线程的工作原理 5.Windo ...
- ORACLE—005:创建JOB(一)
JOB在实际应用中.使用非常多.一般用户定时运行某些函数,存储过程等. 以下看看怎样创建并启动JOB. 比如,使用job定时运行某个存储过程. 存储过程名:Pro_Test_JOB 运行间隔:2小时, ...
- ContactsContract.Contacts之sort_key
// 从Contacts表中找出所有联系人 Cursor cursor = context.getContentResolver().query( ContactsContract.C ...
- php新特性:trait 关键字使用
1.trait关键字:含义[特性] 1.1 和require include 区别: 后两者需要 实例化一个类或者静态调用,而trait相当于继承,但又不是extends关键字,它解决了单继承. 2. ...
- 如何使用Dockerfile构建Tomcat镜像并部署war
我们都知道Docker构建一个镜像有两种方式: 使用`docker commit`命令 使用`Dockerfile`文件和`docker build`命令 那么这两种方式有何区别呢? 相同点:底层实现 ...
- 【转载】@RequestMapping的分类
@RequestMapping的分类 类级别的和方法级别的@RequestMapping的几种形式: @RequestMapping(method = RequestMethod.GET) @Req ...