Android任意窗口添加固定/浮动窗体:音乐播放器底部/顶部常驻播放窗体
16lz
2021-01-23
Android任意窗口添加固定/浮动窗体:音乐播放器底部/顶部常驻播放窗体
在Android窗口添加一个固定或者浮动位置的窗体,这在一些常见的Android APP中经常遇到,比如音乐播放器类APP,这些APP通常在窗口主要位置放置歌曲列表之类,但会在底部或者顶部放置一个“条形”壮的微型播放器常驻窗口。可以通过写布局文件,比如在一个父FrameLayout里面在套一个小的FrameLayout,此FrameLayout将作为微型播放器的容器;也可以写一个相对布局,将承载微型播放器的子布局搁置在最底部。等等实现手段。
但是上述的手段是通过写xml布局文件,本文实现的是,不写xml布局文件,通过动态代码生成一个悬靠在底部的装载这种开发需求的代码。
测试的MainActivity.java需要的布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="zhangphil.add.MainActivity" ></RelativeLayout>
没有任何内容,一个空白的布局而已。随后将在这个布局上Java动态代码添加一个FrameLayout。
MainActivity.java:
package zhangphil.add;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.Gravity;import android.view.ViewGroup;import android.widget.FrameLayout;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);FrameLayout layout = new FrameLayout(this);// 作为演示,随意设置一个有区别的颜色。layout.setBackgroundColor(Color.RED);// 可以设置一个id,也可以不设置。设置的话需要在ids.xml定义id。layout.setId(R.id.myview);// 高度为200pixFrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,200);// 在窗口的底部layoutParams.gravity = Gravity.BOTTOM;// 整个窗口ViewGroup viewParent = (ViewGroup) getWindow().getDecorView();// 将layout添加到窗口上层viewParent.addView(layout, layoutParams);}}
如果需要为Java动态代码生成的FrameLayout设置一个id,则需要在ids.xml定义:
<?xml version="1.0" encoding="utf-8"?><resources> <item name="myview" type="id"/></resources>
代码运行结果:
更多相关文章
- android 百分比布局percentFrameLayout,percentRelativeLayout的
- 谷歌借Android布局中国3G
- Android 从源码看懂窗口绘制流程
- Android入门进阶教程(17)-WindowManager 窗口管理介绍
- Android的布局复用与优化
- [Android]MirrorOp-Sender传屏端,完全破解版,无5分钟时间限制,无注
- android Listview的getView和convertview原理解析以及使用不同的
- 实现一个用于显示当前时间的Google Android 窗口小部件(AppWidget