Android 開發(fā)使用PopupWindow實現(xiàn)彈出警告框的復(fù)用類示例
本文實例講述了Android 開發(fā)使用PopupWindow實現(xiàn)彈出警告框的復(fù)用類。分享給大家供大家參考,具體如下:
Android開發(fā)中相信下圖所示界面大家都不陌生,該種彈出框的使用頻率也是極高的,所以我專門謝了個類用于方便的彈出該界面。并把確定或取消后的邏輯通過抽象方法的方式讓用戶自己實現(xiàn),大大提高了開發(fā)效率。下面是該類:

package com.***.popupwindow;
import ******;
public abstract class MyPopupWindow {
private PopupWindow popupWindow;
private Activity context;
private String content;
private String positiveWord = "確定";
private String negativeWord = "取消";
/**
* 構(gòu)造函數(shù)
*
* @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();
}
});
}
/**
* 確定鍵按下后執(zhí)行
*/
public abstract void sureClick();
/**
* 取消鍵按下后執(zhí)行
*/
public abstract void cancelClick();
/**
* 為警示設(shè)置警示內(nèi)容
*
* @param content
*/
public void setContent(String content) {
this.content = content;
}
/**
* 設(shè)置確定鍵文字
*
* @param positiveWord
*/
public void setPositiveWord(String positiveWord) {
this.positiveWord = positiveWord;
}
/**
* 設(shè)置取消鍵文字
*
* @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,以后使用只需要簡單調(diào)用幾句代碼就好了!
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android控件用法總結(jié)》、《Android開發(fā)入門與進階教程》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android數(shù)據(jù)庫操作技巧總結(jié)》及《Android資源操作技巧匯總》
希望本文所述對大家Android程序設(shè)計有所幫助。
相關(guān)文章
Android之自定義實現(xiàn)BaseAdapter(通用適配器二)
這篇文章主要為大家詳細介紹了Android之自定義實現(xiàn)BaseAdapter通用適配器第二篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-08-08
Android文本視圖TextView實現(xiàn)跑馬燈效果
這篇文章主要為大家詳細介紹了Android文本視圖TextView實現(xiàn)跑馬燈效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-05-05
Android EditText搜索框?qū)崿F(xiàn)圖標居中
本篇文章主要介紹了Android EditText搜索框?qū)崿F(xiàn)圖標居中,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
EasyValidate優(yōu)雅地校驗提交數(shù)據(jù)完整性
這篇文章主要介紹了EasyValidate優(yōu)雅地校驗提交數(shù)據(jù)完整性,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
Android仿QQ好友列表分組實現(xiàn)增刪改及持久化
這篇文章主要介紹了Android仿QQ好友列表分組實現(xiàn)增刪改及持久化的相關(guān)資料,需要的朋友可以參考下2016-01-01
Android關(guān)鍵字persistent詳細分析
這篇文章主要介紹了Android關(guān)鍵字persistent的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-04-04
Android中GPS坐標轉(zhuǎn)換為高德地圖坐標詳解
最近因為公司需求,在做GPS定位,并且將獲得的坐標顯示在高德地圖上,但是實際效果跟我們期望的是有偏差的。通過查閱資料,才知道有地球坐標、火星坐標之說。下面這篇文章就詳細介紹了Android中GPS坐標轉(zhuǎn)換為高德地圖坐標的方法,需要的朋友可以參考下。2017-01-01

