悬浮窗口
来源:互联网 发布:小加索尔16-17 数据 编辑:程序博客网 时间:2024/04/30 22:30
一、核心代码:
package com.tentinet.testfloatingwinding;import android.content.Intent;import android.graphics.PixelFormat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.WindowManager;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.Toast;public class MainActivity extends AppCompatActivity { /** 悬浮框布局*/ private LinearLayout floating_window_layout; private WindowManager windowManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); createFloatingWindow(); } /** * 创建悬浮框口 */ private void createFloatingWindow() { //第一步:加载悬浮框布局 LayoutInflater layoutInflater = this.getLayoutInflater(); floating_window_layout = (LinearLayout) layoutInflater.inflate(R.layout.floating_window_layout,null); //第二:设置悬浮框属性 final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE; layoutParams.format = PixelFormat.RGBA_8888; layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; layoutParams.gravity = Gravity.LEFT|Gravity.TOP; layoutParams.x = 60; layoutParams.y = 60; layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT; layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; //第三步获取本地窗口管理器 windowManager = this.getWindowManager(); //第四步添加布局 windowManager.addView(floating_window_layout, layoutParams); //第五步:设置触摸移动监听 ImageView img_floating_window = (ImageView) floating_window_layout.findViewById(R.id.img_floating_window); img_floating_window.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { layoutParams.x = (int)event.getRawX() - floating_window_layout.getWidth() / 2; layoutParams.y = (int)event.getRawY() - floating_window_layout.getHeight() / 2; windowManager.updateViewLayout(floating_window_layout, layoutParams); return false; } }); //第六步:设置点击监听 img_floating_window.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /* Toast.makeText(MainActivity.this,"被点击了",Toast.LENGTH_SHORT).show();*/ startActivity(new Intent(MainActivity.this,TestActivity.class)); } }); } @Override protected void onStop() { super.onStop(); } @Override protected void onDestroy() { if (floating_window_layout != null){ floating_window_layout.setVisibility(View.GONE); } if (windowManager != null){ windowManager.removeView(floating_window_layout); } super.onDestroy(); }}
二、floating_window_layout布局:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="60dp" android:layout_height="60dp"> <ImageView android:id="@+id/img_floating_window" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@mipmap/ic_launcher"/></LinearLayout>
三、源码:http://download.csdn.net/detail/lu1024188315/9452971
2 0
- 悬浮窗口
- 悬浮窗口
- 悬浮窗口
- 悬浮窗口
- 悬浮窗口
- 悬浮窗口的学习
- 【JavaScript】悬浮窗口
- MFC 悬浮窗口
- Android中悬浮窗口
- 悬浮窗口 onscroll实现
- android 悬浮窗口
- android 悬浮窗口
- Android悬浮窗口基本知识
- android 悬浮窗口
- Android中悬浮窗口
- android 悬浮窗口
- Android 中悬浮窗口
- MFC创建悬浮窗口
- 2016-3-2 answer
- phpmailer 简单实例
- 开发的时候碰到的问题
- 库函数memcpy的实现
- EasyUI Combobox 二级联动
- 悬浮窗口
- system.timers.timer用法简介
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
- 2746: [HEOI2012]旅行问题
- 二叉搜索树的后序遍历序列||剑指offer
- crontab 开启日志模式
- 项目管理中需要注意的问题罗列
- android 中处理崩溃异常并重启程序
- android图片处理方法(不断收集中)