android帧布局——霓虹灯

本文介绍如何利用Android帧布局(FrameLayout)创建霓虹灯效果。通过设置多个TextView并改变背景颜色,实现了文字逐屏显示的动画。在MainActivity.java中,定义了颜色数组、颜色指针和TextView视图,通过Runnable接口和Handler定时更新每个TextView的背景颜色,达到霓虹灯的连续变换效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们要理解什么是帧布局,帧布局中每一个组件都代表一个画面,默认以屏幕左上角作为(0,0)坐标,组件按定义的先后顺序一次逐屏显示,后面出现的会覆盖前面的画面。下面我们就用该布局实现霓虹灯的效果,如图:


这里在activity_main.xml文件中定义了一个FrameLayout和5个TextView。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.neolight.MainActivity"
    tools:ignore="MergeRootFrame" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_gravity="center"
        android:text="1" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="240dp"
        android:layout_height="240dp"
         android:layout_gravity="center"
        android:text="2" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="180dp"
        android:layout_height="180dp"
         android:layout_gravity="center"
        android:text="3" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="120dp"
        android:layout_height="120dp"
         android:layout_gravity="center"
        android:text="4" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="60dp"
        android:layout_height="60dp"
         android:layout_gravity="center"
        android:text="TextView" />

</FrameLayout>


Activity中代码编写:


  1. public class MainActivity extends ActionBarActivity implements Runnable{
  2.  
  3.  private int colors[]=new int[]{0xFFFF0000,0xFF00FF00,0xFFFF00FF,0xFF00FFFF,0xFF0000FF
  4.    
  5.  };
  6.  private int[] nextColorPointers=new int[]{
  7.    1,2,3,4,0
  8.  };
  9.  private View views[];
  10.  private int currentColor=0;
  11.  private Handler handler;
  12.  public  void run(){
  13.   int nextColorPointer=currentColor;
  14.   for(int i=views.length-1;i>=0;i--){
  15.    views[i].setBackgroundColor(colors[nextColorPointers[nextColorPointer]]);//
  16.    nextColorPointer=(++nextColorPointer)%5;
  17.   }
  18.   if(currentColor==4){
  19.    currentColor=0;
  20.   }else{
  21.    currentColor++;
  22.   }
  23.  
  24.     handler.postDelayed(this, 300);
  25.  } 


版权声明:本文为博主原创文章,未经博主允许不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值