首先我们要理解什么是帧布局,帧布局中每一个组件都代表一个画面,默认以屏幕左上角作为(0,0)坐标,组件按定义的先后顺序一次逐屏显示,后面出现的会覆盖前面的画面。下面我们就用该布局实现霓虹灯的效果,如图:
这里在activity_main.xml文件中定义了一个FrameLayout和5个TextView。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.neolight.MainActivity"
tools:ignore="MergeRootFrame" >
<TextView
android:id="@+id/textView1"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_gravity="center"
android:text="1" />
<TextView
android:id="@+id/textView2"
android:layout_width="240dp"
android:layout_height="240dp"
android:layout_gravity="center"
android:text="2" />
<TextView
android:id="@+id/textView3"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_gravity="center"
android:text="3" />
<TextView
android:id="@+id/textView4"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_gravity="center"
android:text="4" />
<TextView
android:id="@+id/textView5"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:text="TextView" />
</FrameLayout>
- public class MainActivity extends ActionBarActivity implements Runnable{
- private int colors[]=new int[]{0xFFFF0000,0xFF00FF00,0xFFFF00FF,0xFF00FFFF,0xFF0000FF
- };
- private int[] nextColorPointers=new int[]{
- 1,2,3,4,0
- };
- private View views[];
- private int currentColor=0;
- private Handler handler;
- public void run(){
- int nextColorPointer=currentColor;
- for(int i=views.length-1;i>=0;i--){
- views[i].setBackgroundColor(colors[nextColorPointers[nextColorPointer]]);//
- nextColorPointer=(++nextColorPointer)%5;
- }
- if(currentColor==4){
- currentColor=0;
- }else{
- currentColor++;
- }
- handler.postDelayed(this, 300);
- }
版权声明:本文为博主原创文章,未经博主允许不得转载。