Android任意窗口添加固定/浮动窗体:音乐播放器底部/顶部常驻播放窗体



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 {

	@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定义:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="myview" type="id"/>
</resources>



代码运行结果:

转载于:https://my.oschina.net/zhangphil/blog/1601994

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值