android 自訂dialog 執行個體

來源:互聯網
上載者:User

本人工作有一個月多了。對於android很多東西,都有了新的瞭解或者說真正的掌握。為了讓更多的像我這樣的小白少走彎路,所以我會堅持將我在工作中遇
到的一些比較令我印象深刻的知識點整合出來給大家(順序是按照我工作到現在的時間來製作的,其實也是想給自己一個記錄吧。記錄自己一路走來以及以後的路,
至少我想找到曾經的記錄都有了)。

第一個需求:簡單的自訂dialog
需求:建立一個dialog,該dialog具備以下功能:
  1.有一個視窗可以顯示文章
  2.根據需求顯示
     1)點擊同意(不同意),觸發對應的事件(同意的事件會彈出一個Toast,不同意則會關閉程式)
     2)點擊關閉,關閉dialog

1.在main.xml檔案中設定一個按鈕,點擊會彈出dialog

View Code

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"                  xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <Button        android:layout_width="100dp"        android:layout_height="50dp"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:text="@string/hello_world"        android:id="@+id/btn"        android:background="@drawable/sl_btn_red" /></RelativeLayout>

2.建立dialog的內容布局,布局中設定了使用相對布局設定了三個按鈕,其中兩個一起出現(同意和不同意),另外一個單獨出現(關閉)預設是兩個出現

View Code

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); // 阻止返回鍵的響應                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的內容 */        public void showDialog() {                String localHtml = "file:///android_asset/los.html";                if (mWebView != null) {                        mWebView.getSettings().setDefaultTextEncodingName("utf-8");                        mWebView.loadUrl(localHtml);                }                buttonsDisplayTwo(false);        }        /** 當true的時候,出現同意和不同意兩個選項,反之是關閉選項 */        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代碼

View Code

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); // 阻止返回鍵的響應                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的內容 */        public void showDialog() {                String localHtml = "file:///android_asset/los.html";                if (mWebView != null) {                        mWebView.getSettings().setDefaultTextEncodingName("utf-8");                        mWebView.loadUrl(localHtml);                }                buttonsDisplayTwo(false);        }        /** 當true的時候,出現同意和不同意兩個選項,反之是關閉選項 */        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);        }

 

如下:

     

 


MyDialog.rar

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.