虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Android编程 > Android帧布局实现霓虹灯的效果

Android帧布局实现霓虹灯的效果
类别:Android编程   作者:码皇   来源:互联网   点击:

效果图:1、首先是main xml文件的代码<?xml version="1 0" encoding="utf-8"?><FrameLayout xmlns:android="http: schemas android com apk res android" android:layout_width="match_parent" android:la

 

效果图:

 

1、首先是main.xml文件的代码

 

<?xml version="1.0" encoding="utf-8"?> 

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

    android:layout_width="match_parent" 

    android:layout_height="match_parent"  

 >  

    <TextView 

        android:id="@+id/view0" 

        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 

        android:layout_gravity="center" 

        android:background="#ff0000" 

        android:height="200dp" 

        android:width="200dp" /> 

    <TextView 

        android:id="@+id/view1" 

        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 

        android:layout_gravity="center" 

        android:background="#ff00ff" 

        android:height="180dp" 

        android:width="180dp" /> 

    <TextView  

        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 

        android:layout_gravity="center" 

        android:width="160dp" 

        android:height="160dp" 

        android:background="#bb0000" 

        android:id="@+id/view2"/> 

    <TextView  

        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 

        android:width="140dp" 

        android:height="140dp" 

        android:layout_gravity="center" 

        android:background="#990000" 

        android:id="@+id/view3"/> 

    <TextView  

        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 

        android:width="120dp" 

        android:height="120dp" 

        android:layout_gravity="center" 

        android:background="#770000" 

        android:id="@+id/view4"/> 

    <TextView  

        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 

        android:width="100dp" 

        android:height="100dp" 

        android:layout_gravity="center" 

        android:background="#550000" 

        android:id="@+id/view5"/> 

    <TextView  

        android:layout_width="wrap_content" 

        android:layout_height="wrap_content" 

        android:width="80dp" 

        android:height="80dp" 

        android:layout_gravity="center" 

        android:background="#330000" 

        android:id="@+id/view6"/> 

 

 

 

     

 

</FrameLayout> 

强调:android:layout_gravity="center"   textview中的内容居中

 

2、创建一个colors.xml文件

 

<?xml version="1.0" encoding="utf-8"?> 

<resources> 

    <color name="color1">#330000</color> 

    <color name="color2">#550000</color> 

    <color name="color3">#770000</color> 

    <color name="color4">#990000</color> 

    <color name="color5">#bb0000</color> 

    <color name="color6">#dd0000</color> 

    <color name="color7">#ff0000</color> 

</resources> 

 

3、源代码LayoutChen.java

 

 

package cn.csdn.activity; 

 

 

import android.app.Activity; 

import android.os.Bundle; 

import android.os.Handler; 

import android.os.Message; 

import android.widget.TextView; 

 

public class LayoutChenActivity extends Activity { 

   final int[] colors=new int[]{ 

         R.color.color7,  

         R.color.color6, 

         R.color.color5, 

         R.color.color4, 

         R.color.color3, 

         R.color.color2, 

         R.color.color1, 

   }; 

  final int[] names=new int[]{ 

          R.id.view0, 

          R.id.view1, 

          R.id.view2, 

          R.id.view3, 

          R.id.view4, 

          R.id.view5, 

          R.id.view6, 

  }; 

  TextView view[]=new TextView[7]; 

  class MyHandler extends Handler{ 

    int i=0; 

    public void handleMessage(Message msg){ 

        i++; 

        if(i>=6){ 

            i=1; 

        } 

        for(int m=7-i,n=0;m<7;m++,n++){ 

            view[m].setBackgroundResource(colors[n]); 

        } 

        for(int m=0;m<7-i;m++){ 

            view[m].setBackgroundResource(colors[m+i]); 

        } 

         

        sleep(100); 

    } 

    public void sleep(int j){        

            sendMessageDelayed(obtainMessage(0),j);          

    } 

  } 

    public void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

        for(int i=0;i<7;i++){ 

            view[i]=(TextView) findViewById(names[i]); 

        } 

        final MyHandler myHandler=new MyHandler(); 

        myHandler.sleep(100); 

          

    } 

 

使用了Android 提供的消息通讯类Handler 。该类可以实现非主线程和负责UI 的主线程之间的通信 ,进而间接实现非主线程更新UI 界面。由于sleep 方法中的

sendMessageDelayed(obtainMessage(0), delayMillis); 本身会延迟发送一个消息 , 该消息会被框架传递给handleMessage 事件 。 我们在handleMessage() 方法中再次调用sleep() 方法 ,形成一个循环调用 。 在我们对界面进行点击之前 , 两个方法会一直循环调用 。 前景图片也会不断的切换,进而实现霓虹灯的效果。

 

作者 任海丽

相关热词搜索: Android 布局 实现