您的位置:首页 > 移动开发 > Android开发

Android笔记(2)---帧布局实现霓虹灯效果

2015-12-18 12:23 381 查看
目的:实现霓虹灯效果

步骤:1.创建一个帧布局文件,在里面放上4个TextView  把background的颜色改成不同的;

      2.创建一个TextView id的数组,一个颜色 id的数组,一个TextView[] 的数组,这个数组 是方便 我们 findViewById使用的 可以通过循环 这样就不用一个个的 写代码。

      3.通过handle来进行 对控件背景颜色的调整   每隔一秒钟 变化一次。

代码:

1. 布局文件代码

<TextView
android:layout_width="400dp"
android:layout_height="400dp"
android:background="#f0f"
android:id="@+id/tv1"
android:layout_gravity="center"/>
<TextView
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#0f0"
android:id="@+id/tv2"
android:layout_gravity="center"/>
<TextView
android:layout_width="200dp"
android:layout_height="200dp"
android:background="#00f"
android:id="@+id/tv3"
android:layout_gravity="center"/>
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#f00"
android:id="@+id/tv4"
android:layout_gravity="center"/>

2.

private int[] names={R.id.tv1,R.id.tv2,R.id.tv3,R.id.tv4};
private int[] colors={R.color.color1,R.color.color2,R.color.color3,R.color.color4};
private TextView[] tv=new TextView[names.length];
private  int current=0;
Handler handler=new Handler();
myRunable r=new myRunable();
private  class  myRunable implements Runnable{

@Override
public void run() {
for(int i=0;i<names.length;i++)
{
tv[i].setBackgroundResource(colors[(i + current) % names.length]);

}
current++;
handler.postDelayed(r,1000); //这个方法是 每隔一秒发送一次 只发送一次  r参数是一个Runnable的对象 。

}
}

3.   这里也有一个handler.postDelayed()方法 ,这样 两个方法就形成了一个 每一秒执行一次的定时器操作 已达到霓虹灯 一直变化颜色效果。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int i=0;i<names.length;i++) {
tv[i] = (TextView) findViewById(names[i]);
}
handler.postDelayed(r, 1000);
}

也可以通过 time.schedule方法来执行  这个方法大意是 每隔多少秒 重复发送一个  handler的message信息。

new Timer().schedule(new TimerTask()
{
@Override
public void run()
{
handler.sendEmptyMessage(0x123);
}
},0,500);

上面通过自定义一个handler 调用 handleMessage方法 来接收 系统发来的这个message信息  然后在里面进行 TextView的 颜色切换 也能达到霓虹灯效果。

Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if(msg.what == 0x123)  判断  消息标识 是不是 0x123;
{

这里面写上  修改控件的 代码。

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: