资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

android弹窗,android弹窗输入

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

如果您使用的是华为手机,手机第三方应用在锁屏界面或解锁后出现广告推送,若您不想看到广告界面,可尝试以下方式关闭:

网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、小程序设计、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了修文免费建站欢迎大家使用!

1.确认产生锁屏广告的应用,再去设置界面中找到对应的应用关闭通知:

打开设置,搜索进入应用管理,找到前面确认的应用,点击 通知/通知管理 , 关闭允许通知。(关闭通知后可能会影响软件正常消息接收,请您谨慎操作)

2.检查广告页面中是否有设置按钮,若有,点击并选择锁屏显示关闭。

3.禁止应用使用悬浮窗显示:打开设置,搜索并进入权限管理,点击权限界面打开悬浮窗,关闭不常用应用开关。

4.如果您不需要使用“产生锁屏广告”的应用,建议您直接卸载此应用即可。

5. 如果以上方法仍无法解决您的问题,建议您提前备份好数据(QQ、微信等第三方应用需单独备份)后恢复出厂设置。

Android底部弹窗漏出底部导航栏/未能遮挡/底部透明了/未置底的问题

xxx耀10上面...底部漏出来了。另外一个项目也是类似弹窗,但是没有这个问题。

然后对比了下这个风格文件,发现是 是否悬浮在Activity之上 的问题:

item name="android:windowIsFloating"true/item设置为true就行了。

不过发现一个现象就是当锁屏再打开的时候显示就又正常了...也就是在某个生命周期里面做了一些事情(具体的先不管了哈。记录下...)

使用风格文件的地方:

正在思考自己尝试封装弹窗(计划包括分享弹窗,更新弹窗,奖励弹窗等,逐步来)。这个大概是自定义View差不多了再开始尝试搞....感觉从开始学习了好久,才完成了个人计划的一小半....

【iOS && Android】系统自带的几种常见弹窗Alert

iOS中系统基础的弹窗主要有两种样式:UIAlertControllerStyleAlert 与 UIAlertControllerStyleActionSheet。

Android中系统基本的弹出样式有:按钮positiveButton与negativeButton, setSingleChoiceItems单选框,setMultiChoiceItems多选框以及setProgressStyle进度样式的弹窗。当然、吐司(Toast)也算是Android中比较经典的弹窗了。

``

}

//监听alert中 输入框的文字改变

Android接口回调总结,以及运用到弹窗PopWindow的Demo实现

最近项目中接触到接口回调,以及Android弹窗PopWindow组件的使用,现在利用学到的知识自己写了一个简单的Demo,练习下在Android下如何运用接口回调,来实现弹窗PopWindow的功能。

1. 定义一个接口:OnSelectItemListener。定义一个方法 void selectItem(String name, int type),作为点击弹窗的每个Item的回调接口。

2. 自定义弹窗类:MyPopupWindow,其布局文件为popup_window.xml。当在MainActivity调用其构造函数创建对象时,同时执行initPopupWindow()函数,给每个Item设置监听器,监听点击Item时,回调接口函数selectItem("Pop Window A", POP_WINDOW_ITEM_1),该函数在MainActivity中实现。

3. 主Activity: MainActivity。其布局文件为一个Button和一个TextView。监听Button,每当点击则弹出PopWindow,呈现三个Item。调用MyPopupWindow类中的方法setOnSelectItemListener(OnSelectItemListener listener),传入OnSelectItemListener 对象作为参数,同时实现回调接口OnSelectItemListener的方法void selectItem(String name, int type)。

主Activity: MainActivity. Java

[java] view plain copy

packagecom.lambdroid.callbacktest2;

importandroid.app.Activity;

importandroid.content.Context;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.TextView;

importandroid.widget.Toast;

//联系接口的回调以及PopWindow弹窗的简单使用

