• Android突击:FrameLayout制作霓虹灯效果


    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. }





  • 相关阅读:
    1.认识移动端 、前端工作流程 2019-2-13
    去掉标签默认样式属性 + visibility
    grid 布局:一般用于多行排版、单页排版、......(响应式布局)
    解决 display 和 transition 冲突的问题
    回到顶部效果
    文字溢出 生成 省略号
    【Python】协程实现生产者消费者模型
    【Python】0/1背包、动态规划
    【Python】使用super初始化超类
    【Python】考虑用生成器改写直接返回列表的函数
  • 原文地址:https://www.cnblogs.com/zhuzhenfeng/p/4637761.html
Copyright © 2020-2023  润新知