Android 开发使用PopupWindow实现弹出警告框的复用类示例
时间:2022-07-26
本文章向大家介绍Android 开发使用PopupWindow实现弹出警告框的复用类示例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例讲述了Android 开发使用PopupWindow实现弹出警告框的复用类。分享给大家供大家参考,具体如下:
Android开发中相信下图所示界面大家都不陌生,该种弹出框的使用频率也是极高的,所以我专门谢了个类用于方便的弹出该界面。并把确定或取消后的逻辑通过抽象方法的方式让用户自己实现,大大提高了开发效率。下面是该类:
package com.***.popupwindow;
import ******;
public abstract class MyPopupWindow {
private PopupWindow popupWindow;
private Activity context;
private String content;
private String positiveWord = "确定";
private String negativeWord = "取消";
/**
* 构造函数
*
* @param context
*/
public MyPopupWindow(Activity context) {
this.context = context;
}
/**
* 显示警示框
*/
public void show() {
View popView = View.inflate(context, R.layout.popup, null);
popupWindow = new PopupWindow(context);
popupWindow.setHeight(400);
popupWindow.setWidth(700);
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
popupWindow.setContentView(popView);
popupWindow.showAtLocation(context.getWindow().getDecorView(), Gravity.CENTER, 0, 0);
TextView tv_pop_text = (TextView) popView.findViewById(R.id.tv_pop_text);
tv_pop_text.setText(content);
Button bt_pop_sure = (Button) popView.findViewById(R.id.bt_pop_sure);
bt_pop_sure.setText(positiveWord);
bt_pop_sure.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sureClick();
}
});
Button bt_pop_cancel = (Button) popView.findViewById(R.id.bt_pop_cancel);
bt_pop_cancel.setText(negativeWord);
bt_pop_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancelClick();
}
});
}
/**
* 确定键按下后执行
*/
public abstract void sureClick();
/**
* 取消键按下后执行
*/
public abstract void cancelClick();
/**
* 为警示设置警示内容
*
* @param content
*/
public void setContent(String content) {
this.content = content;
}
/**
* 设置确定键文字
*
* @param positiveWord
*/
public void setPositiveWord(String positiveWord) {
this.positiveWord = positiveWord;
}
/**
* 设置取消键文字
*
* @param negativeWord
*/
public void setNegativeWord(String negativeWord) {
this.negativeWord = negativeWord;
}
/**
* 手动取消警示框
*/
public void dismiss() {
popupWindow.dismiss();
}
}
其中弹出框用到的布局popup.xml代码如下:
<?xml version="1.0" encoding="utf-8"?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical"
<TextView
android:id="@+id/tv_pop_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"/
<TextView
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@android:color/darker_gray"/
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
<Button
android:id="@+id/bt_pop_sure"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_weight="1"/
<TextView
android:layout_width="1px"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"/
<Button
android:id="@+id/bt_pop_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:layout_weight="1"/
</LinearLayout
</LinearLayout
下面简单的使用一下:在界面放一个按钮,按钮点击后弹出警告框。代码如下:
package com.toprs.popupwindow;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.SeekBar;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private PopupWindow popupWindow;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyPopupWindow myPopupWindow = new MyPopupWindow(MainActivity.this) {
@Override
public void sureClick() {
Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show();
}
@Override
public void cancelClick() {
Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
}
};
myPopupWindow.setContent("确定退出?");
myPopupWindow.show();
}
});
}
}
即如下效果:
So,以后使用只需要简单调用几句代码就好了!
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android控件用法总结》、《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android数据库操作技巧总结》及《Android资源操作技巧汇总》
希望本文所述对大家Android程序设计有所帮助。
- 彻底解决WordPress 中 半角全角字符转义 的问题
- 利用Spring的@Async异步处理改善web应用中耗时操作的用户体验
- Oracle中使用Entity Framework 6.x Code-First方式开发
- 边缘计算推动AI发展 未来能摆脱云计算吗?
- intellij idea 高级用法之:集成JIRA、UML类图插件、集成SSH、集成FTP、Database管理
- 微软.NET Core RC2正式发布,横跨所有平台
- 二帮主:央行数字货币的崛起,会给比特币带来什么影响
- cas原理介绍
- 结合Jexus + Kestrel 部署 asp.net core 生产环境
- C#全角和半角转换
- 浅谈Scala在大数据处理方面的优势
- 利用mybatis-generator自动生成代码
- 微信年终放大招!小程序再次升级,这个功能超想要!
- WordPress 中禁止文章自动保存和修订版本的方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- OpenGL ES 环境搭建
- Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署
- Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
- docker-compose 安装jenkins的正确姿势 实践笔记
- windows安装nginx注册为服务的正确姿势 并设置开机自启 实践笔记
- windows navicat连接oracle11G 自用 实践笔记
- docker安装官方redis集群并集群连接测试 的正确姿势 自用 实践笔记
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装
- Centos7安装轻量级TCP转发工具rinetd注册为服务的正确姿势 并设置开机自启 实践笔记 自用
- Connection open error . Connection Timeout Expired. The timeout period elapsed during the post-login
- macbook-12-2015款 安装win10系统 自用 实践笔记
- OpenGL ES 之attribute
- windows server 2012 r2 搭建文件服务器 问题记录 自用 实践笔记
- OpenGL ES 之uniform和varying
- OpenGL ES 绘制纹理