現(xiàn)在很多應(yīng)用程序的提示對話框都很有個性的,如果你使用的對話框樣子還是傳統(tǒng)的對話框,是不是有點LOST了呢?今天武林技術(shù)頻道小編就給大家講講詳解android dialog自定義實例。
第一個需求:簡單的自定義dialog
需求:創(chuàng)建一個dialog,該dialog具備以下功能:
1.有一個窗口可以顯示文章
2.根據(jù)需求顯示
1)點擊同意(不同意),觸發(fā)對應(yīng)的事件(同意的事件會彈出一個Toast,不同意則會關(guān)閉程序)
2)點擊關(guān)閉,關(guān)閉dialog
1.在main.xml文件中設(shè)定一個按鈕,點擊會彈出dialog
復(fù)制代碼 代碼如下:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
2.創(chuàng)建dialog的內(nèi)容布局,布局中設(shè)定了使用相對布局設(shè)定了三個按鈕,其中兩個一起出現(xiàn)(同意和不同意),另外一個單獨出現(xiàn)(關(guān)閉)默認是兩個出現(xiàn)
?
復(fù)制代碼 代碼如下:
?
private TextView btnClose = null;
private TextView btnAgree = null;
private TextView btnDisagree = null;
private WebView mWebView = null;
public MyDialog(Context context) {
super(context, R.style.item_tnc_dialog);
setCancelable(false); // 阻止返回鍵的響應(yīng)
setContentView(R.layout.dialog_view);
getWindow().setLayout(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
setUpView();
}
private void setUpView() {
mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);
btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);
btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);
btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);
btnClose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dismiss();
}
});
btnDisagree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
System.exit(0);
}
});
btnAgree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "YOU SELECTED AGREE",
Toast.LENGTH_SHORT).show();
dismiss();
}
});
showDialog();
}
/** 加載webview的內(nèi)容 */
public void showDialog() {
String localHtml = "file:///android_asset/los.html";
if (mWebView != null) {
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
mWebView.loadUrl(localHtml);
}
buttonsDisplayTwo(false);
}
/** 當(dāng)true的時候,出現(xiàn)同意和不同意兩個選項,反之是關(guān)閉選項 */
private void buttonsDisplayTwo(boolean two) {
btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);
btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);
btnClose.setVisibility(two ? View.GONE : View.VISIBLE);
}
3.main.activity的代碼就不寫了。。直接寫自定義的dialog代碼
?
復(fù)制代碼 代碼如下:
?
private TextView btnClose = null;
private TextView btnAgree = null;
private TextView btnDisagree = null;
private WebView mWebView = null;
public MyDialog(Context context) {
super(context, R.style.item_tnc_dialog);
setCancelable(false); // 阻止返回鍵的響應(yīng)
setContentView(R.layout.dialog_view);
getWindow().setLayout(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
setUpView();
}
private void setUpView() {
mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);
btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);
btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);
btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);
btnClose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dismiss();
}
});
btnDisagree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
System.exit(0);
}
});
btnAgree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "YOU SELECTED AGREE",
Toast.LENGTH_SHORT).show();
dismiss();
}
});
showDialog();
}
/** 加載webview的內(nèi)容 */
public void showDialog() {
String localHtml = "file:///android_asset/los.html";
if (mWebView != null) {
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
mWebView.loadUrl(localHtml);
}
buttonsDisplayTwo(false);
}
/** 當(dāng)true的時候,出現(xiàn)同意和不同意兩個選項,反之是關(guān)閉選項 */
private void buttonsDisplayTwo(boolean two) {
btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);
btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);
btnClose.setVisibility(two ? View.GONE : View.VISIBLE);
}
以上就是詳解android dialog自定義實例的介紹,更多內(nèi)容請繼續(xù)關(guān)注武林技術(shù)頻道!