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

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

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

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

时间: 2024-11-03 22:35:53

布局Layouts之FrameLayout框架布局(转)的相关文章

布局Layouts之FrameLayout框架布局

http://blog.csdn.net/jianghuiquan/article/details/8299961 FrameLayout单桢布局 FrameLayout对象好比一块在屏幕上提前预定好的空白区域,可以将一些元素填充在里面,如图片.所有元素都被放置在FrameLayout区域的最左上区域,而且无法为这些元素制指定一个确切的位置,若有多个元素,那么后面的元素会重叠显示在前一个元素上. 我们下面通过XML布局和Java代码布局两种方式分别举例: 一.XML方式布局 1.首先把a.jpg

FrameLayout框架布局的的动态配置

导包省略-- acticity.java public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FrameLayout layout=new FrameLayout(this);//创建帧布局对象layout FrameLayout.LayoutParams fra

android学习——FrameLayout框架布局

FrameLayout单桢布局 FrameLayout对象好比一块在屏幕上提前预定好的空白区域,可以将一些元素填充在里面,如图片.所有元素都被放置在FrameLayout区域的最左上区域,而且无法为这些元素制指定一个确切的位置,若有多个元素,那么后面的元素会重叠显示在前一个元素上. 我们下面通过XML布局和Java代码布局两种方式分别举例: 一.XML方式布局 1.首先把a.jpg图片复制到res/drawable-hdpi文件夹内. 2.创建一个空白Activity 3.打开“res/layo

布局Layouts之GridLayout网格布局

原文地址http://blog.csdn.net/jianghuiquan/article/details/8299973 GridLayout网格布局 android4.0以上版本出现的GridLayout布局解决了以上问题.GridLayout布局使用虚细线将布局划分为行.列和单元格,也支持一个控件在行.列上都有交错排列.而GridLayout使用的其实是跟LinearLayout类似的API,只不过是修改了一下相关的标签而已,所以对于开发者来说,掌握GridLayout还是很容易的事情.G

布局Layouts之RelativeLayout相对布局

RelativeLayout相对布局 RelativeLayout是一种相对布局,控件的位置是按照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最常用,也是最灵活的一种布局. 我们下面通过XML布局和Java代码布局两种方式分别举例: 一.XML方式布局 1.创建一个空白Activity 2.打开“res/layout/activity_main.xml”文件,修改成以下代码. (1)第①部分 <?xml version="1.0" encoding=&

布局Layouts之LinearLayout线性布局

从Hello world!开始,我们一直都是在一种布局下学习的,当然,对于基础内容的学习,还是没有任何问题的!但-- 在Android开发中UI设计也是十分重要的,当用户使用一个App时,最先感受到的不是这款软件的功能是否强大,而是界面设计是否赏心悦目,用户体验是否良好.也可以这样说,有一个好的界面设计去吸引用户的使用,才能让更多的用户体验到软件功能的强大. 那么,Android中几种常用布局则显得至关重要.各个布局既可以单独使用,也可以嵌套使用,我们应该在实际应用中应灵活变通. 第2章.Lin

布局Layouts之RelativeLayout相对布局(转)

RelativeLayout相对布局 RelativeLayout是一种相对布局,控件的位置是按照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最常用,也是最灵活的一种布局. 我们下面通过XML布局和Java代码布局两种方式分别举例: 一.XML方式布局 1.创建一个空白Activity 2.打开“res/layout/activity_main.xml”文件,修改成以下代码. (1)第①部分 <?xml version="1.0" encoding=&

第13章、布局Layouts之RelativeLayout相对布局(从零開始学Android)

RelativeLayout相对布局 RelativeLayout是一种相对布局,控件的位置是依照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最经常使用,也是最灵活的一种布局. 我们以下通过XML布局和Java代码布局两种方式分别举例: 一.XML方式布局 1.创建一个空白Activity 2.打开"res/layout/activity_main.xml"文件,改动成下面代码. (1)第①部分 <?xml version="1.0"

布局Layouts之LinearLayout线性布局(转)

从Hello world!开始,我们一直都是在一种布局下学习的,当然,对于基础内容的学习,还是没有任何问题的!但—— 在Android开发中UI设计也是十分重要的,当用户使用一个App时,最先感受到的不是这款软件的功能是否强大,而是界面设计是否赏心悦目,用户体验是否良好.也可以这样说,有一个好的界面设计去吸引用户的使用,才能让更多的用户体验到软件功能的强大. 那么,Android中几种常用布局则显得至关重要.各个布局既可以单独使用,也可以嵌套使用,我们应该在实际应用中应灵活变通. LinearL