編輯:關於Android編程
Android開發之對話框高級應用
創建並顯示一個對話框很簡單,但是如果想進行一些更高級點的操作,就需要一些技巧了。下面將和大家分享一下對話框使用的一些高級技巧。
大多說情況下,對話框是在屏幕的中間位置顯示的(根據系統版本的不同可能有所差異)。實際上,也可以根據需要在屏幕的左、中、右、上、下,甚至任意位置來顯示對話框。
要想獲取對話框的顯示的位置,需要獲得對話框的Window對象,並通過Window對象的一些方法來控制對話框的顯示位置。
例如:
AlertDialog alertDialog=new AlertDialog.Builder(this).setMessage("在屏幕頂端顯示對話框").setPositiveButton("確定", null).create();
Window window=alertDialog.getWindow();
/*調用setGravity方法使對話框在屏幕頂端顯示。*/
window.setGravity(Gravity.TOP);
alertDialog.show();
提示:setGravity方法的參數也支持的如下幾個值:
Gravity.LEFT(左側),Gravity.RIGHT(右側),Gravity.BOTTOM(底部),Gravity.LEFT|Gravity.TOP(左上方)等。
運行效果圖:

上面已經獲取了對話框的Window對象,我們可以通過該對象的getAttributes()方法來獲取WindowManager.LayoutParams對象,並通過WindowManager.LayoutParams對象的WindowManager.LayoutParams.x與WindowManager.LayoutParams.y屬性來設置對話框在屏幕中的位置。
AlertDialog alertDialog=new AlertDialog.Builder(this).setMessage("在任意位置顯示對話框").setPositiveButton("確定", null).create();
Window window=alertDialog.getWindow();
WindowManager.LayoutParams wl=window.getAttributes();
//x,y為對話框相對於屏幕的中心位置的偏移量
//設置水平偏移量
wl.x=-50;
//設置垂直偏移量
wl.y=100;
window.setAttributes(wl);
alertDialog.show();
提示:通過WindowManager.LayoutParams.x與WindowManager.LayoutParams.y設置的是對話框相對於屏幕中間位置的偏移量,並不是屏幕的絕對位置。
運行效果圖:

我曾在Android開發之TextView高級應用中介紹過在TextView中插入圖像,這種技術在對話框中也同樣適用。在對話框中插入圖片的代碼如下:
/**
* 在對話框的內容文本和按鈕中插入圖片度
* */
protected void insertImg() {
// TODO Auto-generated method stub
AlertDialog alertDialog=new AlertDialog.Builder(this)
.setMessage(getHtml()).setPositiveButton(getHtml(), null).create();
alertDialog.show();
}
//返回一個Spanned對象
private Spanned getHtml() {
// TODO Auto-generated method stub
Spanned spanned=Html.fromHtml("哈哈,
你好.", new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
// TODO Auto-generated method stub
Drawable drawable=getResources().getDrawable(R.drawable.ic_launcher);
//設置圖片的縮放大小
drawable.setBounds(0,0,30,30);
return drawable;
}
}, null);
return spanned;
}

通過WindowManager.LayoutParams.alpha可以設置對話框的透明度。Alpha的取值范圍在0.0f 至1.0f之間(f表示float類型的數字)。0.0f表示完全透明(這時對話框就看不見了),1.0f 表示完全不透明。1.0f也是alpha的默認值。下面的代碼顯示了一個Alpha值為0.6f的個對話框。
/**
* 改變對話框的透明度
* */
protected void setAlpha() {
// TODO Auto-generated method stub
AlertDialog alertDialog=new AlertDialog.Builder(this)
.setMessage("這是一個透明度為60%的對話框!").setPositiveButton("確定", null).create();
Window window=alertDialog.getWindow();
window.setGravity(Gravity.TOP);
WindowManager.LayoutParams wl=window.getAttributes();
//alpha的范圍是0.0f-1.0f
wl.alpha=0.6f;
window.setAttributes(wl);
alertDialog.show();
}
運行效果圖:

Android - 查看Android應用(apk)簽名
查看Android應用(apk)簽名 在微博、微信開放平台注冊應用時,需要填寫應用(apk)的簽名,可以使用keytool工具找
Android初級教程以動畫的形式彈出窗體
這一篇集合動畫知識和彈出窗體知識,綜合起來以動畫的形式彈出窗體。動畫的知識前幾篇已經做過詳細的介紹,可翻閱前面寫的有關動畫博文。先簡單介紹一下彈出窗體效果的方法:首先,需
基於Android4.0ListView從網絡獲取圖片文字資源顯示
平時的一些Android學習視頻中,他們都是基於Android2.2的去使用ListView,我看到都是會在UI線程中去訪問網絡獲取數據,但是這在Android4.0之後
Android 最佳實踐
從事android開發兩年有余,但是自己的代碼自己卻不太敢恭維。於是我不得不來改善我的Android程序,為了使它變得更加的穩固,更加的專業。本文旁征博引,多處觀點都是G