1、含義
寫的第一篇技術文章還有點小激動,話說popupwindow顧名思義就是類似于對話框樣式布局顯示,但是卻有别于對話框,到底哪裡有差別呢,還請客官您細細觀看。
2、差別
1、對話框位置相對來說比較固定,而popupwindow位置相對随意一些,可以自由控制。
2、對話框是線程非阻塞的,而popupwindow是線程阻塞的。
3、代碼說明
1、 話不多說,規矩我懂,先上圖(樣式比較醜還請您見諒):
2、先看popupwindow代碼,容我細細道來:
1)、首先自定義一個popupwindow
public class AddPopuwindow extends PopupWindow {
public View mView;
public AddPopuwindow(Activity context) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = inflater.inflate(R.layout.popuwindow_dialog, null);
int height = context.getWindowManager().getDefaultDisplay().getHeight();
int width = context.getWindowManager().getDefaultDisplay().getWidth();
// 設定選擇的popuwndow的View
this.setContentView(mView);
// 設定彈出的popuwindow的寬
this.setWidth(width / 2 + 50);
// 設定彈出的popuwndow的高
this.setHeight(LayoutParams.WRAP_CONTENT);
// 設定popuwindow的彈出窗體是否可以點選
this.setFocusable(true);
this.setOutsideTouchable(true);
// 重新整理狀态
this.update();
// 執行個體化一個colorDrawable顔色為半透明
ColorDrawable colorDrawable = new ColorDrawable(0000000000);
// 點選傳回鍵和其他地方使其消失,設定了這個才能觸發OnDismissListener,設定其他控件變化等操作
this.setBackgroundDrawable(colorDrawable);
// 設定SelectPicPopupWindow彈出窗體動畫效果
this.setAnimationStyle(R.style.AnimationPreview);
// 綁定布局
LinearLayout addTaskLayout = (LinearLayout) mView
.findViewById(R.id.add_task_layout);
addTaskLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// 關閉popuwindow
AddPopuwindow.this.dismiss();
}
});
//顯示popupwindow
public void showPopuwindow(View view) {
if (!this.isShowing()) {
// 以下拉方式顯示popuwindow
this.showAsDropDown(view, view.getLayoutParams().width / 2, 18);
} else {
this.dismiss();
2、怎麼調用呢?當然是綁定布局然後直接調用了
Button mBtnAdd;
mBtnSet.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
AddPopuwindow popuwindow = new AddPopuwindow(MainActivity.this);
popuwindow.showPopuwindow(mBtnAdd);
3、布局檔案(圖檔):
布局檔案
4、結語
因為小弟第一次寫技術類文章,還有排版什麼的,不太熟悉,是以請各位看官多多見諒,請各位輕點打臉。