导航:首页 > 操作系统 > android弹出窗体

android弹出窗体

发布时间:2022-05-26 18:47:35

① 安卓开发怎么通过点击按钮弹出以下窗口

你可以获取对话框的点击事件,比如点击了确定然后你就跳转
AlertDialog.Builder builder = new Builder(CommentActivity.this);
builder.setMessage("确定要跳转吗?");
builder.setTitle("提示");
builder.setPositiveButton("确认",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
arg0.dismiss();
这里跳转到你想要去的页面
}
});
builder.setNegativeButton("取消",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();

arg0就是该listener的接口啊,通过这个参数就可以关闭对话框。
跳到想去的页面就startIntent就好了,你把那一行中文换成 Intent it = new Intent(this,UserActivity.class); startActivity(it); 当然要跳去哪个页面就你自己决定

AlertDialog.Builder builder = new Builder(CommentActivity.this);
builder.setMessage("确定要跳转吗?");
builder.setTitle("提示");
builder.setPositiveButton("确认",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
arg0.dismiss();
Intent it = new Intent(this,UserActivity.class);
startActivity(it);
}
});
builder.setNegativeButton("取消",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();

② 如何实现android中监听来电并生成悬浮窗体提示

android.permission.READ_PHONE_STATE"权限
Xml代码
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

还需要注册来电监听,目前我的处理方式是接收开机广播,然后在接收到广播后注册来电监听。接收开机广播需要有“android.permission.RECEIVE_BOOT_COMPLETED”权限,manifest中申明如下
java代码
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

然后注册广播接收类

Xml代码
<receiver android:name=".PhoneBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
PhoneBootReceiver中注册监听来电,首先得获取系统服务“TELEPHONY_SERVICE”

Java代码
TelephonyManager telM = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
然后添加监听

Java代码
telM.listen(new TelListener(context), PhoneStateListener.LISTEN_CALL_STATE);
TelListener是自己定义的电话状态监听类,继承自PhoneStateListener,监听来电只需要实现onCallStateChanged(int

state, String incomingNumber)方法。
咳咳...标题上说了弹出悬浮窗口,其实悬浮窗口就是在WindowManager中添加一个View,这个功能我也是在TelListener实现的。要想实现悬浮窗口,首先得有“android.permission.SYSTEM_ALERT_WINDOW”的权限,在manifest中申明如下:
Xml代码
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
WindowManager需要通过context.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
来获取。
先把TelListener源码放出来,再详解
Xml代码
public class TelListener extends PhoneStateListener {
private Context context;

private WindowManager wm;
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;
<span style="white-space: pre;"> </span>params.format = PixelFormat.RGBA_8888;
tv = new TextView(context);
tv.setText("这是悬浮窗口,来电号码:" + incomingNumber);
wm.addView(tv, params);

}else if(state == TelephonyManager.CALL_STATE_IDLE){
if(wm != null){
wm.removeView(tv);
}
}
}
}
state

= TelephonyManager.CALL_STATE_RINGING表示有新的来电,state =
TelephonyManager.CALL_STATE_IDLE表示电话中断(可能理解不是很准确,电话挂断的时候state会和TelephonyManager.CALL_STATE_IDLE相等)
定义窗口布局

Java代码
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
设置窗口类型在所有窗口之上
Java代码
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
别忘了
Java代码
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
如果没有这句话的话,在生成悬浮窗口后,悬浮窗口后的界面上东西都不能点。这句话的目的是让悬浮窗口失去焦点。
背景透明
Java代码
params.format = PixelFormat.RGBA_8888;
本例中悬浮窗口只是显示一个TextView其内容为“这是悬浮窗口,来电号码:xxxxxx”,最后将TextView添加到窗体中
Java代码
wm.addView(tv, params);
在电话中断后将TextView移除,否则会一直显示的...
Java代码
wm.removeView(tv);
啦..本文就到这儿了...
“啥?要可移动的?”
要想可以拖动的话,那给TextView添加setOnTouchListener,实现OnTouchListener的onTouchListener方法。
Java代码
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;
修改为
Java代码
params.type = WindowManager.LayoutParams.TYPE_PHONE;
因为TYPE_SYSTEM_OVERLAY的话是TextView获取不到输入焦点,也就没法拖动了哈。

③ 如何在Android中打开一个窗口

1、 首先在默认工程中新建一个Activity

2、添加动作属性
在activity_main.xml文件中添加动作动作属性
android:onClick="OpenNewWindow"

OpenNewWindow是自己取的名字
3、添加动作函数
在MainActivity.java文件中添加:
import android.view.View;
然后在添加:
public void OpenNewWindow(View view){
//打开一个新的窗口

Intent intent = new Intent(this,MainActivity2.class);
startActivity(intent);
Toast.makeText(this, "Toast", Toast.LENGTH_SHORT).show();
}
其中:
Intent intent = new Intent(this,MainActivity2.class);
是定义一个意图,MainActivity2.class是要打开的窗口
startActivity(intent);
是激活这个意图
Toast.makeText(this, "Toast", Toast.LENGTH_SHORT).show();
作为调试的时候看的,可以删除,作用是在屏幕是显示有没有启动这个动作。

请注意,为了让系统能够将这个方法与在android:onClick属性中提供的方法名字匹配,它们的名字必须一致,特别是,这个方法必须满足以下条件:
公共的
没有返回值
有一个唯一的视图(View)参数

使用上述方法添加Activity,在调试的时候需要用Andriod4,在此说明另外一种添加Activity的方法。
双击Manifest.xml文件,选中Application选项卡,向下拉,找到Application Nodes,点击添加,跳出以下对话框:

选择Activity选项,点击OK。
然后选中新建的Activity,点击右边Name,在弹出的对话框中填入名字就可以了。然后,添加xml文件,名字任意取,当然,最好是同名文件,以后好找,填写相应文档既可。
Xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity3" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/AText1" />

</RelativeLayout>
其中RelativeLayout说明是相对布局。

④ android怎么将弹出窗口透明

1. 在res/values 下建立color.xml
<resources>
<color name="transparent_background">#80ffffff</color>
</resources>
PS: #80是透明度的值(即80%透明),ffffff是颜色值(为黑色)
2. 在res/values下建立style.xml
<resources> <style name="Transparent" parent="android:style/Theme.Dialog"> <item name="android:windowBackground">@color/transparent_background</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowAnimationStyle">@+android:style/Animation.Translucent</item> </style></resources>
PS: parent="android:style/Theme.Dialog" 是将activity设置为弹出式窗口
3. 在AndroidManifest.xml中找到要弹出的activity,加入theme:
<activity android:name="ActivityName" android:theme="@style/Transparent" />完成上面设置后,你的activity就已经是透明的了,但是该Activity中的控件还没有透明,如果还需要控件透明,则需要在该activity的代码中加入如下代码:
//设置activity中的控件透明 Window window = getWindow(); WindowManager.LayoutParams wl = window.getAttributes(); wl.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; wl.alpha=0.95f;//设置透明度,0.0为完全透明,1.0为完全不透明 window.setAttributes(wl);

⑤ android中PopupWindow弹出窗体后,为什么不能点击其他控件

设置popupwindow可点击
mPopupWindow.setFocusable(true); // 设置PopupWindow可获得焦点
mPopupWindow.setTouchable(true); // 设置PopupWindow可触摸
补充:
默认打开popupwindow是没有焦点和不可点击的。因此需要设置点击事件。

⑥ 如何让 Android 应用锁屏时弹出窗口

这种情况的话是需要有相关的设置的。

只有很少的软件支持在锁屏状态下弹出对话框比如说QQ就可以但是微信或者是其他的好像都没有这个功能没有这个功能的话就没有办法实现了,QQ的话可以直接在QQ的设置里面设置就可以了。