publicclassMainActivityextendsActivity {

privateMyPopupWindow myPopupWindow;

privateButton btn_pop_window;

privateTextView tv_display;

protectedContext context;

@Override

protectedvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

context =this;

btn_pop_window = (Button) findViewById(R.id.btn_pop_window);

tv_display = (TextView) findViewById(R.id.tv_display);

//给Button设置事件监听:弹出弹窗

btn_pop_window.setOnClickListener(newView.OnClickListener() {

@Override

publicvoidonClick(View v) {

myPopupWindow.show(btn_pop_window);

}

});

myPopupWindow =newMyPopupWindow(context);

//实现OnSelectItemListener接口的selectItem方法:对于弹窗三个Item的事件监听

myPopupWindow.setOnSelectItemListener(newOnSelectItemListener() {

@Override

publicvoidselectItem(String name,inttype) {

//点击电站列表,弹出弹框

if(myPopupWindow !=null myPopupWindow.isShowing()) {

myPopupWindow.dismiss();

}

tv_display.setText(name);

switch(type){

caseMyPopupWindow.POP_WINDOW_ITEM_1:

Toast.makeText(context,"我是弹窗A, 我的英文名是"+ name, Toast.LENGTH_SHORT).show();

break;

caseMyPopupWindow.POP_WINDOW_ITEM_2:

Toast.makeText(context,"我是弹窗B, 我的英文名是"+ name, Toast.LENGTH_SHORT).show();

break;

caseMyPopupWindow.POP_WINDOW_ITEM_3:

Toast.makeText(context,"我是弹窗C, 我的英文名是"+ name, Toast.LENGTH_SHORT).show();

break;

default:

break;

}

}

});

}

}

activity_main.xml

[html] view plain copy

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:id="@+id/btn_pop_window"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_margin="20dp"

android:padding="20dp"

android:text="Pop Window"

android:textSize="20sp"/

android:id="@+id/tv_display"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="10dp"

android:gravity="center"

android:text="Hello World!"

android:textSize="30sp"/

自定义弹窗类:MyPopupWindow.java

[java] view plain copy

packagecom.lambdroid.callbacktest2;

importandroid.app.ActionBar;

importandroid.content.Context;

importandroid.graphics.drawable.ColorDrawable;

importandroid.view.LayoutInflater;

importandroid.view.View;

importandroid.widget.LinearLayout;

importandroid.widget.PopupWindow;

publicclassMyPopupWindowimplementsView.OnClickListener{

privatePopupWindow mPopWindow;

privateContext mContext;

privateLinearLayout llPop1;

privateLinearLayout llPop2;

privateLinearLayout llPop3;

privateintpw_height;

publicstaticfinalintPOP_WINDOW_ITEM_1 =1;

publicstaticfinalintPOP_WINDOW_ITEM_2 =2;

publicstaticfinalintPOP_WINDOW_ITEM_3 =3;

privateOnSelectItemListener listener;

publicvoidsetOnSelectItemListener(OnSelectItemListener listener){

this.listener = listener;

}

publicMyPopupWindow(Context context){

mContext = context;

initPopupWindow();//初始化弹窗

}

publicvoidinitPopupWindow(){

View view = LayoutInflater.from(mContext).inflate(R.layout.popup_window,null);

mPopWindow =newPopupWindow(view, ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT,true);

mPopWindow.setOutsideTouchable(true);

/** 为其设置背景,使得其内外焦点都可以获得 */

mPopWindow.setBackgroundDrawable(newColorDrawable());

mPopWindow.setFocusable(true);

pw_height = view.getHeight();

llPop1 = (LinearLayout) view.findViewById(R.id.ll_pop_1);

llPop1.setOnClickListener(this);

llPop2 = (LinearLayout) view.findViewById(R.id.ll_pop_2);

llPop2.setOnClickListener(this);

llPop3 = (LinearLayout) view.findViewById(R.id.ll_pop_3);

llPop3.setOnClickListener(this);

}

//监听三个弹窗的点击事件

@Override

publicvoidonClick(View v) {

switch(v.getId()){

caseR.id.ll_pop_1:

if(listener !=null) {

listener.selectItem("Pop Window A", POP_WINDOW_ITEM_1);//回调接口

}

break;

caseR.id.ll_pop_2:

if(listener !=null) {

listener.selectItem("Pop Window B", POP_WINDOW_ITEM_2);

}

break;

caseR.id.ll_pop_3:

if(listener !=null) {

listener.selectItem("Pop Window C", POP_WINDOW_ITEM_1);

}

break;

default:

break;

}

}

//显示弹窗,并设置弹窗基于标题栏的显示位置

publicvoidshow(View view) {

//popupwindow相对view位置x轴偏移量

View viewTemp = mPopWindow.getContentView();

viewTemp.measure(0,0);

intwidth = viewTemp.getMeasuredWidth();

intxOffset = (view.getWidth() - width) /2;

mPopWindow.showAsDropDown(view, xOffset,0);

}

/**

* 退出popupwindow

*/

publicvoiddismiss() {

if(mPopWindow !=null mPopWindow.isShowing()) {

mPopWindow.dismiss();

}

}

/**

* popupwindow是否正在显示

*/

publicbooleanisShowing() {

if(mPopWindow !=null) {

returnmPopWindow.isShowing();

}

returnfalse;

}

}

