- 浏览: 628423 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (164)
- android(基础) (81)
- android(进阶) (2)
- android(底层) (7)
- android(面试) (0)
- android(多媒体) (1)
- android(组件学习) (4)
- android(网络相关) (0)
- android(动画) (1)
- android(数据库) (2)
- android(UI样式) (3)
- android(xml) (0)
- android(调试) (14)
- android(环境搭建) (7)
- android(api) (1)
- C++ (1)
- C (0)
- JavaSE (2)
- Objective-c (1)
- JavaScript (0)
- 设计模式 (0)
- eclipse (3)
- javaee (4)
- 其它 (5)
- linux (18)
- Oracle (1)
- mysql (1)
- 嵌入式linux (1)
- 版本控制工具 (3)
- web前端 (1)
- python (1)
最新评论
-
chungehenyy:
android颜色对应的xml配置值,颜色表 -
u011467537:
...
android中用Spannable在TextView中设置超链接、颜色、字体 -
SurpriseLee:
不能更赞了!
android颜色对应的xml配置值,颜色表 -
u012094586:
这个代码是不是不全呀,能不能提供完整版的给予参考呢?xiexi ...
Android VideoView如何播放RTSP的流 -
luechenying:
顶上天!!!!!!!!!!!!!!!!!!
android颜色对应的xml配置值,颜色表
最近一些软件有了很牛X的悬浮窗口功能,很好奇怎么实现的,刚刚终于弄出来了...原理就是调用WindowManager直接操控View,然后再配合相应的WindowManager.LayoutParams属性,就OK了。这样产生出来的View根据LayoutParams的属性不同,效果也不一样。有关具体的属性,请自行参考SDK文档。
以下代码请仅供演示:
以下转自:http://blog.csdn.net/ljl_xyf/article/details/6894220
今天发现一些软件可以在android 的桌面上显示一些浮动小窗口,经过一番查找,终于找到的解决方案,代码如下:
FloatingFunc.java:
测试代码,放到任意的 Activity 代码里就可以,可以用手拖动位置:
效果如下:
注意事项:
一定要在AndroidManifest.xml添加
系统权限,不然会出错的呀
以下代码请仅供演示:
public class myFloatView extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bb=new Button(getApplicationContext()); WindowManager wm=(WindowManager)getApplicationContext().getSystemService("window"); WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams(); wmParams.type=2002; //type是关键,这里的2002表示系统级窗口,你也可以试试2003。 wmParams.format=1; wmParams.flags=40; wmParams.width=40; wmParams.height=40; wm.addView(bb, wmParams); }
以下转自:http://blog.csdn.net/ljl_xyf/article/details/6894220
今天发现一些软件可以在android 的桌面上显示一些浮动小窗口,经过一番查找,终于找到的解决方案,代码如下:
FloatingFunc.java:
package hrxcframe.comm; import android.app.Activity; import android.content.Context; import android.graphics.Rect; import android.test.R; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; /** * 可以永远显示在android屏幕最上方的浮动菜单 * * @author liujl v1.0 需要添加 <uses-permission * android:name="android.permission.SYSTEM_ALERT_WINDOW" * /><!--系统弹出窗口权限-->权限不然会报错 */ public class FloatingFunc { /** * 浮动窗口在屏幕中的x坐标 */ private static float x = 0; /** * 浮动窗口在屏幕中的y坐标 */ private static float y = 200; /** * 屏幕触摸状态,暂时未使用 */ private static float state = 0; /** * 鼠标触摸开始位置 */ private static float mTouchStartX = 0; /** * 鼠标触摸结束位置 */ private static float mTouchStartY = 0; /** * windows 窗口管理器 */ private static WindowManager wm = null; /** * 浮动显示对象 */ private static View floatingViewObj = null; /** * 参数设定类 */ public static WindowManager.LayoutParams params = new WindowManager.LayoutParams(); public static int TOOL_BAR_HIGH = 0; /** * 要显示在窗口最前面的对象 */ private static View view_obj = null; /** * 要显示在窗口最前面的方法 * * @param context * 调用对象Context getApplicationContext() * @param window * 调用对象 Window getWindow() * @param floatingViewObj * 要显示的浮动对象 View */ public static void show(Context context, Window window, View floatingViewObj) { // 加载xml文件中样式例子代码 // ********************************Start************************** // LayoutInflater inflater = // LayoutInflater.from(getApplicationContext()); // View view = inflater.inflate(R.layout.topframe, null); // wm = // (WindowManager)context.getApplicationContext().getSystemService(Context.WINDOW_SERVICE); // 加载xml文件中样式例子代码 // *********************************End*************************** // // 关闭浮动显示对象然后再显示 close(context); FloatingFunc.floatingViewObj = floatingViewObj; view_obj = floatingViewObj; Rect frame = new Rect(); // 这一句是关键,让其在top 层显示 // getWindow() window.getDecorView().getWindowVisibleDisplayFrame(frame); TOOL_BAR_HIGH = frame.top; wm = (WindowManager) context// getApplicationContext() .getSystemService(Activity.WINDOW_SERVICE); params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT | WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY; params.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE; // 设置悬浮窗口长宽数据 params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT; // 设定透明度 params.alpha = 80; // 设定内部文字对齐方式 params.gravity = Gravity.LEFT | Gravity.TOP; // 以屏幕左上角为原点,设置x、y初始值? params.x = (int) x; params.y = (int) y; // tv = new MyTextView(TopFrame.this); wm.addView(floatingViewObj, params); } /** * 跟谁滑动移动 * * @param event * 事件对象 * @param view * 弹出对象实例(View) * @return */ public static boolean onTouchEvent(MotionEvent event, View view) { // 获取相对屏幕的坐标,即以屏幕左上角为原点 x = event.getRawX(); y = event.getRawY() - 25; // 25是系统状态栏的高度 Log.i("currP", "currX" + x + "====currY" + y);// 调试信息 switch (event.getAction()) { case MotionEvent.ACTION_DOWN: state = MotionEvent.ACTION_DOWN; // panTime(); // 获取相对View的坐标,即以此View左上角为原点 mTouchStartX = event.getX(); mTouchStartY = event.getY(); Log.i("startP", "startX" + mTouchStartX + "====startY" + mTouchStartY);// 调试信息 break; case MotionEvent.ACTION_MOVE: state = MotionEvent.ACTION_MOVE; updateViewPosition(view); break; case MotionEvent.ACTION_UP: state = MotionEvent.ACTION_UP; updateViewPosition(view); mTouchStartX = mTouchStartY = 0; break; } return true; } /** * 关闭浮动显示对象 */ public static void close(Context context) { if (view_obj != null && view_obj.isShown()) { WindowManager wm = (WindowManager) context .getSystemService(Activity.WINDOW_SERVICE); wm.removeView(view_obj); } } /** * 更新弹出窗口位置 */ private static void updateViewPosition(View view) { // 更新浮动窗口位置参数 params.x = (int) (x - mTouchStartX); params.y = (int) (y - mTouchStartY); wm.updateViewLayout(FloatingFunc.floatingViewObj, params); } }
测试代码,放到任意的 Activity 代码里就可以,可以用手拖动位置:
final TextView tv = new TextView(getApplicationContext()); tv.setText("http://www.my400800.cn"); tv.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent arg1) { FloatingFunc.onTouchEvent(arg1, tv); return true; } });
效果如下:
注意事项:
一定要在AndroidManifest.xml添加
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
系统权限,不然会出错的呀
发表评论
-
Fragment 横竖屏切换问题
2013-04-24 14:41 1886在默认情况下当发生横 ... -
Android EditText 增加自定义过滤
2012-02-19 22:20 2436在Android中,可以通过对EditText设置setFil ... -
解决android textview自动换行问题
2012-02-16 11:46 10814今天忽然发现android项目中的文字排版参差不齐的情况非常严 ... -
通过adb命令获取Android手机的IP地址
2011-12-30 19:11 4414要获取Android手机的IP地址,必须先保证你的Androi ... -
Android 图形用户界面 之 绘图(二) Paint类 主要方法介绍
2011-12-30 09:10 1490/** * Paint类介绍 * * Pa ... -
ListView底部分隔线的问题
2011-12-20 14:42 4345在工作中遇到了一个难题,就是一个listView在最下面的一个 ... -
android获取手机上的图片和视频缩略图thumbnails
2011-11-03 22:05 10087转贴自:http://www.android123.com.c ... -
Activity中使用AIDL让Service与Activity通信
2011-10-25 00:06 2813简易计算器,默认执行1+1的计算,点击go按钮执行计算,先看效 ... -
Android图形报表之AchartEngine(附开发包+API文档)
2011-10-22 16:49 11429统计报表: Java4Less (http://java4le ... -
android中用Spannable在TextView中设置超链接、颜色、字体
2011-10-21 23:08 50594昨晚研读 ApiDemo 源码至 com.example.an ... -
android动态设置TextView字体颜色
2011-10-21 11:50 6494最近写程序就遇到了这么个难题,在TextView 上,正常字体 ... -
layer-list和include的使用
2011-10-20 10:14 2426layer-list,include,merge使用,记录一下 ... -
自定义AlertDialog样式,根据屏幕大小来显示
2011-10-19 12:43 4643先介绍一些关于AlertDialog的基本知识: ... -
Android获取屏幕分辨率及DisplayMetrics简介
2011-10-19 08:56 2848Android 可设置为随着窗口大小调整缩放比例,但即便如此, ... -
android资源文件访问android.resource
2011-10-17 09:14 4235android.resource使用转自:http://www ... -
ImageView添加边框
2011-10-16 19:37 2133import android.content.Context; ... -
Android 实现TextView中文字链接的方式
2011-10-16 14:08 2544Android 的实现TextView中文字链接的方式有很多种 ... -
android实现TextView多行文本滚动
2011-10-16 13:38 6463Android中我们为了实现文本的滚动可以在ScrollVie ... -
ListView之setEmptyView的问题
2011-10-15 23:19 4991使用listView或者gridView时,当列表为空时,有时 ... -
去掉TabActivity底部默认白线
2011-10-15 16:38 3319经过一翻百度,google终于实现了TabActivity设置 ...
相关推荐
以下是一个简单的悬浮窗口实现示例: ```java // 创建布局 LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.float_view, ...
下面是一个简单的悬浮窗口实现示例: ```java WindowManager.LayoutParams params = new WindowManager.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Build....
2. JavaScript在悬浮窗口实现中的作用: JavaScript是一种广泛用于前端开发的脚本语言,可以用来控制悬浮窗口的行为和样式。通过JavaScript可以定义悬浮窗口的出现逻辑(比如页面滚动到某个位置时显示),以及悬浮...
在本文中,我们将深入探讨如何在Qt环境中实现窗口悬浮效果,以及如何在主窗口与子悬浮窗口之间进行转换。Qt是一个强大的跨平台应用程序开发框架,它提供了丰富的功能和API,使得开发者可以方便地创建出具有高级特性...
用vb制作一个类似于搜狐输入法的悬浮式的窗口,本源码向你展示了制作悬浮窗口的方法和完整的实例代码,这个悬浮的窗口显示于其它窗口的最顶层,不被遮挡,窗口中的按钮可调用出对应的操作菜单,和现在的搜狐输入法...
本文例子实现了点击显示悬浮窗口,同时窗口可播放视频,拖动位置,点击关闭及返回 APP 页面,通过例子来讲述悬浮窗口实现原理及细节处理,效果图如下所示: 悬浮窗口.gif 原理 WindowManager 对 View 视图进行添加...
4. **悬浮窗口实现**:通过QWindow或QWidget的子类,结合QGraphicsView和QGraphicsScene进行图形渲染,可以实现浮动窗口的功能。悬浮窗口可以在主窗口上方自由移动,不受父窗口限制。 5. **事件处理与信号槽机制**...
标题中的“桌面上的悬浮窗口(类似Flashget)”是指一种在电脑桌面顶部浮动的小窗口,类似于早期...而DeskTopTools这样的压缩包可能包含的就是实现这些功能的软件或脚本,用户解压后安装即可体验到悬浮窗口带来的便利。
实现悬浮窗口技术涉及到多个编程概念,包括窗口管理、事件处理和多线程。开发者需要利用操作系统提供的API(应用程序接口)来创建和管理这些窗口,确保它们能正确响应用户的触摸或鼠标操作,并与其他应用和平共处。...
本文将基于提供的标题"Qt悬浮窗口",描述以及相关文件名,详细讲解实现这样一个功能的关键步骤。 首先,让我们了解一下Qt中的窗口去边框。在Qt中,我们可以通过设置窗口的窗口样式(WindowFlags)来移除边框。在`...
页面悬浮窗口源码是一种在网页设计中常见的技术,主要用于实现元素在页面滚动时始终保持在屏幕某一位置的效果。这种设计常用于展示重要的通知、广告或工具栏,为用户提供便捷的访问途径,而不会因页面滚动而消失。在...
在Android开发中,实现一个可自由移动的悬浮窗口通常涉及到`WindowManager`服务的使用。`WindowManager`是Android系统提供的一个接口,允许应用程序在窗口管理器中添加、删除或配置视图。在这个主题中,我们将深入...
在Android开发中,"android悬浮窗口 demo"是一个用于展示如何在Android系统上创建并实现悬浮窗口(也称为小部件或浮动视图)的应用实例。悬浮窗口通常被设计为始终显示在用户界面的最顶层,即使在其他应用运行时也...
实现Android悬浮窗口涉及到对Android系统的底层API有深入的理解以及对权限管理的掌握。 ### 1. 允许悬浮窗口权限 在Android 4.4 (KitKat)之后,应用需要获取`SYSTEM_ALERT_WINDOW`权限才能显示悬浮窗口。在...
为了实现悬浮窗口的效果,我们需要利用`Form`类的一个属性:`TopMost`。`TopMost`属性设置为`true`时,该窗体将始终位于其他非顶级窗口的顶部。在C#中,我们可以这样设置: ```csharp public partial class ...
"Android悬浮窗口demo"是一个用于演示如何在Android平台上实现此类功能的应用。 首先,悬浮窗口的实现主要依赖于两个核心组件:`WindowManager`服务和一个特殊的窗口类型。`WindowManager`是Android系统提供的接口...
VB6.0仿迅雷悬浮窗口(图标)的实现源码,迅雷的悬浮窗相信大家很熟悉了,其实就是显示一个图标,悬浮在屏幕上,通过这个悬浮图标可单击右键调出菜单,双击图标则会显示主窗口,本源码模拟了悬浮窗口的实现,另外是...
通过JavaScript,开发者能够创建动态的、可自定义的悬浮窗口,以提高用户体验或实现特定功能。 在JavaScript中,悬浮窗口通常通过以下技术实现: 1. CSS定位:利用CSS的`position`属性(如`fixed`或`absolute`)来...