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.展示