popup_window.xml

[html] view plain copy

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

android:id="@+id/ll_alarm_type"

android:layout_width="120dp"

android:layout_height="130dp"

android:orientation="vertical"

android:background="@drawable/popupwindow"

android:paddingBottom="16dp"

android:paddingTop="16dp"

android:id="@+id/ll_pop_1"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:layout_marginTop="5dp"

android:layout_gravity="center_horizontal"

android:orientation="vertical"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:text="窗口 A"

android:textSize="15sp"

android:textColor="#ffffff"/

android:id="@+id/ll_pop_2"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:layout_gravity="center_horizontal"

android:orientation="vertical"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:text="窗口 B"

android:textSize="15sp"

android:textColor="#ffffff"/

android:id="@+id/ll_pop_3"

android:layout_width="match_parent"

android:layout_height="0dp"

android:layout_weight="1"

android:layout_gravity="center_horizontal"

android:orientation="vertical"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:text="窗口 C"

android:textSize="15sp"

android:textColor="#FFFFFF"/

回调接口:OnSelectItemListener

[java] view plain copy

packagecom.lambdroid.callbacktest2;

publicinterfaceOnSelectItemListener {

voidselectItem(String name,inttype);

}

点击Button,弹出弹窗,显示三个Item

点击第二个Item,通过回调函数,来实现TextView内容的修改,以及弹出Toast

总结

Java回调情形涉及很多,本文属于接口的异步回调:当不知道何时会执行接口的回调函数,(通过接口回调来对获取到的资源的操作)。除此还有线程间的异步回调(子线程进行耗时操作,操作完毕通知主线程或将数据传给主线程处理),以及利用接口回调来实现线程间的数据通信等等(Android可以利用Handler来实现)。等下次再举例说明Java回调函数的其它情形。

Android弹窗探究之PopupWindow的使用

相对于AlertDialog的使用,PopupWindow的使用也比较简单,这里主要介绍的是PopupWindow的基础使用包括在使用过程中的一些注意事项,做个笔记。

方式一:

方式二:

当然,在实际的开发过程中我们并不能仅仅满足于如何简单使用,更多的时候我们需要去考虑兼容性与扩展性的问题,所以,在这里,我对PopupWindow做了一个简单的封装,如下所示:

创建PopupWindow的管理类,即PopupWindowManager类

新建类来继承自PopupWindow

最后进行调用:

到这里,popupWindow的简单使用就完成了。最后来讲一下在使用popupWindow的过程中需要注意的几点。

(1)必须手动给popupWindow设置宽度和高度,否则popupWindow不显示。

(2)在手机系统的API大于24的时候全屏展示的时候会完全填充整个屏幕,而不是在目标View的下方正常显示。

(3)在有些手机上面,全屏展示的时候底部会留白,其实是因为StatusBar的高度没有计算进去,需要我们自己手动计算出去。

(4)当我们设置了setFocusable为true的时候,点击屏幕事件会交由onTouchListener处理。

Android 全局弹窗(Dialog)快速实现

项目中 云信IM同一帐号,在多处登录时,要实现互踢功能。

在收到被踢通知时,弹窗提示用户被踢,点击继续跳转到登录界面,取消则关闭App

由于不知道用户会在哪个界面操作时被踢,接受通知的那个Activity有可能已经失去上下文,导致空指针异常!从而无法 Toast 或 弹窗。

能实现 全局Dialog 就好了!

由于退出App的时候,要清除之前所有的Activity,其实就是退出登录功能。

我采用 集合法 来实现的退出登录 ,在BaseActivity中记录所有打开过的Activity,然后遍历清除。

然后在 BaseActivity 中调用 addActivity() ,不在赘述!

如果能获取到用户当前观看的界面,然后将上下文传过去,就可以实现全局Dialog

当前页面也就是栈顶Activity,也就是最后添加的那个Activity。如下:

然后在使用的地方获取

即:

注意:之所以返回AppCompatActivity,而不是Activity,

是因为弹出Dialog 需要 supportFragmentManager ,Activity 获取不到

以上就可以实现全局Dialog了。

另外,上述Dialog是用DialogFragment写的,感兴趣可阅 《DialogFragment 去除内容区棱角背景(不规则圆角)》 ,附有工具类及用法。


本文标题:android弹窗,android弹窗输入
文章转载:http://cdkjz.cn/article/dsipoeg.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220