码迷,mamicode.com
首页 > 其他好文 > 详细

布局Layouts之FrameLayout框架布局(转)

时间:2015-06-05 00:33:12      阅读:456      评论:0      收藏:0      [点我收藏+]

标签:

FrameLayout单桢布局

  FrameLayout对象好比一块在屏幕上提前预定好的空白区域,可以将一些元素填充在里面,如图片。所有元素都被放置在FrameLayout区域的最左上区域,而且无法为这些元素制指定一个确切的位置,若有多个元素,那么后面的元素会重叠显示在前一个元素上。

  我们下面通过XML布局和Java代码布局两种方式分别举例:

 

一、XML方式布局

   1、首先把a.jpg图片复制到res/drawable-hdpi文件夹内。

  技术分享

  2、创建一个空白Activity

  技术分享

  3、打开“res/layout/activity_main.xml”文件,修改成以下代码。

  技术分享

  (1)第①部分

  <?xml version="1.0" encoding="utf-8">,每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,<?xml version="1.0">。这行代码表示按照1.0版本的XML规则进行解析。encoding = "utf-8"表示此xml文件采用utf-8的编码格式。编码格式也可以是GB2312。

  (2)第②部分

  <LinearLayout …… 表示采用单帧布局管理器。

  (3)第③部分

  android:layout_width="match_parent" android:layout_height="match_parent"表示布局管理器宽度和高充将填充整个屏幕宽度和高度。

  4、从工具栏向activity拖出1个图像ImageView、1个按钮Button。

  技术分享

  5、打开“res/layout/activity_main.xml”文件。

  技术分享

  (1)第①部分

  ID为imageView1的图像ImageView显示一幅图片。

  (2)第②部分

  ID为button1的按钮Button显示一个按钮。

  由于是单帧FrameLayout布局,这两个控件不能够进行任何布局,只能以左上角为基准,重叠摆放。

  6、最终显示效果如下:

  技术分享

  如果FrameLayout单帧布局仅此而已,则可以说毫无价值!

 

 

 

Android应用开发之FrameLayout (帧布局)+小鸟飞翔案例

编写 FreamTestActivity.java 类

  1. package cn.class3g;  
  2.   
  3.   
  4. import Android.app.Activity;  
  5. import android.graphics.drawable.Drawable;  
  6. import android.os.Bundle;  
  7. import android.os.Handler;  
  8. import android.os.Message;  
  9. import android.view.View;  
  10. import android.view.View.OnClickListener;  
  11. import android.widget.FrameLayout;  
  12.   
  13.   
  14. public class FreamTestActivity extends Activity {  
  15.     FrameLayout frame = null;  
  16.     boolean flag = true;  
  17.   
  18.   
  19.     class MyHandler extends Handler {  
  20.         int i = 0;  
  21.   
  22.   
  23.         public void handleMessage(Message msg) {  
  24.             i++;  
  25.             show(i % 3);  
  26.             sleep(50);  
  27.         }  
  28.   
  29.   
  30.         public void sleep(long delayMillis) {  
  31.             if (flag) {  
  32.                 this.sendMessageDelayed(this.obtainMessage(0), delayMillis);  
  33.             }  
  34.         }  
  35.     }  
  36.   
  37.   
  38.     void show(int i) {  
  39.         Drawable a = getResources().getDrawable(R.drawable.a1);  
  40.         Drawable b = getResources().getDrawable(R.drawable.a2);  
  41.         Drawable c = getResources().getDrawable(R.drawable.a3);  
  42.   
  43.   
  44.         switch (i) {  
  45.         case 0:  
  46.             frame.setForeground(a);  
  47.             break;  
  48.         case 1:  
  49.             frame.setForeground(b);  
  50.             break;  
  51.         case 2:  
  52.             frame.setForeground(c);  
  53.             break;  
  54.         }  
  55.     }  
  56.   
  57.   
  58.     public void onCreate(Bundle savedInstanceState) {  
  59.         super.onCreate(savedInstanceState);  
  60.         setContentView(R.layout.main);  
  61.         frame = (FrameLayout) findViewById(R.id.frame);  
  62.         final MyHandler myHandler = new MyHandler();  
  63.         myHandler.sleep(50);  
  64.         frame.setOnClickListener(new OnClickListener() {  
  65.   
  66.   
  67.             public void onClick(View arg0) {  
  68.                 // TODO Auto-generated method stub   
  69.                 flag = !flag;  
  70.                 myHandler.sleep(10);  
  71.             }  
  72.         });  
  73.   
  74.   
  75.     }  
  76. }

说明:
由于 FrameLayout 中后出现的 UI 控件会覆盖前面出现的 UI 控件,每次只能显示一个 UI 控件,因此,我们可以通过在 Activity 中对每次显示的图片内容进行切换以实现动画效果 。 或许你会想到开启一条线程来控制切换 , 但在非主线程中不能更新 UI 界面 , 所以 , 我们使用了Android 提供的消息通讯类 Handler 。该类可以实现非主线程和负责 UI 的主线程之间的通信 ,进而间接实现非主线程更新 UI 界面。由于 sleep 方法中的sendMessageDelayed(obtainMessage(0), delayMillis); 本身会延迟发送一个消息 , 该消息
会被框架传递给 handleMessage 事件 。 我们在 handleMessage() 方法中再次调用 sleep() 方法 ,形成一个循环调用 。 在我们对界面进行点击之前 , 两个方法会一直循环调用 。 前景图片也会不断的切换,进而实现动画的效果。

 

技术分享

技术分享

技术分享

点击图片之后,小鸟停止飞翔。

 

布局Layouts之FrameLayout框架布局(转)

标签:

原文地址:http://www.cnblogs.com/qi123/p/4553410.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!