Android开发--FrameLayout的应用

1.简介

frameLayout为框架布局,该布局的特点为层层覆盖,即最先放置的部件位于最下层,最后放置的部件位于最上层。

2.构建

如图所示,该视图中有五个TextView。其中,tv1放置在最底层,tv5放置在外层,即tv5将遮掩tv1的部分内容。

我们让五个TextView不断变换颜色,形成霓虹灯的效果。

    

xml:

 1 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:id="@+id/FrameLayout1"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="example.framelayout.Activity1" >
11 
12     <TextView
13         android:id="@+id/textView1"
14         android:layout_width="300dp"
15         android:layout_height="300dp"
16         android:layout_gravity="center"
17         android:text="@string/tv1" />
18 
19     <TextView
20         android:id="@+id/textView2"
21         android:layout_width="240dp"
22         android:layout_height="240dp"
23         android:layout_gravity="center"
24         android:text="@string/tv2" />
25 
26     <TextView
27         android:id="@+id/textView3"
28         android:layout_width="180dp"
29         android:layout_height="180dp"
30         android:layout_gravity="center"
31         android:text="@string/tv3" />
32 
33     <TextView
34         android:id="@+id/textView4"
35         android:layout_width="120dp"
36         android:layout_height="120dp"
37         android:layout_gravity="center"
38         android:text="@string/tv4" />
39 
40     <TextView
41         android:id="@+id/textView5"
42         android:layout_width="60dp"
43         android:layout_height="60dp"
44         android:layout_gravity="center"
45         android:text="@string/tv5" />
46 </FrameLayout>

3.代码

 1 public class Activity1 extends Activity implements Runnable{
 2     //定义五种颜色
 3     private int colors[]=new int[]{0xFF6495ED,0xFFEE82EE,0xFFFF69B4,0xFF6495ED,0xFF0000FF};
 4     //为每一种颜色定义索引
 5     private int nextcolor[]= new int[] {1,2,3,4,0};
 6     //定义当前颜色值的索引
 7     private int currentcolor=0;
 8     //handler
 9     private Handler handler;
10     //声明五个TextView
11     private View views[];
12     
13     @Override
14     public void run() {
15         int indexcolor=currentcolor;
16         for(int i=views.length-1;i>=0;i--){
17             views[i].setBackgroundColor(colors[nextcolor[indexcolor]]);
18             indexcolor=nextcolor[indexcolor];
19         }
20         //为TextView的下一颜色做准备,indexcolor将为1,此时所有TextView将出现不同鱼第一次的颜色。
21         currentcolor++;
22         //由于数组长度为5,为防止数组越界,即出现nextcolor[5]的情况,需要让currentcolor重新开始。
23         if(currentcolor==5)
24                 currentcolor=0;
25         //启动handler,延时300ms
26         handler.postDelayed(this, 300);
27     }            
28     @Override
29     protected void onCreate(Bundle savedInstanceState) {
30         setContentView(R.layout.act1);
31         //将TextView与ID匹配
32         views=new View[] {findViewById(R.id.textView5),findViewById(R.id.textView4),
33             findViewById(R.id.textView3),findViewById(R.id.textView2),
34             findViewById(R.id.textView1)};
35         handler=new Handler();
36         //启动handler,延时300ms
37         handler.postDelayed(this, 300);
38     }

3.展示

原文地址:https://www.cnblogs.com/jfl-xx/p/5184704.html