博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android突击:FrameLayout制作霓虹灯效果
阅读量:4880 次
发布时间:2019-06-11

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

1,FrameLayout的层叠嵌套,类似于Photoshop的图层。可以实现类似霓虹灯的效果。
代码大致如下:
首先是main.xml:
主要是几个TextView用来填充,使用的是FrameLayout的布局。
 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent" android:layout_height="fill_parent">
  4. <TextView android:id="@+id/textview1" android:layout_width="300dp"
  5. android:layout_height="300dp" android:layout_gravity="center" />
  6. <TextView android:id="@+id/textview2" android:layout_width="240dp"
  7. android:layout_height="240dp" android:layout_gravity="center" />
  8. <TextView android:id="@+id/textview3" android:layout_width="180dp"
  9. android:layout_height="180dp" android:layout_gravity="center" />
  10. <TextView android:id="@+id/textview4" android:layout_width="120dp"
  11. android:layout_height="120dp" android:layout_gravity="center" />
  12. <TextView android:id="@+id/textview5" android:layout_width="60dp"
  13. android:layout_height="60dp" android:layout_gravity="center" />
  14. </FrameLayout>
main.java里面是让Activity实现Runnable接口,在run()函数里设置每个TextView的背景颜色。并使用Handler来实现每隔多少秒执行一次。
 
  1. package cn.eoe.neonlight;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.os.Handler;
  5. import android.view.View;
  6. public class Main extends Activity implements Runnable {
  7. // 5个TextView的颜色值
  8. private int[] colors = new int[] {
    0xFFFF0000, 0xFF00FF00, 0xFF0000FF,
  9. 0xFFFF00FF, 0xFF00FFFF };
  10. // 每一次颜色的下一个颜色的索引,最后一个颜色的下一个颜色是第一个颜色,相当于循环链表
  11. private int[] nextColorPointers = new int[] {
    1, 2, 3, 4, 0 };
  12. private View[] views; // 保存5个TextView
  13. private int currentColorPointer = 0; // 当前颜色索引(指针)
  14. private Handler handler;
  15. @Override
  16. public void run() {
  17. int nextColorPointer = currentColorPointer;
  18. for (int i = views.length - 1; i >= 0; i--) {
  19. // 设置当前TextView的背景颜色
  20. views[i].setBackgroundColor(colors[nextColorPointers[nextColorPointer]]);
  21. // 获得下一个TextView的背景颜色值的索引(指针)
  22. nextColorPointer = nextColorPointers[nextColorPointer];
  23. }
  24. currentColorPointer++;
  25. if (currentColorPointer == 5)
  26. currentColorPointer = 0;
  27. handler.postDelayed(this, 300); // 每300毫秒循环一次
  28. }
  29. @Override
  30. public void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. setContentView(R.layout.main);
  33. // 初始化views数组
  34. views = new View[] {
    findViewById(R.id.textview5),
  35. findViewById(R.id.textview4), findViewById(R.id.textview3),
  36. findViewById(R.id.textview2), findViewById(R.id.textview1) };
  37. handler = new Handler();
  38. handler.postDelayed(this, 300); // 每300毫秒循环一次
  39. }
  40. }

转载于:https://www.cnblogs.com/zhuzhenfeng/p/4637761.html

你可能感兴趣的文章
HDU 5115 Dire Wolf(区间dp)
查看>>
C# 程序配置文件的操作(ConfigurationManager的使用)
查看>>
Springmvc完成分页的功能
查看>>
ruby搜索引擎
查看>>
JComboBox实现当前所选项功能和JFrame窗口释放资源的dispose()方法
查看>>
spring的作用和配置
查看>>
tp 引入phpexcel 进行单表格的导入,在线浏览
查看>>
jsp基础速成精华讲解
查看>>
URL to Blob
查看>>
bzoj 3643: Phi的反函数
查看>>
BizTalk Server 2009 Beta初体验
查看>>
HTML中解决双击会选中文本的问题
查看>>
Python+Django静态文件配置
查看>>
Hello Docker (Docker 入门分享)
查看>>
获取全部校园新闻
查看>>
用dataReader获取datetime类型完整精度的时间字串
查看>>
[bzoj1270 BJWC2008]雷涛的小猫
查看>>
invite用法
查看>>
像table一样布局div的CSS属性详解
查看>>
vueROUTER_GUARD
查看>>