精华内容
下载资源
问答
  • Android帧布局

    千次阅读 2018-01-12 15:31:37
    1.(FrameLayout)帧布局 可以说是最简单的一个布局,它其实就是在屏幕上开辟出了一块空白的区域,添加的子控件默认放到这块区域的左上角,会重叠,大小由最大子空间来决定,如果一样大只显示最上面的那个控件。 ...

    1.(FrameLayout)帧布局

    • 可以说是最简单的一个布局,它其实就是在屏幕上开辟出了一块空白的区域,添加的子控件默认放到这块区域的左上角,会重叠,大小由最大子空间来决定,如果一样大只显示最上面的那个控件。

    • 例:

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <!-- 帧布局里面默认的控件位于左上角,且会重叠(可以作为一个容器来使用,特定场景会更方便,更高效)
         android:layout_gravity="" 控制子控件在父控件中的位置
         android:gravity="center" 控制子控件中显示内容的位置,即控制控件内部文本的格式的
    -->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="First"
            android:textColor="#ed6d3a"
            android:textSize="40sp"
            android:layout_gravity="center"
            android:gravity="center"/>
     <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="F_L"
            android:textColor="#ed6d3a"
            android:textSize="40sp"
            android:layout_gravity="center"
         />
     <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="F_R"
            android:textColor="#ed6d3a"
            android:textSize="40sp"
            android:layout_gravity="center"
            android:gravity="right"/>
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Second"
            android:textColor="#f4f49c"
            android:textSize="35sp" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Third"
            android:textColor="#52f25a"
            android:textSize="30sp"
            android:layout_gravity="right"/>
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Fourth"
            android:textColor="#71efed"
            android:textSize="25sp"
            android:layout_gravity="bottom"/>
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Fifth"
            android:textColor="#eda3f5"
            android:textSize="20sp"
            android:layout_gravity="bottom|right"/>
    </FrameLayout>
    

    效果显示:
    这里写图片描述

    1.1常用属性

    • 前景图像:永远处于帧布局的最上面,不会被覆盖
    android:foreground:*设置帧布局容器的前景图像
    android:foregroundGravity:设置前景图像显示的位置
    
    展开全文
  • 主要介绍了Android布局之FrameLayout帧布局的相关资料,需要的朋友可以参考下
  • Android帧布局简单案例(附完整源码)

    千次阅读 2020-05-12 16:50:50
    本博文旨在对帧布局做测试样例,测试效果应该是对帧布局最好阐述,帧布局可以进行相应调整,即可达到为所欲为。

    本博文是安卓基础,不需要太高深的内容,错,根本没有任何高深的内容。需要的是你有会成功跑第一行hello world的基础。因此,我将仔细展现如何操控帧布局。

    帧布局测试效果

    在这里插入图片描述
    是不是感觉很丑,我也觉得。我来讲解为什么会这样

    帧布局提前打针

    帧布局是将组件放置到左上角位置,当添加多个组件时,后面的组件会遮盖之前的组件。 黑体是重点,不然你就无法理解帧布局的本质

    案例步骤

    创建新类

    确保大家都会跑模拟器哟
    mooc链接
    这个课程可以教大家配置模拟器,然后我们言归正传
    在这里插入图片描述
    这一步基础操作,我们继续往下面走,选择Empty Activity
    在这里插入图片描述
    finish完成后,直接
    在这里插入图片描述

    在这里插入图片描述
    然后等待模拟器会出现hello world! ,我们继续往下面做!

    上传图片

    从网上照一张或者自己搞一张5050~7575之间的图片,任意但不要太大,格式任意,名字不要任意。名字英文!规范!初学者就取by吧(测试里用了by)
    在这里插入图片描述
    一定要拖到drawable,比如像这种拖拽,
    在这里插入图片描述
    ok后,我们基础图片有了,直接上测试样例

    布局文件源码

    代码后我做分析

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
    
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:foreground="@drawable/by"
        android:foregroundGravity="right|top">
    
    
        <TextView
            android:id="@+id/txt"
            android:layout_width="350dp"
            android:layout_height="200dp"
            android:background="@color/colorAccent"/>
        <TextView
            android:layout_width="250dp"
            android:layout_height="150dp"
            android:id="@+id/txt2"
            android:background="@color/colorPrimary"
            android:text="后添加的文本框"
            android:textSize="24sp"
            />
    
    </FrameLayout>
    

    帧布局框架FrameLayout,我们添加了两个TextView。图片是在整个帧布局里做前景背景

    FrameLayout讲解

    这个代码width填充父元素。height匹配父元素。父元素就是整个app。gravity就是设置它的方向,foreground就是设置图片目录的。

    TextView讲解

    width与weight我们是采用dp单位,大家当作像素为单位吧。text就是显示文本内容。textSize就是字体大小,background就是背景颜色,调用的是文件下设置后的背景!id就是组件的别名。如果想自己改动在@+id/别名.比如:@+id/txt3.一般都是英文大家都懂得。

    观察布局文件调用

    在这里插入图片描述
    因为之前没动过,所以都是默认

    启动

    测试效果就是这样子的

    在这里插入图片描述

    总结

    • 搭建新类
    • 上传资源图片
    • 编辑布局代码
    • 更改文件调用
    • run测试效果
      帧布局就是将原先组件进行覆盖,后期基础学习都用线性布局,可以参考博主写的这个博文:
      Android基础小白线性布局简单案例(附完整源码)
      希望此博文对大家有帮助!
    展开全文
  • 主要为大家详细介绍了Android布局之帧布局FrameLayout,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Android的布局管理–帧布局 帧布局是一种特殊的布局,它以层叠的方式显示布局中的多个控件 帧布局主要掌握以下两个属性的使用: android:layout_gravity android:visibility android:visibility View:...

    Android的布局管理–帧布局

    在校期间想过自学这个,但是最后选择了学习前端,以下知识点并不记得了

    1. 帧布局是一种特殊的布局,它以层叠的方式显示布局中的多个控件

    2. 帧布局主要掌握以下两个属性的使用:
      android:layout_gravity
      android:visibility

      来源:慕课

    3. android:visibility
      View:VISIALBE 可见,显示到页面
      View:INVISIABLE 不可见,但是还是占用地方
      View:GONE 隐藏,不可见并且不占用地方

    利用帧布局实现一个点击切换的过程
    两张图片,一个按钮
    点击一次切换一次图片

    xml部分的代码

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent" android:layout_height="match_parent">
    
        <ImageView
            android:id="@+id/imageView"
            android:visibility="invisible"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@android:drawable/alert_dark_frame" />
    
        <ImageView
            android:id="@+id/imageView2"
            android:visibility="visible"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@android:drawable/arrow_down_float" />
    
    
        <Button
            android:id="@+id/button"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" />
    </FrameLayout>
    

    java部分的代码

    package com.example.zhao;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    
    public class MainActivity extends AppCompatActivity {
        private Button button;
        private ImageView imageView1,imageView2;
        private int count;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.test);
    
            button =(Button)findViewById(R.id.button);
            imageView1 =(ImageView)findViewById(R.id.imageView);
            imageView2 =(ImageView)findViewById(R.id.imageView2);
    
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (count%2==0){
                        imageView1.setVisibility(View.VISIBLE);
                        imageView2.setVisibility(View.INVISIBLE);
                    }
                    else{
                        imageView2.setVisibility(View.VISIBLE);
                        imageView1.setVisibility(View.INVISIBLE);
                    }
                    count++;
                }
            });
        }
    }
    
    

    实现截图:
    图片1
    图片2

    展开全文
  • Android FrameLayout (帧布局) 直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把它们放到这块区域的左上角FrameLayoutFrameLayout (帧布局) 有点类似于把零散的大小不一的纸按左上角对齐的...

    Android FrameLayout (帧布局) 直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把它们放到这块区域的左上角

    FrameLayout

    FrameLayout (帧布局) 有点类似于把零散的大小不一的纸按左上角对齐的方式定成一本书一样

    0d75a986f73fe30df38708150c7b917b.png

    FrameLayout (帧布局) 有一个缺点就是没有任何的定位方式,所以应用的场景并不多

    FrameLayout size 大小

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

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

    帧布局默认会将控件放置在左上角,但是可以通过 android:layout_gravity 属性指定到其它

    FrameLayout 属性

    FrameLayout 自己的属性只有就两个

    属性

    说明

    android:foreground

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

    android:foregroundGravity

    设置前景图像显示的位置

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

    范例

    首先创建一个 空的 Android 项目 cn.twle.android.FrameLayout

    最简单的帧布局

    6bbc18f3a9f0cc1165181175510ff64f.png

    首先下载 /static/i/meimei_160x360.jpg 放到 res/drawable 目录下并重命名为 meimei.jpg 作为前景图片

    然后修改 activity_main.xml 修改为 FrameLayout 布局并添加三个

    activity_main.xml

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/FrameLayout1"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity"

    android:foreground="@drawable/meimei"

    android:foregroundGravity="right|bottom">

    android:layout_width="500dp"

    android:layout_height="300dp"

    android:background="#00ff00" />

    android:layout_width="150dp"

    android:layout_height="150dp"

    android:background="#ff0000" />

    android:layout_width="100dp"

    android:layout_height="100dp"

    android:background="#00ffff" />

    很简单,三个 设置不同大小与背景色,依次覆盖,接着右下角的是前景图像

    通过 android:foreground="@drawable/meimei" 设置前景图像的图片,

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

    随手指点击移动的妹子

    0b55e6f69e5ec220d9c8affb8f14a5e2.gif

    创建一个 空的 Android 项目 cn.twle.android.FrameLayout

    下载 /static/i/android/meimei.zip,并将所有的图片拖动到 res/drawable 目录下

    如果你复用上面创建的项目,则需要将 meimei.jpg 删掉

    修改 activity_main.xml 为空白的 FrameLayout,为其设置一个图片背景 meimei.gif

    activity_main.xml

    android:id="@+id/mylayout"

    android:layout_width="match_parent"

    android:layout_height="match_parent">

    在 MainActivity.java 目录下新建一个继承 View 类的 MeiMeiView 自定义组件类

    在构造方法中初始化 view 的初始坐标

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

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

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

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

    MeiMeiView.java

    package cn.twle.android.framelayout;

    import android.content.Context;

    import android.graphics.Bitmap;

    import android.graphics.BitmapFactory;

    import android.graphics.Canvas;

    import android.graphics.Paint;

    import android.view.View;

    public class MeiMeiView extends View {

    //定义相关变量,依次是妹子显示位置的X,Y坐标

    public float bitmapX;

    public float bitmapY;

    public MeiMeiView(Context context) {

    super(context);

    //设置妹子的起始坐标

    bitmapX = 0;

    bitmapY = 200;

    }

    //重写View类的onDraw()方法

    @Override

    protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);

    //创建,并且实例化 Paint 的对象

    Paint paint = new Paint();

    //根据图片生成位图对象

    Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.meimei);

    //绘制妹子

    canvas.drawBitmap(bitmap, bitmapX, bitmapY,paint);

    //判断图片是否回收,木有回收的话强制收回图片

    if(bitmap.isRecycled())

    {

    bitmap.recycle();

    }

    }

    }

    修改 MainActivity

    获取帧布局对象,并且实例化一个 MeiMeiView 类

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

    将 meimei 对象添加到帧布局中

    MainActivity.java

    package cn.twle.android.framelayout;

    import android.os.Bundle;

    import android.view.MotionEvent;

    import android.view.View;

    import android.view.View.OnTouchListener;

    import android.widget.FrameLayout;

    import android.app.Activity;

    public class MainActivity extends Activity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    FrameLayout frame = (FrameLayout) findViewById(R.id.mylayout);

    final MeiMeiView meimei = new MeiMeiView(MainActivity.this);

    //为我们的妹子添加触摸事件监听器

    meimei.setOnTouchListener(new OnTouchListener() {

    @Override

    public boolean onTouch(View view, MotionEvent event) {

    //设置妹子显示的位置

    meimei.bitmapX = event.getX() - 150;

    meimei.bitmapY = event.getY() - 150;

    //调用重绘方法

    meimei.invalidate();

    return true;

    }

    });

    frame.addView(meimei);

    }

    }

    跑动的妹子

    54499e206f00f6b921789516b96a3398.gif

    范例的要点在于使用定时器定时发送更新图片的消息

    创建一个 空的 Android 项目 cn.twle.android.FrameLayout

    修改 activity_main.xml 为空白的 FrameLayout , 将前景图像的位置设置为中央位置

    activity_main.xml

    android:id="@+id/myframe"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:foregroundGravity="center">

    修改 MainActivity

    获取 FrameLayout 布局

    自定义一个 move() 方法,通过 switch 动态设置前景图片显示的位图

    新建一个 Handler 对象,重写 handlerMessage() 方法,调用图像的更新的方法

    在 onCreate()方法中新建一个计时器对象 Timer,重写 run 方法,每隔 170 毫秒向 handler 发送空信息

    MainActivity.java

    package cn.twle.android.framelayout;

    import java.util.Timer;

    import java.util.TimerTask;

    import android.os.Bundle;

    import android.os.Handler;

    import android.os.Message;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.FrameLayout;

    import android.app.Activity;

    import android.graphics.drawable.Drawable;

    public class MainActivity extends Activity {

    //初始化变量,帧布局

    FrameLayout frame = null;

    // 自定义一个用于定时更新 UI 界面的 handler类对象

    Handler handler = new Handler()

    {

    int i = 0;

    @Override

    public void handleMessage(Message msg) {

    //判断信息是否为本应用发出的

    if(msg.what == 0x123)

    {

    i++;

    move(i % 8 );

    }

    super.handleMessage(msg);

    }

    };

    //定义走路时切换图片的方法

    void move(int i)

    {

    Drawable a = getResources().getDrawable(R.drawable.m_1);

    Drawable b = getResources().getDrawable(R.drawable.m_2);

    Drawable c = getResources().getDrawable(R.drawable.m_3);

    Drawable d = getResources().getDrawable(R.drawable.m_4);

    Drawable e = getResources().getDrawable(R.drawable.m_5);

    Drawable f = getResources().getDrawable(R.drawable.m_6);

    Drawable g = getResources().getDrawable(R.drawable.m_7);

    Drawable h = getResources().getDrawable(R.drawable.m_8);

    //通过setForeground来设置前景图像

    switch(i)

    {

    case 0:

    frame.setForeground(a);

    break;

    case 1:

    frame.setForeground(b);

    break;

    case 2:

    frame.setForeground(c);

    break;

    case 3:

    frame.setForeground(d);

    break;

    case 4:

    frame.setForeground(e);

    break;

    case 5:

    frame.setForeground(f);

    break;

    case 6:

    frame.setForeground(g);

    break;

    case 7:

    frame.setForeground(h);

    break;

    }

    }

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    frame = (FrameLayout) findViewById(R.id.myframe);

    //定义一个定时器对象,定时发送信息给 handler

    new Timer().schedule(new TimerTask() {

    @Override

    public void run() {

    //发送一条空信息来通知系统改变前景图片

    handler.sendEmptyMessage(0x123);

    }

    }, 0,170);

    }

    }

    展开全文
  • Android中的帧布局

    2021-06-19 16:22:38
    文章目录1 Android中的帧布局 1 Android中的帧布局 首先看下效果: 下面看下xml: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
  • Android帧布局示例

    2016-07-02 21:48:12
    帧布局是从屏幕的左上角(0,0)坐标开始布局,多个组件层叠排序,后面的组件覆盖前面的组件。
  • FrameLayout这个布局相对前面两节介绍的布局就简单了很多,因此它的应用...新建UILayoutTestThree工程,修改activity_main.xml的代码:android:layout_width="match_parent"android:layout_height="match_parent">...
  • 主要介绍了Android开发实现布局帧布局霓虹灯效果,涉及Android界面布局、资源文件操作及属性设置等相关技巧,需要的朋友可以参考下
  • New UI-布局之FrameLayout(帧布局)详解 ——转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途!本节引言:FrameLayout(帧布局)可以说是六大布局中最为简单的一New UI-布局之FrameLayout(帧布局)详解——转载请注明...
  • 创建日期:2016-02-11一、简介帧布局是显示多个层次图的有效手段。比如第3章介绍的百度地图就是利用帧布局来实现的,它将图层分为22级分别缓存到指定的文件夹下,程序根据用户对地图的放大程度,自动判断应该将哪一...
  • Android FrameLayout 帧布局

    千次阅读 2019-07-13 16:47:42
    参考链接: https://blog.csdn.net/qq_36772866/article/details/89010678
  • Android四大布局之帧布局及其运用

    千次阅读 2016-04-28 16:59:07
    注:帧布局是四大布局中最简单的,一般都是加载自定义视图时提供容器,比如fragment中,viewpager里。  其中图片层叠的,后加的上方。
  • ;帧布局的特点;foreground与foregroundGravity;五种常见布局的使用场合及简要介绍 | 举例说明;五种常见布局的使用场合及简要介绍 | 举例说明;五种常见布局的使用场合及简要介绍 | 举例说明
  • 帧布局容器为每个加入其中的组件...FrameLayout的常用XML属性和相关方法XML属性相关方法说  明android:foregroundsetForeground(Drawable)设置该帧布局容器的前景图像android:foregroundGravitysetForegroundGravi...
  • 在这个布局中,所有的子元素都不能被指定放置的位置,他们统统防御这块区域的左上角, 并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。用途 常用于进度条的表示 <FrameLayout xmlns:...
  • 火山安卓帧布局器基本使用方式 一、帧布局器特性 这个组件可以实现让组件相互重叠覆盖的效果,比如:在一个图片的上面显示文字。 下面来演示这个效果。 1、在基本容器组件里面找到帧布局器,拖拽到窗口...
  • Android 帧布局 实现 霓虹灯 的效果,源代码,
  • 一、帧布局概述类似PS中的图层的概念,最后的控件放在最上面,可设置前景(颜色或图片)以及前景的位置。二、重要属性1、设置前景:android:foreground="此处填写颜色值或图片资源地址"2、设置前景位置:...
  • 从零开始学android帧布局.十四.>

    千次阅读 2014-08-13 15:31:01
    FrameLayout布局(帧布局)就是在屏幕上开辟一个区域以填充所有的组件,但是使用FrameLayout布局会将所有的组件都放在屏幕的左上角,而且所有的组件可以层叠进行显示。
  • Android帧布局FrameLayout

    2021-09-07 09:50:36
    这种布局方式在七大大布局中最为简单,这个布局直接在屏幕上开辟出一块空白的区域,当我们往里面添加控件的时候,会默认把他们放到这块区域的左上角,而这种布局方式却没有任何的定位方式,所以它应用的场景并不多。...
  • 3、在Framelayout下方设置帧布局容器的前景图像(始终在所有子控件之上)android:foreground =“一张图片或一种颜色” 设置前景图像显示位置android:foregroundGravity =“左边或者右边或其他位置” ...
  • 帧布局(FrameLayout)的标签名称是 FrameLayout,FrameLayout下面的控件全部是从 FrameLayout的左上角开始排列,就好比里面的控件都用了 CSS属性:position:absolute; top:0px; left:0px;一样。先写的控件呈现在下层...
  • Android帧布局介绍

    2013-12-30 20:49:57
  • 线性布局<LinearLayout>: 主要以水平或垂直方式来显示界面中的控件。当控件水平排序时,显示顺序为从左到右;当控件垂直排序时,显示顺序为从上到下。 线性布局中两个重要属性 orientation 设置排序方式...
  • 线性布局 .xml文件代码如下: &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt; &amp;lt;LinearLayout xmlns:android=&quot;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,909
精华内容 11,963
关键字:

安卓帧布局