- 浏览: 619120 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (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 1801在默认情况下当发生横 ... -
Android EditText 增加自定义过滤
2012-02-19 22:20 2399在Android中,可以通过对EditText设置setFil ... -
解决android textview自动换行问题
2012-02-16 11:46 10608今天忽然发现android项目中的文字排版参差不齐的情况非常严 ... -
通过adb命令获取Android手机的IP地址
2011-12-30 19:11 4336要获取Android手机的IP地址,必须先保证你的Androi ... -
Android 图形用户界面 之 绘图(二) Paint类 主要方法介绍
2011-12-30 09:10 1430/** * Paint类介绍 * * Pa ... -
ListView底部分隔线的问题
2011-12-20 14:42 4296在工作中遇到了一个难题,就是一个listView在最下面的一个 ... -
android获取手机上的图片和视频缩略图thumbnails
2011-11-03 22:05 10014转贴自:http://www.android123.com.c ... -
Activity中使用AIDL让Service与Activity通信
2011-10-25 00:06 2764简易计算器,默认执行1+1的计算,点击go按钮执行计算,先看效 ... -
Android图形报表之AchartEngine(附开发包+API文档)
2011-10-22 16:49 11339统计报表: Java4Less (http://java4le ... -
android中用Spannable在TextView中设置超链接、颜色、字体
2011-10-21 23:08 50431昨晚研读 ApiDemo 源码至 com.example.an ... -
android动态设置TextView字体颜色
2011-10-21 11:50 6424最近写程序就遇到了这么个难题,在TextView 上,正常字体 ... -
layer-list和include的使用
2011-10-20 10:14 2389layer-list,include,merge使用,记录一下 ... -
自定义AlertDialog样式,根据屏幕大小来显示
2011-10-19 12:43 4563先介绍一些关于AlertDialog的基本知识: ... -
Android获取屏幕分辨率及DisplayMetrics简介
2011-10-19 08:56 2797Android 可设置为随着窗口大小调整缩放比例,但即便如此, ... -
android资源文件访问android.resource
2011-10-17 09:14 4153android.resource使用转自:http://www ... -
ImageView添加边框
2011-10-16 19:37 2081import android.content.Context; ... -
Android 实现TextView中文字链接的方式
2011-10-16 14:08 2480Android 的实现TextView中文字链接的方式有很多种 ... -
android实现TextView多行文本滚动
2011-10-16 13:38 6383Android中我们为了实现文本的滚动可以在ScrollVie ... -
ListView之setEmptyView的问题
2011-10-15 23:19 4954使用listView或者gridView时,当列表为空时,有时 ... -
去掉TabActivity底部默认白线
2011-10-15 16:38 3260经过一翻百度,google终于实现了TabActivity设置 ...
相关推荐
Qt悬浮窗口,实现主窗口与子悬浮窗口之间的转换,悬浮窗口显示的桌面最顶端,且可以实现自动隐藏,当鼠标移动到窗口顶部,悬浮窗口又可以显示出来
用vb制作一个类似于搜狐输入法的悬浮式的窗口,本源码向你展示了制作悬浮窗口的方法和完整的实例代码,这个悬浮的窗口显示于其它窗口的最顶层,不被遮挡,窗口中的按钮可调用出对应的操作菜单,和现在的搜狐输入法...
本文例子实现了点击显示悬浮窗口,同时窗口可播放视频,拖动位置,点击关闭及返回 APP 页面,通过例子来讲述悬浮窗口实现原理及细节处理,效果图如下所示: 悬浮窗口.gif 原理 WindowManager 对 View 视图进行添加...
效果如图:代码如下: 悬浮窗口示例 Try scrolling this window. 这是悬浮窗口 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
安卓使用WindowManager.addView()简单实现悬浮窗口播放视频
android悬浮窗口的实现
VB6.0仿迅雷悬浮窗口(图标)的实现源码,迅雷的悬浮窗相信大家很熟悉了,其实就是显示一个图标,悬浮在屏幕上,通过这个悬浮图标可单击右键调出菜单,双击图标则会显示主窗口,本源码模拟了悬浮窗口的实现,另外是...
悬浮窗口和半透明实现效果.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
VC++对窗口悬浮的实现,类似QQ的悬浮功能。
此demo为悬浮窗口和半透明实现效果,代码较为简单,可供参考
试着用Qt简单模拟了一个悬浮气泡。挺简单的,首先是窗口去边框,背景透明,然后重写窗口拖拽功能,最后用事件过滤器实现边缘黏滞效果
调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的addView方法创建View
Vb实现像输入法一样的悬浮窗口
mfc实现悬浮子窗口(动态实现):可以分为2种方法来实现;第一种是通过比较简单而实用的 动态实现api去修改属性;第二种办法是 实现的效果类似vs2008这样的 悬浮框、停靠等,是通过单文档 中 CDockablePane;也可以...
Frame动画(帧动画)在悬浮窗口上的实现
如何用C#做一个悬浮窗口程序? 网上有许多的教材但没有源码下载,自己写了一个于大家分享,内附教程. 用C#做一个像FlashGet的悬浮窗口,其实很简单,不像以前需要调用很多系统API。大致的步骤如下。 首先是主窗体部分...
android中实现悬浮窗口并滚动.pdf