⑦ 安卓手机总是弹出广告怎么处理

如果您使用的是华为手机,手机第三方应用在锁屏界面或解锁后出现广告推送,若您不想看到广告界面,可尝试以下方式关闭:
1.确认产生锁屏广告的应用,再去设置界面中找到对应的应用关闭通知:
打开设置,搜索进入应用管理,找到前面确认的应用,点击 通知/通知管理 , 关闭允许通知。(关闭通知后可能会影响软件正常消息接收,请您谨慎操作)
2.检查广告页面中是否有设置按钮,若有,点击并选择锁屏显示关闭。
3.禁止应用使用悬浮窗显示:打开设置,搜索并进入权限管理,点击权限界面打开悬浮窗,关闭不常用应用开关。
4.如果您不需要使用“产生锁屏广告”的应用,建议您直接卸载此应用即可。
5. 如果以上方法仍无法解决您的问题,建议您提前备份好数据(QQ、微信等第三方应用需单独备份)后恢复出厂设置。

⑧ android开发百度地图怎么实现自定义弹出窗口

基本原理就是用ItemizedOverlay来添加附加物,在OnTap方法中向MapView上添加一个自定义的View(如果已存在就直接设为可见),下面具体来介绍我的实现方法:
一、自定义覆盖物类:MyPopupOverlay,这个类是最关键的一个类ItemizedOverlay,用于设置Marker,并定义Marker的点击事件,弹出窗口,至于弹出窗口的内容,则通过定义Listener,放到Activity中去构造。如果没有特殊需求,这个类不需要做什么改动。代码如下,popupLinear这个对象,就是加到地图上的自定义View:
public class MyPopupOverlay extends ItemizedOverlay<OverlayItem> {

private Context context = null;
// 这是弹出窗口, 包括内容部分还有下面那个小三角
private LinearLayout popupLinear = null;
// 这是弹出窗口的内容部分
private View popupView = null;
private MapView mapView = null;
private Projection projection = null;
// 这是弹出窗口内容部分使用的layoutId,在Activity中设置
private int layoutId = 0;
// 是否使用网络带有A-J字样的Marker
private boolean useDefaultMarker = false;
private int[] defaultMarkerIds = { R.drawable.icon_marka,
R.drawable.icon_markb, R.drawable.icon_markc,
R.drawable.icon_markd, R.drawable.icon_marke,
R.drawable.icon_markf, R.drawable.icon_markg,
R.drawable.icon_markh, R.drawable.icon_marki,
R.drawable.icon_markj, };
// 这个Listener用于在Marker被点击时让Activity填充PopupView的内容
private OnTapListener onTapListener = null;
public MyPopupOverlay(Context context, Drawable marker, MapView mMapView) {
super(marker, mMapView);
this.context = context;
this.popupLinear = new LinearLayout(context);
this.mapView = mMapView;
popupLinear.setOrientation(LinearLayout.VERTICAL);
popupLinear.setVisibility(View.GONE);
projection = mapView.getProjection();
}
@Override
public boolean onTap(GeoPoint pt, MapView mMapView) {
// 点击窗口以外的区域时,当前窗口关闭
if (popupLinear != null && popupLinear.getVisibility() == View.VISIBLE) {
LayoutParams lp = (LayoutParams) popupLinear.getLayoutParams();
Point tapP = new Point();
projection.toPixels(pt, tapP);
Point popP = new Point();
projection.toPixels(lp.point, popP);
int xMin = popP.x - lp.width / 2 + lp.x;
int yMin = popP.y - lp.height + lp.y;
int xMax = popP.x + lp.width / 2 + lp.x;
int yMax = popP.y + lp.y;
if (tapP.x < xMin || tapP.y < yMin || tapP.x > xMax
|| tapP.y > yMax)
popupLinear.setVisibility(View.GONE);
}
return false;
}
@Override
protected boolean onTap(int i) {
// 点击Marker时,该Marker滑动到地图中央偏下的位置,并显示Popup窗口
OverlayItem item = getItem(i);
if (popupView == null) {
// 如果popupView还没有创建,则构造popupLinear
if (!createPopupView()){
return true;
}
}
if (onTapListener == null)
return true;
popupLinear.setVisibility(View.VISIBLE);
onTapListener.onTap(i, popupView);
popupLinear.measure(0, 0);
int viewWidth = popupLinear.getMeasuredWidth();
int viewHeight = popupLinear.getMeasuredHeight();
LayoutParams layoutParams = new LayoutParams(viewWidth, viewHeight,
item.getPoint(), 0, -60, LayoutParams.BOTTOM_CENTER);
layoutParams.mode = LayoutParams.MODE_MAP;
popupLinear.setLayoutParams(layoutParams);
Point p = new Point();
projection.toPixels(item.getPoint(), p);
p.y = p.y - viewHeight / 2;
GeoPoint point = projection.fromPixels(p.x, p.y);
mapView.getController().animateTo(point);
return true;
}
private boolean createPopupView() {
// TODO Auto-generated method stub
if (layoutId == 0)
return false;
popupView = LayoutInflater.from(context).inflate(layoutId, null);
popupView.setBackgroundResource(R.drawable.popupborder);
ImageView dialogStyle = new ImageView(context);
dialogStyle.setImageDrawable(context.getResources().getDrawable(
R.drawable.iw_tail));
popupLinear.addView(popupView);
android.widget.LinearLayout.LayoutParams lp = new android.widget.LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
lp.topMargin = -2;
lp.leftMargin = 60;
popupLinear.addView(dialogStyle, lp);
mapView.addView(popupLinear);
return true;
}
@Override
public void addItem(List<OverlayItem> items) {
// TODO Auto-generated method stub
int startIndex = getAllItem().size();
for (OverlayItem item : items){
if (startIndex >= defaultMarkerIds.length)
startIndex = defaultMarkerIds.length - 1;
if (useDefaultMarker && item.getMarker() == null){
item.setMarker(context.getResources().getDrawable(
defaultMarkerIds[startIndex++]));
}
}
super.addItem(items);
}
@Override
public void addItem(OverlayItem item) {
// TODO Auto-generated method stub
// 重载这两个addItem方法,主要用于设置自己默认的Marker
int index = getAllItem().size();
if (index >= defaultMarkerIds.length)
index = defaultMarkerIds.length - 1;
if (useDefaultMarker && item.getMarker() == null){
item.setMarker(context.getResources().getDrawable(
defaultMarkerIds[getAllItem().size()]));
}
super.addItem(item);
}
public void setLayoutId(int layoutId) {
this.layoutId = layoutId;
}
public void setUseDefaultMarker(boolean useDefaultMarker) {
this.useDefaultMarker = useDefaultMarker;
}
public void setOnTapListener(OnTapListener onTapListener) {
this.onTapListener = onTapListener;
}
public interface OnTapListener {
public void onTap(int index, View popupView);
}
}

阅读全文

与android弹出窗体相关的资料

热点内容
两个数字的加减乘除运算编程 浏览:221
给手机加密码忘记了怎么办 浏览:598
单片机运算符 浏览:296
移动端微信商城源码 浏览:442
编程猫下一个背景在哪里 浏览:357
javaclasstype 浏览:238
乐高编程和乐高课的延伸 浏览:354
苹果手机怎么切换app美国账号 浏览:865
编译程序输入一个字符串 浏览:407
圆命令画法 浏览:308
如果给电脑e盘文件加密 浏览:802
javaswing项目 浏览:778
androidsdksetup 浏览:1005
pdf怎么设置中文 浏览:128
安卓手机用什么软件看伦敦金 浏览:966
魅族文件夹无名称 浏览:792
苏黎世无人机算法 浏览:876
核桃编程和小码王的融资 浏览:686
微积分教材pdf 浏览:728
写python给微信好友发消息 浏览:340