安卓利用帧布局实现霓虹灯效果

实现霓虹灯一样变幻颜色的效果:代码和布局如下:

activity_main.xml中定义一个帧布局framelayout,并定义六个textview

 1 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context="com.example.imagebrowser.MainActivity" >
10 
11     <TextView
12         android:id="@+id/tv1"
13         android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:width="320dp"
16         android:height="320dp"
17         android:layout_gravity="center"
18         android:background="#f00"/>
19 
20     <TextView
21         android:id="@+id/tv2"
22         android:layout_width="wrap_content"
23         android:layout_height="wrap_content"
24         android:width="280dp"
25         android:height="280dp"
26         android:layout_gravity="center"
27         android:background="#0f0"/>
28     
29     <TextView
30         android:id="@+id/tv3"
31         android:layout_width="wrap_content"
32         android:layout_height="wrap_content"
33         android:width="240dp"
34         android:height="240dp"
35         android:layout_gravity="center"
36         android:background="#00f"/>
37     
38     <TextView
39         android:id="@+id/tv4"
40         android:layout_width="wrap_content"
41         android:layout_height="wrap_content"
42         android:width="200dp"
43         android:height="200dp"
44         android:layout_gravity="center"
45         android:background="#ff0"/>
46     
47     <TextView
48         android:id="@+id/tv5"
49         android:layout_width="wrap_content"
50         android:layout_height="wrap_content"
51         android:width="160dp"
52         android:height="160dp"
53         android:layout_gravity="center"
54         android:background="#f0f"/>
55     
56     <TextView
57         android:id="@+id/tv6"
58         android:layout_width="wrap_content"
59         android:layout_height="wrap_content"
60         android:width="120dp"
61         android:height="120dp"
62         android:layout_gravity="center"
63         android:background="#00f"/>
64 </FrameLayout>

 

注意,在values文件夹下要新建一个color.xml的新建文件,用存放颜色的资源

 

1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3     <color name="color1">#330000</color>
4     <color name="color2">#440000</color>
5     <color name="color3">#550000</color>
6     <color name="color4">#660000</color>
7     <color name="color5">#770000</color>
8     <color name="color6">#880000</color>
9 </resources>

 

接下来就是实现的java代码了,在MainActivity.java中

 1 package com.example.imagebrowser;
 2 
 3 import java.util.Timer;
 4 import java.util.TimerTask;
 5 
 6 import android.app.Activity;
 7 import android.graphics.Color;
 8 import android.os.Bundle;
 9 import android.os.Handler;
10 import android.os.Message;
11 import android.view.Menu;
12 import android.view.MenuItem;
13 import android.widget.TextView;
14 
15 public class MainActivity extends Activity {
16     private int currentcolor=0;
17     int [] tv=new int[]{
18             R.id.tv1,R.id.tv2,
19             R.id.tv3,R.id.tv4,
20             R.id.tv5,R.id.tv6
21     };
22     
23     TextView[] views=new TextView[tv.length];
24     
25     final int [] colors=new int[]{
26             R.color.color1,R.color.color2,
27             R.color.color3,R.color.color4,
28             R.color.color5,R.color.color6,
29         
30     };
31     Handler handler=new Handler(){
32         @Override
33         public void handleMessage(Message msg) {
34             if (msg.what==0x123) {
35                 for (int i = 0; i < tv.length; i++) {
36                     views[i].setBackgroundResource(colors[(i+currentcolor)%tv.length]);//注意此处,一定要是setBackgroundResource,
                                                            否则运行时会出错,会显示程序已关闭
37 } 38 currentcolor++; 39 } 40 super.handleMessage(msg); 41 }; 42 }; 43 44 45 @Override 46 protected void onCreate(Bundle savedInstanceState) { 47 super.onCreate(savedInstanceState); 48 setContentView(R.layout.activity_main); 49 for (int i = 0; i < tv.length; i++) { 50 views[i]=(TextView) findViewById(tv[i]); 51 52 } 53 new Timer().schedule(new TimerTask() { 54 55 @Override 56 public void run() { 57 // TODO Auto-generated method stub 58 handler.sendEmptyMessage(0x123); 59 } 60 }, 0, 200);; 61 } 62 63 @Override 64 public boolean onCreateOptionsMenu(Menu menu) { 65 // Inflate the menu; this adds items to the action bar if it is present. 66 getMenuInflater().inflate(R.menu.main, menu); 67 return true; 68 } 69 70 @Override 71 public boolean onOptionsItemSelected(MenuItem item) { 72 // Handle action bar item clicks here. The action bar will 73 // automatically handle clicks on the Home/Up button, so long 74 // as you specify a parent activity in AndroidManifest.xml. 75 int id = item.getItemId(); 76 if (id == R.id.action_settings) { 77 return true; 78 } 79 return super.onOptionsItemSelected(item); 80 } 81 }

运行结果如下图:自己设置不同的颜色对应不同的霓虹灯

 

 

posted on 2018-03-22 09:42  Lethe~Lethe  阅读(1207)  评论(0)    收藏  举报

导航