- 浏览: 2197002 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
手機監聽弹出浮动窗体
描述就不多说了...直接上代码了
描述就不多说了...直接上代码了
package com.iaiai.activity; import android.content.Context; import android.graphics.Color; import android.graphics.PixelFormat; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.view.Gravity; import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.TextView; /** * * <br/> * Title: TelListener.java<br/> * E-Mail: 176291935@qq.com<br/> * QQ: 176291935<br/> * Http: iaiai.iteye.com<br/> * Create time: 2013-8-16 上午10:44:27<br/> * <br/> * * @author 丸子 * @version 0.0.1 */ public class TelListener extends PhoneStateListener { private Context context; private WindowManager wm; private LinearLayout layout; private TextView tv; public TelListener(Context context) { this.context = context; } @Override public void onCallStateChanged(int state, String incomingNumber) { // TODO Auto-generated method stub super.onCallStateChanged(state, incomingNumber); if (state == TelephonyManager.CALL_STATE_RINGING) { wm = (WindowManager) context.getApplicationContext().getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY; params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.format = PixelFormat.RGBA_8888; params.gravity=Gravity.LEFT|Gravity.TOP; //调整悬浮窗口至左上角 layout = new LinearLayout(context); layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); layout.setBackgroundColor(Color.WHITE); tv = new TextView(context); layout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); tv.setText("这是悬浮窗口,来电号码:" + incomingNumber); layout.addView(tv); wm.addView(layout, params); } else if (state == TelephonyManager.CALL_STATE_IDLE) { if (wm != null) { wm.removeView(layout); } } } }
package com.iaiai.activity; import android.app.Service; import android.content.Context; import android.content.Intent; import android.os.IBinder; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; /** * * <br/> * Title: PhoneService.java<br/> * E-Mail: 176291935@qq.com<br/> * QQ: 176291935<br/> * Http: iaiai.iteye.com<br/> * Create time: 2013-8-16 上午10:49:06<br/> * <br/> * * @author 丸子 * @version 0.0.1 */ public class PhoneService extends Service { @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); } @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); Log.i("**************","启动服务"); TelephonyManager telM = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); telM.listen(new TelListener(this), PhoneStateListener.LISTEN_CALL_STATE); } @Override public void onDestroy() { super.onDestroy(); } @Override public boolean onUnbind(Intent intent) { return super.onUnbind(intent); } }
package com.iaiai.activity; import android.app.AlertDialog; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.TelephonyManager; import android.util.Log; import android.view.WindowManager; /** * * <br/> * Title: PhoneStatReceiver.java<br/> * E-Mail: 176291935@qq.com<br/> * QQ: 176291935<br/> * Http: iaiai.iteye.com<br/> * Create time: 2013-8-16 上午10:15:24<br/> * <br/> * * @author 丸子 * @version 0.0.1 */ public class PhoneStatReceiver extends BroadcastReceiver { private static final String TAG = "**********"; private static boolean incomingFlag = false; private static String incoming_number = null; @Override public void onReceive(Context context, Intent intent) { Intent interfaceService = new Intent(context, PhoneService.class); context.startService(interfaceService); // // 如果是拨打电话 // if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) { // incomingFlag = false; // String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); // Log.i(TAG, "call OUT:" + phoneNumber); // AlertDialog alertDialog = new AlertDialog.Builder(context).setPositiveButton("确定", null) // .setTitle(R.string.app_name).setMessage("打出:" + phoneNumber).create(); // alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); // 窗口可以获得焦点,响应操作 // alertDialog.show(); // } else { // // 如果是来电 // TelephonyManager tm = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE); // // switch (tm.getCallState()) { // case TelephonyManager.CALL_STATE_RINGING: // incomingFlag = true;// 标识当前是来电 // incoming_number = intent.getStringExtra("incoming_number"); // Log.i(TAG, "RINGING :" + incoming_number); // AlertDialog alertDialog = new AlertDialog.Builder(context).setPositiveButton("确定", null) // .setTitle(R.string.app_name).setMessage("来电:" + incoming_number).create(); // alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); // 窗口可以获得焦点,响应操作 // alertDialog.show(); // break; // case TelephonyManager.CALL_STATE_OFFHOOK: // if (incomingFlag) { // Log.i(TAG, "incoming ACCEPT :" + incoming_number); // AlertDialog alertDialog1 = new AlertDialog.Builder(context).setPositiveButton("确定", null) // .setTitle(R.string.app_name).setMessage("接通:" + incoming_number).create(); // alertDialog1.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); // 窗口可以获得焦点,响应操作 // alertDialog1.show(); // } // break; // // case TelephonyManager.CALL_STATE_IDLE: // if (incomingFlag) { // Log.i(TAG, "incoming IDLE"); // AlertDialog alertDialog2 = new AlertDialog.Builder(context).setPositiveButton("确定", null) // .setTitle(R.string.app_name).setMessage("挂断").create(); // alertDialog2.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); // 窗口可以获得焦点,响应操作 // alertDialog2.show(); // } // break; // } // } } }
package com.iaiai.activity; import java.util.List; import android.app.Activity; import android.app.ActivityManager; import android.content.Intent; import android.os.Bundle; /** * * * <br/> * Title: PhoneListenerActivity.java<br/> * E-Mail: 176291935@qq.com<br/> * QQ: 176291935<br/> * Http: iaiai.iteye.com<br/> * Create time: 2013-8-16 上午11:23:34<br/> * <br/> * * @author 丸子 * @version 0.0.1 */ public class PhoneListenerActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); service(); } private void service() { if (!serviceIsStart( ((ActivityManager) getSystemService(ACTIVITY_SERVICE)).getRunningServices(Integer.MAX_VALUE), "com.iaiai.activity.PhoneService")) { Intent intent = new Intent(this, PhoneService.class); startService(intent); } } // 通过Service的类名来判断是否启动某个服务 private boolean serviceIsStart(List<ActivityManager.RunningServiceInfo> mServiceList, String className) { for (int i = 0; i < mServiceList.size(); i++) { if (className.equals(mServiceList.get(i).service.getClassName())) { return true; } } return false; } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.iaiai.activity" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <!-- 访问网络 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 验证网络状态 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!-- 写入外部存储 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 读取电话状态访问电话状态 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 获取WiFi状态 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <!-- 系统对话框 --> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".PhoneListenerActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".PhoneStatReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter > <!-- <action android:name="android.intent.action.PHONE_STATE" /> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> --> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </receiver> <service android:name=".PhoneService" android:enabled="true" android:process=":remote" /> </application> </manifest>
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 627本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1102颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 993从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1168Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1005Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 839前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 929监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 800在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 949最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1327##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1115当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 778setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1507问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 767底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1782点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1370import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2314TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1549一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 865Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 932最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
在网页设计中,"悬浮DIV弹出窗体实现登录"是一种常见的交互设计手法,它能够为用户提供更加便捷和美观的登录体验。这种设计通常将登录表单以浮动窗口的形式展示,用户无需离开当前页面就可以完成登录操作,提升了...
在网页开发中,浮动窗体经常被用于创建弹出式通知、侧边栏、聊天窗口等。例如,当你在浏览网页时,可能会遇到一个始终停留在屏幕边缘的小窗口,这就是浮动窗体的应用。它们可以提供即时反馈,展示重要信息,或者提供...
首先,jQuery的弹出窗体特效通常涉及到创建一个可浮动的对话框或模态窗口,这些窗口可以用于显示信息、确认用户操作或提供额外的交互界面。这种效果可以通过使用`.show()`, `.hide()`, `.fadeIn()`, `.fadeOut()`等...
在C#编程中,弹出框(通常...总的来说,实现一个浮动层的弹出框涉及C#的窗体设计、事件处理、窗体属性设置以及可能的自定义控件和设计模式应用。通过熟练掌握这些知识点,开发者可以创建出灵活、交互性强的用户界面。
在IT行业中,模拟QQ弹出窗口是一项常见的编程挑战,它涉及到用户界面(UI)的设计与实现,以及消息通知系统的构建。Delphi是一款强大的Windows应用程序开发工具,它使用Object Pascal语言,提供了一套完整的图形用户...
KUIPopOver的设计目标是使得在iOS应用中添加具有弹出效果的界面元素变得更加容易和快捷。 首先,KUIPopOver的核心功能在于其灵活性和可定制性。通过这个库,开发者可以轻松地调整popover的外观,包括边框宽度、颜色...
在Android开发中,创建一个从底部弹出的QQ样式窗体是一种常见的交互设计,它可以用于展示菜单、选项或者对话框。这种效果通过巧妙地利用`WindowManager`服务和自定义布局来实现。以下是对这个主题的详细解释: 1. *...
`ShowDialog()`则会弹出模态对话框,阻止用户与父窗体或其他窗体的交互,直到关闭该窗体。 4. 源码分析: 完整源码中可能会包含以下关键部分: - 使用鼠标事件(如`MouseDown`、`MouseMove`和`MouseUp`)来实现...
2. **计时器控制**:可以使用`Timer`控件来定时隐藏或显示窗体,实现如弹出提示或定时提醒的功能。 3. **窗口状态保存**:在隐藏窗体之前,可能需要保存窗体的位置和大小,以便再次显示时恢复到原来的状态。 4. **...
在iOS应用开发中,我们常常需要实现一些美观且功能丰富的弹出视图,如Popover。"实用好看的浮动窗体.zip"提供的就是一个名为KUIPopOver的开源项目,它旨在为开发者提供一个简单易用且具有良好视觉效果的Popover组件...
在编程领域,特别是GUI(图形用户界面)设计中,"小窗体在桌面上浮动的控制"是一个常见的需求,尤其适用于工具提示、弹出通知或者监控应用等场景。本示例实现了一个窗体,该窗体可以在用户的桌面上自由移动,并在...
在JavaScript编程中,浮动窗口(通常称为弹出窗口或对话框)是一种常见的用户界面元素,用于显示额外的信息或提供交互功能。"可拖动的JS浮动窗口类"是指一种允许用户通过鼠标拖动来改变窗口位置的JavaScript实现。...
Popup控件是Silverlight中的一个非常有用的组件,它可以用来创建弹出式窗口,这些窗口可以在用户交互时动态显示或隐藏,非常适合用作提示信息的展示。 首先,让我们了解Popup控件的基本特性。Popup控件是不占据任何...
弹出层通常是指在网页上动态显示或隐藏的元素,它可以是对话框、提示框或者信息窗体。这些元素可以用来显示额外的信息,提供用户交互,或者请求用户的输入。 实现弹出层的可拖动功能,我们需要监听鼠标事件,如`...
首先,通过构造函数创建了名为DivWindow的JavaScript对象,这是整个弹出div窗体功能的核心。构造函数接收了五个参数:最外层div的ID、可拖动div的ID、退出按钮的ID、触发服务器端退出按钮的ID、窗口的宽度、窗口的...
在Android平台上,浮动窗口(通常称为悬浮窗或小窗口)是一种可以独立于应用程序主界面,在屏幕上方自由移动和缩放的UI元素。这种技术在许多应用中被广泛使用,例如浮动便签、屏幕录制工具或者多任务管理器。在本篇...
2. **模拟弹出窗口**:利用div,我们可以创建可拖动、可关闭的浮动窗体,通过JavaScript监听用户的鼠标事件来实现这些功能。 3. **内容隔离**:IFrame可以提供一种内容隔离机制,使得一个页面的不同部分不会互相...
jqmodal是一款轻量级的jQuery模态对话框插件,它创建了一个浮动在网页内容之上的透明层,用于显示弹出内容。jqmodal允许开发者自定义弹出框的样式,同时支持设置弹出框的位置、大小和透明度。此外,它还提供了关闭...
在提供的文件名称“SimplePopup”中,"Popup"通常指的是弹出式窗口,可能是这个浮动窗组件的类名。这个类可能包含了实现上述功能的代码,如显示、定位、关闭以及焦点管理等逻辑。 总的来说,这个项目提供了一个在...
综上所述,"openlayers3要素移动交互并弹出要素信息"涉及的关键技术包括OpenLayers的初始化、图层管理、样式设计、事件监听、信息弹出以及DOM操作。通过以上步骤,我们可以创建一个互动性强、用户体验良好的地图应用...