Android学习开发之路6——使用Framelayout实现霓虹灯效果

Framelayout即帧布局,使用这种布局可以把几个控件叠加在一起。使用Framelayout结合textview就可以实现一个简单的霓虹灯效果。

  1. packageorg.crazyit.framelayout;
  2. importjava.util.Timer;
  3. importjava.util.TimerTask;
  4. importandroid.app.Activity;
  5. importandroid.os.Bundle;
  6. importandroid.os.Handler;
  7. importandroid.os.Message;
  8. importandroid.widget.TextView;
  9. publicclassFrameLayoutTestextendsActivity
  10. {
  11. privateintcurrentColor=0;
  12. //定义一个颜色数组
  13. finalint[]colors=newint[]
  14. {
  15. R.color.color7,
  16. R.color.color6,
  17. R.color.color5,
  18. R.color.color4,
  19. R.color.color3,
  20. R.color.color2,
  21. R.color.color1,
  22. };
  23. //颜色显示数组,view为TextView控件
  24. finalint[]names=newint[]
  25. {
  26. R.id.View01,
  27. R.id.View02,
  28. R.id.View03,
  29. R.id.View04,
  30. R.id.View05,
  31. R.id.View06,
  32. R.id.View07
  33. };
  34. TextView[]views=newTextView[7];
  35. @Override
  36. publicvoidonCreate(BundlesavedInstanceState)
  37. {
  38. super.onCreate(savedInstanceState);
  39. setContentView(R.layout.main);
  40. for(inti=0;i<7;i++)
  41. {
  42. views[i]=(TextView)findViewById(names[i]);
  43. }
  44. //使用Handler进行消息处理
  45. finalHandlerhandler=newHandler()
  46. {
  47. @Override
  48. publicvoidhandleMessage(Messagemsg)
  49. {
  50. //表明消息来自本程序所发送
  51. if(msg.what==0x1122)
  52. {
  53. //依次改变7个TextView的背景色
  54. for(inti=0;i<7-currentColor;i++)
  55. {
  56. views[i].setBackgroundResource(colors[i+currentColor]);//改变背景色
  57. }
  58. for(inti=7-currentColor,j=0;i<7;i++,j++)
  59. {
  60. views[i].setBackgroundResource(colors[j]);
  61. }
  62. }
  63. super.handleMessage(msg);
  64. }
  65. };
  66. //定义一个线程周期性的改变currentColor变量值
  67. newTimer().schedule(newTimerTask()
  68. {
  69. @Override
  70. publicvoidrun()
  71. {
  72. currentColor++;
  73. if(currentColor>=6)
  74. {
  75. currentColor=0;
  76. }
  77. //发送一条消息通知系统改变7个TextView组件的背景色
  78. Messagem=newMessage();
  79. //给该消息定义一个标识
  80. m.what=0x1122;
  81. handler.sendMessage(m);
  82. }
  83. },0,100);//周期为100毫秒
  84. }
  85. }
package org.crazyit.framelayout; 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 FrameLayoutTest 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.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毫秒 } }
对应的XML文件

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <!--依次定义7个TextView,先定义的TextView位于底层
  8. 后定义的TextView位于上层-->
  9. <TextViewandroid:id="@+id/View01"
  10. android:layout_width="wrap_content"
  11. android:layout_height="wrap_content"
  12. android:width="210px"
  13. android:height="50px"
  14. android:background="#ff0000"
  15. />
  16. <TextViewandroid:id="@+id/View02"
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:width="180px"
  20. android:height="50px"
  21. android:background="#dd0000"
  22. />
  23. <TextViewandroid:id="@+id/View03"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:width="150px"
  27. android:height="50px"
  28. android:background="#bb0000"
  29. />
  30. <TextViewandroid:id="@+id/View04"
  31. android:layout_width="wrap_content"
  32. android:layout_height="wrap_content"
  33. android:width="120px"
  34. android:height="50px"
  35. android:background="#990000"
  36. />
  37. <TextViewandroid:id="@+id/View05"
  38. android:layout_width="wrap_content"
  39. android:layout_height="wrap_content"
  40. android:width="90px"
  41. android:height="50px"
  42. android:background="#770000"
  43. />
  44. <TextViewandroid:id="@+id/View06"
  45. android:layout_width="wrap_content"
  46. android:layout_height="wrap_content"
  47. android:width="60px"
  48. android:height="50px"
  49. android:background="#550000"
  50. />
  51. <TextViewandroid:id="@+id/View07"
  52. android:layout_width="wrap_content"
  53. android:layout_height="wrap_content"
  54. android:width="30px"
  55. android:height="50px"
  56. android:background="#330000"
  57. />
  58. </FrameLayout>

源码资料下载:

Android 应用功能150多个实例源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值