这个程序的主要思想就是在一个FrameLayout中定义多个TextView,分别设置不同的背景色。因为帧布局的特性,所以这些控件都是叠加起来的。然后,通过定时器循环给handler发送消息,改变控件的背景色。最后就能实现霓虹灯的效果了,本实例不怎么实用,仅仅能做一般练习而已。

布局文件

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
> <!-- 先定义的TextView在下面,后定义的在上面 -->
<TextView
android:id="@+id/textView01_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="320dp"
android:height="320dp"
android:layout_gravity="center"
android:background="#f00"/> <TextView
android:id="@+id/textView02_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="280dp"
android:height="280dp"
android:layout_gravity="center"
android:background="#0f0"/> <TextView
android:id="@+id/textView03_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="240dp"
android:height="240dp"
android:layout_gravity="center"
android:background="#00f"/> <TextView
android:id="@+id/textView04_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="200dp"
android:height="200dp"
android:layout_gravity="center"
android:background="#ff0"/> <TextView
android:id="@+id/textView05_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="160dp"
android:height="160dp"
android:layout_gravity="center"
android:background="#f0f"/> <TextView
android:id="@+id/textView06_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="120dp"
android:height="120dp"
android:layout_gravity="center"
android:background="#0ff"/> </FrameLayout>

values中的

color.xml

<resources>
<color name="color01">#f00</color>
<color name="color02">#0f0</color>
<color name="color03">#00f</color>
<color name="color04">#ff0</color>
<color name="color05">#f0f</color>
<color name="color06">#0ff</color> </resources>

MainActivity.java

package com.kale.framelayout;

import java.util.Timer;
import java.util.TimerTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.widget.TextView; public class MainActivity extends ActionBarActivity { private int currentColor = 0;
final int[] colors = new int[] {
R.color.color01,
R.color.color02,
R.color.color03,
R.color.color04,
R.color.color05,
R.color.color06
};
final int[] names = new int[] {
R.id.textView01_id,
R.id.textView02_id,
R.id.textView03_id,
R.id.textView04_id,
R.id.textView05_id,
R.id.textView06_id,
};
TextView[] views = new TextView[names.length];
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
//表明消息来自本程序
System.out.println(msg.what);
if(msg.what == 0x123) {
for(int i = 0 ;i<names.length;i++) {
views[i].setBackgroundResource(colors[(i+currentColor)%names.length]);
}
currentColor++;
}
super.handleMessage(msg);
}
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int i = 0; i < names.length; i++) {
views[i] = (TextView)findViewById(names[i]); }
//定义一个线程周期性的改变currentColor变量的值
new Timer().schedule(new TimerTask() {
@Override
public void run() {
//发送一条空消息来通知系统改变颜色
handler.sendEmptyMessage(0x123);
System.out.println("发送了条消息");
}
}, 0,1000); } }

FrameLayout和handle实现霓虹灯效果的更多相关文章

  1. 【Android】使用FrameLayout布局实现霓虹灯效果

    FrameLayout是五大布局中最简单的一个布局. 在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置. 它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的 ...

  2. canvas绘制简单的霓虹灯效果

    canvas简单动画分为三个步骤: 1.清除画布区域的内容: 2.重绘: 3.执行requestAnimationFrame(); 这个霓虹灯效果的demo,我没有用requestAnimationF ...

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

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

  4. Vegas干货分享,如何制作霓虹灯效果

    在各色各样的展会中,各种炫彩华丽的灯光和光影一直都能吸引到人们大量的关注.同样,在视频制作中,光线的气氛渲染也是常用的方法,常用也就代表着效果明显,也是很多刚学视频剪辑小伙伴们想要学习的一种方法. 今 ...

  5. android脚步---使用framelayout实现霓虹灯效果

    轮换帧布局中7个TextView的背景颜色,会出现上面颜色渐变不断变换. 首先在main.xml文件中进行布局 总体布局为framelayout 中间有7个Textview,代表7种不同的颜色,可以看 ...

  6. IOS 作业项目(3) 霓虹灯效果

    先上效果图 #import "CHViewController.h"@interface CHViewController (){    int i;    int j;}@pro ...

  7. Android 自学之帧布局 FrameLayout

    帧布局(FrameLayout)直接继承了ViewGroup组件: 帧布局容器为每一个加入其中的组件都创建了一个空白的区域,这个区域我们称之为一帧,所有每个组件都占据一帧,这些都会根据gravity属 ...

  8. 【css】文本效果

    一.字体属性 在css字体样式中常见的字体属性有以下几种 p{ font-size: 50px; /*字体大小*/ line-height: 30px; /*行高*/ font-family: 幼圆, ...

  9. canvas多重阴影发光效果

    canvas多重阴影发光效果 前言 在一个项目中,客户提了一个发光的效果,效果图如下: 阴影 有的人可能会说,这个用阴影其实就可以实现.但是从图中可以看出,是一个比较强烈的发光效果.实际的应用过程中我 ...

随机推荐

  1. MVC 区域路

    VS2013和VS2015中MVC 区域路由匹配顺序相反   创建测试工程 分别在vs2013和vs2015中创建mvc项目,并创建First.Second.Three三个Area,每个Area下面创 ...

  2. 修改Linux的基本配置

    1.修改主机名 vi /etc/sysconfig/network 2.修改ip地址 vi /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes   ...

  3. form的智能表单

    1.智能表单的介绍 其中,(1)中的使用格式使得form不会太臃肿. 2.使用规范 3.新属性 4.举例 二.程序 1.关于邮件的问题 <!DOCTYPE html> <head&g ...

  4. js 把数组对象按照某个属性进行排序

    var arr=[{a:1},{a:3},{a:2}]; function objSort(prop){ return function (obj1, obj2) { var val1 = obj1[ ...

  5. 【Vue实战之路】一、Vue-cli入门及Vue工程目录全解。

    全面的Vue-cli学习,这一篇就够了! 一.下载 使用vue-cli前,需先安装node.js,node的安装就不赘述,不过在此需要注意: 1. node版本需在4.x以上,首推6.x以上版本(no ...

  6. [ 转载 ] Http详解2

    HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统 | |目录 1引言 2一.HTTP协议详解之URL篇 3二.HTTP协议详解之请求篇 4三.HTTP协议详 ...

  7. 轻量级IOC框架:Ninject (上)

    前言 前段时间看Mvc最佳实践时,认识了一个轻量级的IOC框架:Ninject.通过google搜索发现它是一个开源项目,最新源代码地址是:http://github.com/enkari/ninje ...

  8. 用AB对Webservice做压力测试

    AB工具下载 AB工具介绍见 web压力测试工具 下载ab工具后放到任意目录下,从命令行打开ab.exe 使用以下命令测试Webservice ab -c 100 -n 1000 -p zip.txt ...

  9. Echarts学习记录——如何去掉网格线及网格区域颜色

    关键属性 splitLine和splitArea,可以设置相关的属性 示例代码 <!DOCTYPE html> <html lang="en"> <h ...

  10. 如何在Windows服务程序中添加U盘插拔的消息

    研究了下这个问题,主要要在一般的windows服务程序中修改两个地方: 一.调用RegisterServiceCtrlHandlerEx VOID WINAPI SvcMain( DWORD dwAr ...