Android-制作activity悬浮框
来源:互联网 发布:js页面加载时执行函数 编辑:程序博客网 时间:2024/05/20 06:30
说起悬浮框,估计有人想起360安全卫士的那个桌面悬浮框,也有人会说UC浏览器浏览网页时那里也有一个手势的悬浮框,是的。今天我在这里主要讲UC的这样,基于某个应用内的,而不是基于桌面的。
实现不难,先让我们瞧瞧布局先:
悬浮框的布局:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/float_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon" /></RelativeLayout>
首先,我们需要取得LayoutParms的对象mParams,使用mParams对象来设置windowManager的属性需要设置的参数有type、format、flags、gravty、起始坐标等,然后使用LayoutIflater来找到悬浮框布局,最后使用mWindowManager.addView(mLayout, mParams);来把布局添加到界面上。当然,我们可以设置它为移动或者固定,具体方法通过LayoutParms的flags属性来设置,该属性有FLAG_NOT_TOUCH_MODAL、FLAG_NOT_FOCUSABLE、FLAG_NOT_TOUCHABLE三种值。
package com.hjhrq1991.floatwindowdemo;import android.os.Bundle;import android.app.Activity;import android.graphics.PixelFormat;import android.view.Gravity;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.view.Window;import android.view.WindowManager;import android.view.WindowManager.LayoutParams;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.Toast;/** * * @Filename:floatwindowdemo→com.hjhrq1991.floatwindowdemo→MainActivity.java * @Description:悬浮窗口演示demo * * @author:hjhrq1991 * @version:v1.0 2014-9-14 上午1:43:40 */public class MainActivity extends Activity implements OnTouchListener,OnClickListener {private WindowManager mWindowManager;private LayoutParams wmParams;private RelativeLayout mLayout;private ImageView mView;private int width, height;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);// 获取LayoutParams对象wmParams = new WindowManager.LayoutParams();// 获取的是LocalWindowManager对象mWindowManager = this.getWindowManager();width = mWindowManager.getDefaultDisplay().getWidth();height = mWindowManager.getDefaultDisplay().getHeight();initView();}/** * * @Description: 初始化悬浮窗口 * @param * @return void * @throws */private void initView() {// 设置window typewmParams.type = LayoutParams.TYPE_PHONE;// 设置图片格式,效果为背景透明wmParams.format = PixelFormat.RGBA_8888;//// flags属性: 不可触摸|不接受任何事件|不影响后面的事件响应// FLAG_NOT_TOUCH_MODAL|FLAG_NOT_FOCUSABLE|FLAG_NOT_TOUCHABLEwmParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE;// 设置参考坐标,建议使用左上角。wmParams.gravity = Gravity.TOP | Gravity.LEFT;// 设置起始位置wmParams.x = 2 * width / 3;wmParams.y = 2 * height / 3;// 设置宽长参数wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;wmParams.height = WindowManager.LayoutParams.WRAP_CONTENT;LayoutInflater inflater = this.getLayoutInflater();mLayout = (RelativeLayout) inflater.inflate(R.layout.float_layout, null);mWindowManager.addView(mLayout, wmParams);mView = (ImageView) mLayout.findViewById(R.id.float_view);mView.setOnTouchListener(this);mView.setOnClickListener(this);}/** * 触摸事件 */@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubwmParams.x = (int) event.getRawX() - mLayout.getWidth() / 2;wmParams.y = (int) event.getRawY() - mLayout.getHeight() / 2 - 50;mWindowManager.updateViewLayout(mLayout, wmParams);return false;}/** * 点击事件 */@Overridepublic void onClick(View v) {// TODO Auto-generated method stubToast.makeText(getApplicationContext(), "可以设置点击事件", Toast.LENGTH_SHORT).show();}}代码写完了不代表就可以立马跑起来,现在跑起来必定会崩溃,因为我们需要在manifest.xml里添加权限<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />添加完后就可以跑起来了
demo下载
如有转载,请注明出处:http://blog.csdn.net/hjhrq1991
0 0
- Android-制作activity悬浮框
- android 悬浮框activity 二
- android 悬浮activity实现
- Android Activity 悬浮 半透明边框
- Android windowmanager 制作悬浮窗口
- Android 悬浮Activity并可拖动(访悬浮歌词)
- Android 悬浮Activity并可拖动(访悬浮歌词)
- Android 悬浮Activity并可拖动(访悬浮歌词)
- Android 悬浮Activity并可拖动(访悬浮歌词)
- Android 悬浮Activity并可拖动(访悬浮歌词)
- Android 悬浮Activity并可拖动(访悬浮歌词)
- Android 悬浮Activity并可拖动(访悬浮歌词)
- Android Activity 悬浮式窗口实现
- 如何在Android中实现悬浮Activity
- Android悬浮框应用--悬浮笔记
- Android 桌面悬浮框
- Android 桌面悬浮框
- Android桌面悬浮框
- 2013-2014年,回首一瞬间
- 2014鞍山网络预选赛1005(概率DP)hdu5001
- Core Graphics : 弧线和轨迹
- HowTo: Installation of Qt 5.0.1 and Qwt 6.1.0 rc3 (Win7 64bit)(转)
- 光滑的UIButton
- Android-制作activity悬浮框
- RabbitMQ学习(八)Access Control访问控制
- leetcode - Sort List
- 租谞族谞转注浊座咨捉罪左爪
- 他地图就有今天都已经有
- 归并排序 merge sort
- UIView中动画及其属性说明
- IOS-UIDynamic-UIKit动力学(整合版)
- LeetCode: Best Time to Buy and Sell Stock