博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android脚步---使用framelayout实现霓虹灯效果
阅读量:6525 次
发布时间:2019-06-24

本文共 3373 字,大约阅读时间需要 11 分钟。

轮换帧布局中7个TextView的背景颜色,会出现上面颜色渐变不断变换。

首先在main.xml文件中进行布局

总体布局为framelayout 中间有7个Textview,代表7种不同的颜色,可以看到高度相同,宽度逐渐减少,则最新添加的textvIEW不会被完全遮挡,设置了颜色渐变

 

 在mainactivity里定义

package com.example.framlayout; import java.util.Timer;  import java.util.TimerTask;    import android.app.Activity;  import android.os.Bundle;  import android.os.Handler;  import android.os.Message;  import android.widget.TextView;    public class MainActivity extends Activity  {      private int currentColor = 0;      //定义一个颜色数组       final int[] colors = new int[]      {          R.color.color7,          R.color.color6,          R.color.color5,          R.color.color4,           R.color.color3,          R.color.color2,          R.color.color1,       };      //颜色显示数组,view为TextView控件       final int[] names = new int[]      {          R.id.View01,          R.id.View02,          R.id.View03,          R.id.View04,          R.id.View05,          R.id.View06,          R.id.View07      };      TextView[] views = new TextView[7];      @Override      public void onCreate(Bundle savedInstanceState)      {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);            for (int i = 0 ; i < 7 ; i++)          {              views[i] = (TextView)findViewById(names[i]);          }          //使用Handler进行消息处理           final Handler handler = new Handler()          {              @Override              public void handleMessage(Message msg)              {                  //表明消息来自本程序所发送                   if(msg.what == 0x1122)                  {                      //依次改变7个TextView的背景色                       for(int i = 0 ; i < 7 - currentColor ; i++)                        {                          views[i].setBackgroundResource(colors[i + currentColor]); //改变背景色                       }                      for(int i = 7 - currentColor , j = 0 ; i < 7 ; i++ ,j++)                      {                          views[i].setBackgroundResource(colors[j]);                      }                  }                  super.handleMessage(msg);              }          };          //定义一个线程周期性的改变currentColor变量值           new Timer().schedule(new TimerTask()          {              @Override              public void run()              {                  currentColor++;                  if(currentColor >= 6)                  {                      currentColor = 0;                  }                  //发送一条消息通知系统改变7个TextView组件的背景色                   Message m = new Message();                  //给该消息定义一个标识                   m.what = 0x1122;                  handler.sendMessage(m);               }                 }, 0 , 100); //周期为100毫秒       }  }

 使用handler来处理textview背景色的更新,定义一个线程周期性0.1秒执行一次任务,该任务仅仅改变currentcolor变量的值,然后向handler发送一条消息,通知它更新7个textview的背景色。

出现问题:colors数组那个地方在EC里面提示的是color cannot be resolved or is not a field???

colors数组那个地方在EC里面提示的是color cannot be resolved or is not a field???

因为:你缺少颜色的资源文件,在String.xml中添加如下<color.../>子元素即可!!!

string.xml

framlayout
Settings
Hello world!
#0f0
#00f
#0ff
#f0f
#ff0
#07f
#70f

 

转载地址:http://cdjbo.baihongyu.com/

你可能感兴趣的文章
java基础学习总结——IO流
查看>>
iOS获取APP ipa 包以及资源文件
查看>>
CentOS 7 关闭启动防火墙
查看>>
Vue-选项卡切换
查看>>
linux网络命令
查看>>
nodejs ejs 请求路径和静态资源文件路径
查看>>
4.1 State Snapshot Transfer
查看>>
C++小代码
查看>>
记一次思维转变的时刻
查看>>
远程桌面无法复制粘贴
查看>>
bzoj2754
查看>>
redis liunx下安装和配置
查看>>
Asp.Net MVC 学习心得 之 View
查看>>
STL - Map - 运行期自定义排序
查看>>
Oil Deposits
查看>>
poj3984 迷宫问题(简单搜索+记录路径)
查看>>
Linux 服务器buff/cache清理
查看>>
算法试题 及其他知识点
查看>>
php课程---Json格式规范需要注意的小细节
查看>>
hadoop hdfs notes
查看>>