FrameLayout是五大布局中最简单的一个布局。

在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置。

它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。

显示效果如下,第一个TextView被第二个TextView完全遮挡,第三个TextView遮挡了第二个TextView的部分位置。

我们可以利用这个FrameLayout布局的特性实现一个简单的霓虹灯效果。

Activity代码

  1. package com.app.test01;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.os.Handler;
  6. import android.view.View;
  7.  
  8. public class FrameLayoutActivity extends Activity implements Runnable{
  9. //定义5个颜色值
  10. private int[] colors = new int[]{0xFFFF0000,0xFF0000FF,0xFF00FFFF,0xFFFF00FF,0xFF00FF00};
  11. //每一个颜色值的索引
  12. private int[] nextColorPoints = new int[]{1,2,3,4,0};
  13. //当前值的索引
  14. private int currentColorPoint = 0;
  15. private View[] views;
  16. private Handler handler;
  17. @Override
  18. protected void onCreate(Bundle savedInstanceState) {
  19. // TODO Auto-generated method stub
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.activity_frame);
  22. views = new View[]{findViewById(R.id.textView5),findViewById(R.id.textView4),
  23. findViewById(R.id.textView3),findViewById(R.id.textView2),findViewById(R.id.textView1)};
  24. handler = new Handler();
  25. handler.postDelayed(this, 300);
  26. }
  27.  
  28. @Override
  29. public void run() {
  30. // TODO Auto-generated method stub
  31. int nextColorPoint = currentColorPoint;
  32. for (int i = views.length-1; i>=0; i--) {
  33. views[i].setBackgroundColor(colors[nextColorPoint]);
  34. nextColorPoint = nextColorPoints[nextColorPoint];
  35. }
  36. currentColorPoint++;
  37. if (currentColorPoint == 5) {
  38. currentColorPoint = 0;
  39. }
  40. handler.postDelayed(this, 300);
  41. }
  42. }

布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent" >
  5.  
  6. <TextView
  7. android:id="@+id/textView1"
  8. android:layout_width="300dp"
  9. android:layout_height="300dp"
  10. android:text="TextView"
  11. android:layout_gravity="center"/>
  12.  
  13. <TextView
  14. android:id="@+id/textView2"
  15. android:layout_width="240dp"
  16. android:layout_height="240dp"
  17. android:text="TextView"
  18. android:layout_gravity="center"/>
  19.  
  20. <TextView
  21. android:id="@+id/textView3"
  22. android:layout_width="180dp"
  23. android:layout_height="180dp"
  24. android:text="TextView"
  25. android:layout_gravity="center"/>
  26.  
  27. <TextView
  28. android:id="@+id/textView4"
  29. android:layout_width="120dp"
  30. android:layout_height="120dp"
  31. android:text="TextView"
  32. android:layout_gravity="center"/>
  33.  
  34. <TextView
  35. android:id="@+id/textView5"
  36. android:layout_width="60dp"
  37. android:layout_height="60dp"
  38. android:text="TextView"
  39. android:layout_gravity="center"/>
  40.  
  41. </FrameLayout>

效果图

【Android】使用FrameLayout布局实现霓虹灯效果的更多相关文章

  1. android实例2:FrameLayout布局之霓虹灯

    个人网站http://www.ravedonut.com/ layout xml <FrameLayout xmlns:android="http://schemas.android. ...

  2. Android学习笔记:FrameLayout布局基础

    FrameLayout布局的特点是:所有放在布局里的视图组件,都按照层次堆叠在屏幕的左上角,后面的视图组件覆盖前面的. 当然,组件本身是可以控制自己的内部布局的. 一种常见的场景是可以在FrameLa ...

  3. 商城项目实战 | 1.1 Android 仿京东商城底部布局的选择效果 —— Selector 选择器的实现

    前言 本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 京东商城的底部布局的选择效果看上去很复杂,其实很简单,这主要是要 ...

  4. Android 继承framelayout,实现ScrollView 和 HorizontalScrollView 的效果

    有些项目,需要让控件或者布局进行水平和垂直同时能拖拽,当然,ScrollView 和 HorizontalScrollView 的结合写法是一种写法.但是,这么写用户体验效果不佳,会有迟钝感,因此推荐 ...

  5. android小Demo--七彩霓虹灯效果

    七彩霓虹灯效果,基于网上的小Demo进行修改. 在android项目values文件夹下创建文件colors.xml,配置七种颜色: <?xml version="1.0" ...

  6. Android中的沉浸式状态栏效果

    无意间了解到沉浸式状态栏,感觉贼拉的高大上,于是就是试着去了解一下,就有了这篇文章.下面就来了解一下啥叫沉浸式状态栏.传统的手机状态栏是呈现出黑色条状的,有的和手机主界面有很明显的区别.这一样就在一定 ...

  7. Android组件---四大布局的属性详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4372222.html Android常见布局有下面几种: LinearL ...

  8. 14.Android之Layout布局学习

    Android布局主要有5种,接下来学习总结下. 1) 最常见的线性布局 LinearLayout 线性布局是Android布局中最简单的布局,也是最常用,最实用的布局. android:orient ...

  9. Android中的布局优化方法

    http://blog.csdn.net/rwecho/article/details/8951009 Android开发中的布局很重要吗?那是当然.一切的显示样式都是由这个布局决定的,你说能不重要吗 ...

随机推荐

  1. C#使用自定义字体(从文件获取)

    在进行软件开发,尤其是开发WinForm程序时,有时为了实现界面的美化,不可避免的需要使用一些特殊的字体,但是在开发完成之后,将程序移到其他的机器上时,由于这些机器可能没有安装相应的字体,所以整个界面 ...

  2. UNION ALL

    select field1,field2,field3,field4 from table1 where ... UNION ALL select field1,field2,field3,field ...

  3. C#实现防拷贝工具示例

    思路是用加密程序 对硬盘号,cpu号和MAC号取出字符串并加密 产生一个序列号 每次程序启动后重新产生这个序列号并比对,如果一致则验证通过 using System;using System.Coll ...

  4. C#使用seleium实现一个自动登录器

    1.http://docs.seleniumhq.org/ 下载seleium包 2.新建一个C#项目,比如控制台,引用seleium包中的dll using System; using System ...

  5. Linux 与 unix shell编程指南——学习笔记

    第一章    文件安全与权限 文件访问方式:读,写,执行.     针对用户:文件属主,同组用户,其它用户.     文件权限位最前面的字符代表文件类型,常用的如         d 目录:l 符号链 ...

  6. Qt调用外部程序QProcess通信

    mainwindow.cpp文件: -------------------------------- #include "mainwindow.h" #include " ...

  7. SqlServer排序(null值,和非空值排列顺序)

    项目中遇到一个问题,需要设置序号排序,而该字段中的默认值为空,使用普通排序,空值就会在最前边.可以使用如下语句:   其中 col 为 排序的字段名称. then 0 else 1 代表先空值,后数字 ...

  8. js倒计时 重发 效果

    <script type="text/javascript"> window.onload = function() { var wait = 60; function ...

  9. tp中u方法的使用

    自学的时候都没怎么使用过该方法,现在刚进入一个新公司参加项目.发现这个方法用的很多,所以记录下来防止以后忘了. U方法用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的U ...

  10. 【4】项目结构+基本的Tornado服务

    项目地址: Blog 简单的tornado服务分支: simple 项目结构 创建对应的文件夹并测试一个最简单的功能 main.py #!/usr/bin/env python # coding:ut ...