本文共 1393 字,大约阅读时间需要 4 分钟。
Android任意窗口添加固定/浮动窗体:音乐播放器底部/顶部常驻播放窗体
在Android窗口添加一个固定或者浮动位置的窗体,这在一些常见的Android APP中经常遇到,比如音乐播放器类APP,这些APP通常在窗口主要位置放置歌曲列表之类,但会在底部或者顶部放置一个“条形”壮的微型播放器常驻窗口。可以通过写布局文件,比如在一个父FrameLayout里面在套一个小的FrameLayout,此FrameLayout将作为微型播放器的容器;也可以写一个相对布局,将承载微型播放器的子布局搁置在最底部。等等实现手段。
但是上述的手段是通过写xml布局文件,本文实现的是,不写xml布局文件,通过动态代码生成一个悬靠在底部的装载这种开发需求的代码。 测试的MainActivity.java需要的布局文件:没有任何内容,一个空白的布局而已。随后将在这个布局上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 { @Override protected 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); // 高度为200pix FrameLayout.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定义:
代码运行结果: