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: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() 方法 ,形成一個循環調用 。 在我們對界面進行點擊之前 , 兩個方法會一直循環調用 。 前景圖片也會不斷的切換,進而實現霓虹燈的效果。

 

作者 任海麗

發佈留言