New UI-布局之FrameLayout(帧布局)详解

New UI-布局之FrameLayout(帧布局)详解

 ——转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途!


小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的

力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文

更加的详尽,帮到更多的人,O(∩_∩)O谢谢!

小猪Android开发交流群:小猪Android开发交流群群号:421858269

新Android UI实例大全目录:http://blog.csdn.net/coder_pig/article/details/42145907


本节引言:


FrameLayout(帧布局)可以说是六大布局中最为简单的一个布局,这个布局直接在屏幕上开辟出

一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角,而这种布局方式

没有任何的定位方式,所以它应用的场景并不多;帧布局的大小控件中最大的子控件决定,如果控件

大小一样大的话,那么同一时刻就只能看到最上面的那个组件!后续添加的控件会覆盖前一个!

虽然默认会将控件放置在左上角,但是我们也可以通过layout_gravity属性,指定到其他的位置!

本节除了给大家演示一个最简单的例子外,还给大家带了两个好玩的例子,有兴趣的可以看看!


正文:


常用属性:

FrameLayout的属性很少就两个,但是在说之前我们先介绍一个东西:

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

两个属性:

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

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




实例演示:

1)最简单的demo:

效果图:


代码如下:

[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设置不同大小与背景色,依次覆盖,接着右下角的是前景图像,通过

android:foreground="@drawable/logo"设置前景图像的图片

android:foregroundGravity="right|bottom"设置前景图像的位置在右下角





2)随手指移动的萌妹子:

效果图:


实现流程:

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对象添加到帧布局中

实现代码如下:

布局代码:main_activity.xml:

[html]  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值