Android仿微信视屏悬浮窗效果仿微信视屏悬浮窗效果
主要为大家详细介绍了Android仿微信视屏悬浮窗效果,文中示例代码介绍的非常详细,具有一定的参考价值,
感兴趣的小伙伴们可以参考一下
在项目中需要对接入的腾讯云音视频,可以悬浮窗显示,悬浮窗可拖拽,并且在悬浮窗不影响其他的activity的焦点。
这个大神的文章Android基于腾讯云实时音视频仿微信视频通话最小化悬浮,他讲的是视频通话时,将远端视频以悬浮窗形式
展示,根据他的代码我进行了部分简化
1.悬浮窗效果:悬浮窗效果:点击缩小按钮,将当前远端视屏加载进悬浮窗,且悬浮窗可拖拽,不影响其他界面焦点;点击悬浮窗可返回原
来的Activity
2.实现悬浮窗需要:实现悬浮窗需要:
在androidManifest中申请悬浮窗权限<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
在androidManifest中注册FloatWindowService
3.视屏视屏activity实现:实现:
-将activity置于后台关键代码:moveTaskToBack(true);//将activity置于后台
-开启悬浮窗
/**
* 定义服务绑定的回调 开启视频通话服务连接
*/
private ServiceConnection mVideoCallServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 获取服务的操作对象
FloatWindowService.MyBinder binder = (FloatWindowService.MyBinder) service;
binder.getService();
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
/*
* 开启悬浮Video服务
*/
private void startVideoService() {
//最小化Activity
moveTaskToBack(true);//将activity置于后台
//开启服务显示悬浮框
Intent serviceVideoIntent = new Intent(this, FloatWindowService.class);
mServiceBound = bindService(serviceVideoIntent, mVideoCallServiceConnection, Context.BIND_AUTO_CREATE);//绑定Service
}
-悬浮窗结束时
//在onDestroy()与onReStart()中解绑并销毁相关内容
if (mServiceBound) {
unbindService(mVideoCallServiceConnection);//解绑
mServiceBound = false;
}
4.悬浮窗实现相关代码:悬浮窗实现相关代码:
/**
* 视频悬浮窗服务
*/
public class FloatWindowService extends Service implements View.OnTouchListener {
private WindowManager mWindowManager;
private WindowManager.LayoutParams wmParams;
private LayoutInflater inflater;
//浮动布局view
private View mFloatingLayout;
//容器父布局
private View mMainVIew;
//开始触控的坐标,移动时的坐标(相对于屏幕左上角的坐标)
评论5