android布局------FrameLayout(帧布局)详解

本文深入解析Android中的FrameLayout,介绍其基本原理和应用场景。通过实例展示了如何利用帧布局实现图片的简单排列、跟随手指移动以及跑动的萌妹子动画效果,详细分析了相关代码和实现流程,帮助开发者更好地理解和运用FrameLayout。
摘要由CSDN通过智能技术生成

FrameLayout(帧布局)


前言

作为android六大布局中最为简单的布局之一,该布局直接在屏幕上开辟出了一块空白区域,

当我们往里面添加组件的时候,所有的组件都会放置于这块区域的左上角;

帧布局的大小由子控件中最大的子控件决定,

如果都组件都一样大的话,同一时刻就只能能看到最上面的那个组件了!

当然我们也可以为组件添加layout_gravity属性,从而制定组件的对其方式

帧布局在游戏开发方面用的比较多,等下后面会给大家演示一下比较有意思的两个实例


前景图像:

永远处于帧布局最顶的,直接面对用户的图像,,就是不会被覆盖的图片


常用属性:

android:foreground:设置该帧布局容器的前景图像

android:foregroundGravity:设置前景图像显示的位置


应用实例:


①最简单的实例:


属性很简单,接着演示下FrameLayout的基本用法

真的很简单,网上大部分的例子都是这个= =,


效果图:



代码如下:

[html]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:id="@+id/FrameLayout1"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     tools:context=".MainActivity"   
  7.     android:foreground="@drawable/logo"  
  8.     android:foregroundGravity="right|bottom">  
  9.   
  10.     <TextView  
  11.         android:layout_width="200dp"  
  12.         android:layout_height="200dp"  
  13.         android:background="#FF6143" />  
  14.     <TextView  
  15.         android:layout_width="150dp"  
  16.         android:layout_height="150dp"  
  17.         android:background="#7BFE00" />  
  18.      <TextView  
  19.         android:layout_width="100dp"  
  20.         android:layout_height="100dp"  
  21.         android:background="#FFFF00" />  
  22.       
  23. </FrameLayout>  


代码解释:

如图,我们设置了三个图片块,而这些图片块仅仅是三个设置了不同背景颜色的TextView

TextView都出现在了左上角,为了避免覆盖,大小是依次递减的

在外层FrameLayout中设置了前景图像显示的图片,以及把它设置到了右下角





②跟随手指移动的萌妹子


效果图:



实现流程:

step 1:先将main.xml布局设置为空白的FrameLayout,为其设置一个图片背景

step 2:新建一个继承View类的MeziView自定义组件类,在构造方法中初始化view的初始坐标

step 3:重写onDraw()方法,实例化一个空的画笔类Paint

step 4:调用BitmapFactory.decodeResource()生成位图对象

step 5:调用canvas.drawBitmap()绘制妹子的位图对象

step 6:判断图片上是否回收,否则强制回收图片

step 7:在主Java代码中获取帧布局对象,并且实例化一个MeziView类

step 8:会实例化的mezi对象添加一个触摸事件的监听器,重写onTouch方法,改变mezi的X,Y坐标,调用invalidate()重绘方法

step 9: 将mezi对象添加到帧布局中


详细代码:

布局代码:

[html]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值