安卓利用帧布局实现霓虹灯效果
实现霓虹灯一样变幻颜色的效果:代码和布局如下:
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) 收藏 举报
浙公网安备 33010602011771号