您的位置:首页 > 移动开发 > Android开发

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

2015-07-11 00:11 477 查看
1,FrameLayout的层叠嵌套,类似于Photoshop的图层。可以实现类似霓虹灯的效果。代码大致如下:首先是main.xml:主要是几个TextView用来填充,使用的是FrameLayout的布局。
<?xmlversion="1.0"encoding="utf-8"?>

<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"android:layout_height="fill_parent">

<TextViewandroid:id="@+id/textview1"android:layout_width="300dp"

android:layout_height="300dp"android:layout_gravity="center"/>

<TextViewandroid:id="@+id/textview2"android:layout_width="240dp"

android:layout_height="240dp"android:layout_gravity="center"/>

<TextViewandroid:id="@+id/textview3"android:layout_width="180dp"

android:layout_height="180dp"android:layout_gravity="center"/>

<TextViewandroid:id="@+id/textview4"android:layout_width="120dp"

android:layout_height="120dp"android:layout_gravity="center"/>

<TextViewandroid:id="@+id/textview5"android:layout_width="60dp"

android:layout_height="60dp"android:layout_gravity="center"/>

</FrameLayout>


[/code]main.java里面是让Activity实现Runnable接口,在run()函数里设置每个TextView的背景颜色。并使用Handler来实现每隔多少秒执行一次。
packagecn.eoe.neonlight;


importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.view.View;


publicclassMainextendsActivityimplementsRunnable{

	//5个TextView的颜色值

	privateint[]colors=newint[]{0xFFFF0000,0xFF00FF00,0xFF0000FF,

			0xFFFF00FF,0xFF00FFFF};

	//每一次颜色的下一个颜色的索引,最后一个颜色的下一个颜色是第一个颜色,相当于循环链表

	privateint[]nextColorPointers=newint[]{1,2,3,4,0};

	privateView[]views;//保存5个TextView

	privateintcurrentColorPointer=0;//当前颜色索引(指针)

	privateHandlerhandler;


@Override

	publicvoidrun(){

		intnextColorPointer=currentColorPointer;

		for(inti=views.length-1;i>=0;i--){

			//设置当前TextView的背景颜色

views[i].setBackgroundColor(colors[nextColorPointers[nextColorPointer]]);

			//获得下一个TextView的背景颜色值的索引(指针)

			nextColorPointer=nextColorPointers[nextColorPointer];

}

currentColorPointer++;

		if(currentColorPointer==5)

			currentColorPointer=0;

		handler.postDelayed(this,300);//每300毫秒循环一次

}


@Override

	publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

		//初始化views数组

		views=newView[]{findViewById(R.id.textview5),

				findViewById(R.id.textview4),findViewById(R.id.textview3),

				findViewById(R.id.textview2),findViewById(R.id.textview1)};

		handler=newHandler();

		handler.postDelayed(this,300);//每300毫秒循环一次


}

}

[/code]

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: