知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們在追求其視覺表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏壧峁┍憬莸闹С郑?
第二章吸引你的眼球—UI編程(7)
發(fā)表時(shí)間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):56
2.3 簡單清楚明了的消息提示框(Toast)和對話框(Dialog)
2.3.1Toast提示
很多時(shí)刻,我們須要對用戶供給一些提示信息。比如,當(dāng)用戶登入應(yīng)用法度榜樣時(shí),提示用戶“應(yīng)用法度榜樣須要更新”;當(dāng)用戶在輸入框輸入文本時(shí),提示用戶“最多能輸入30個(gè)字符”。這些需求,Toast輕松就能搞定!
Toast是Android供給的“快顯訊息”類。Toast應(yīng)用起來異常簡單,只須要簡單的代碼就能實(shí)現(xiàn)。
Toast.makeText(Context context, CharSequence text,int duration).show();
這里有三個(gè)參數(shù),第一個(gè)為當(dāng)前的Context;第二個(gè)為要顯示的提示信息;第三個(gè)則為提示信息顯示的時(shí)光周期,Toast中有兩個(gè)靜態(tài)常量LENGTH_LONG和LENGTH_SHORT。當(dāng)然如不雅你已經(jīng)把提示信息存入了資本文件中,則也可以用以下的代率攀來實(shí)現(xiàn)。
Toast.makeText(Context context,int resId,int duration).show();
其他參數(shù)不變,只是第二個(gè)參數(shù)改成了資本ID。
我們在一個(gè)叫ToastActivity的Activity中寫一個(gè)簡單的Toast提示來看看它的效不雅吧。
Toast.makeText(ToastActivity.this,
"應(yīng)用Toast提示", Toast.LENGTH_LONG).show();
效不雅如圖2-20所示:
[img]http://img.blog.csdn.net/20150104092750465?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXJ1aTMxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
圖2-20 Toast的應(yīng)用
2.3.2Dialog提示
Toast的應(yīng)用無疑是很便利的,然則有些時(shí)刻,Toast并不克不及知足我們的需求。因?yàn)榭赡芪覀儾⒉粌H僅知足于給用戶提示一些信息,而是欲望給用戶提示一些信息之后,用戶可以有更多本身的選擇。比如,當(dāng)用戶點(diǎn)擊“退出”按鈕的時(shí)刻,我們給用戶提示“是否真的選擇退出”,因?yàn)橛锌赡堋巴顺觥卑粹o是用戶不當(dāng)心點(diǎn)擊到的,當(dāng)用戶再點(diǎn)擊“肯定”時(shí),則真的退出應(yīng)用;如不雅用戶點(diǎn)擊“撤消”則返回應(yīng)用。如許的話,Toast就不克不及知足于如許的需求了,于是我們的Dialog對話框就呼之欲出了。
在Android中,我們要實(shí)現(xiàn)對話框可以應(yīng)用AlertDialog.Builder類,也可以自定義對話框,下面我們分別經(jīng)由過程一個(gè)例子來對它們加以解釋。
1)應(yīng)用AlertDialog.Builder類創(chuàng)建對話框
在應(yīng)用這種方法創(chuàng)建對話框之前,我們先來懂得一下AlertDialog.Builder中幾個(gè)常用的辦法。
setTitile(); // 給對話框設(shè)置title
setIcon(); // 給對話框設(shè)置擱筆
setMessage(); // 給對話框設(shè)置提示信息
setPositiveButton(); // 給對話框添加“YES”按鈕
setNeutralButton(); // 給對話框添加“NO”按鈕
下面,我們就來創(chuàng)建一個(gè)對話框,彈出一個(gè)標(biāo)題為“提示信息”,信息內(nèi)容為“肯定退出嗎”,并有一個(gè)“肯定”按鈕和一個(gè)“撤消”按鈕,并為“肯定”按鈕添加事宜監(jiān)聽,代碼如下:
new AlertDialog.Builder(this).setTitle("提示信息").
setMessage("肯定退出嗎").
setPositiveButton("肯定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
}).
setNegativeButton("撤消", null).
show();
下面,我們來看看效不雅,如圖2-21所示:
[img]http://img.blog.csdn.net/20150104092808436?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXJ1aTMxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
圖2-21AlertDialog的應(yīng)用
固然我們沒有對“撤消”按鈕添加事宜監(jiān)聽,但在這個(gè)對話框中,當(dāng)我們點(diǎn)擊“撤消”按鈕時(shí),對話框一樣會被封閉,這是因?yàn)閟etNegativeButton()默認(rèn)就會封閉對話框。
2)自定義對話框
很多時(shí)刻,我們根據(jù)腥纈須要本身來設(shè)計(jì)對話框。下面,我們也以一個(gè)例子來看看自定義對話框是若何實(shí)現(xiàn)的。
起首,我們新建一個(gè)構(gòu)造文件dialog.xml,并在個(gè)中定義好對話框:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/bg_pic"
android:layout_width="260dp"
android:layout_height="150dp"
android:layout_centerHorizontal="true"
android:background="@drawable/dialog_bg"/>
<ImageView
android:id="@+id/close_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/bg_pic"
android:background="@drawable/close"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自定義Dialog"
android:textColor="@android:color/black"
android:layout_centerInParent="true"/>
</RelativeLayout>
在這個(gè)對話框中,我們定義了一個(gè)Button,一個(gè)TextView。接下來,我們定義一個(gè)MyDialog持續(xù)自Dialog。
// import略
public class MyDialog extends Dialog{
private LayoutInflater factory;
public MyDialog(Activity act) {
super(act);
factory = LayoutInflater.from(act);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(factory.inflate(R.layout.dialog, null));
}
}
然后,我們在一個(gè)Activity的onCreate辦法中來看看效不雅吧:
new MyDialog(this).show();
效不雅如圖2-22所示:
[img]http://img.blog.csdn.net/20150104092840046?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXJ1aTMxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
圖2-22 自定義Dialog的應(yīng)用
似乎并沒有達(dá)到我們想要的效不雅,膳綾擎多出來了一塊,并且外面也有邊框,這些都不是我們想要的。這是因?yàn)檫@些都是Dialog默認(rèn)的格局,如不雅我們不須要的話,我們須要為它添加我們本身的樣式,我們在values目次下新建一個(gè)styles.xml樣式文件,輸入內(nèi)容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="mydialog" parent="@android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
</resources>
在這個(gè)樣式傍邊,第一個(gè)屬性我們把Dialog設(shè)置為無title;第二個(gè)屬性就是把邊框設(shè)為透明,然后修改MyDialog的構(gòu)造辦法如下所示:
public MyDialog(Activity act) {
super(act,R.style.mydialog);
factory = LayoutInflater.from(act);
}
下面,我們再來看看效不雅,如圖2-23所示:
[img]http://img.blog.csdn.net/20150104092839808?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYXJ1aTMxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
圖2-23 自定義Dialog中使悠揭捉式
同樣的,我們也可以在MyDialog中監(jiān)聽Diglog中組件的各類事宜進(jìn)行響應(yīng)的處理,例如,當(dāng)點(diǎn)擊“X”擱筆時(shí)封閉該Dialog:
ImageView closeView = (ImageView) findViewById(R.id.close_view);
closeView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyDialog.this.dismiss();
}
});
相關(guān)案例查看更多
相關(guān)閱讀
- 楚雄網(wǎng)站建設(shè)公司
- 汽車拆解管理軟件
- 網(wǎng)站上首頁
- 云南小程序公司
- 做網(wǎng)站
- 英文網(wǎng)站建設(shè)公司
- 云南小程序開發(fā)
- 云南網(wǎng)站建設(shè)方案 doc
- 云南建設(shè)廳網(wǎng)站
- 云南網(wǎng)站建設(shè)費(fèi)用
- 云南網(wǎng)站建設(shè)公司
- 手機(jī)網(wǎng)站建設(shè)
- 昆明網(wǎng)絡(luò)公司
- web服務(wù)
- 大理小程序開發(fā)
- 小程序
- 網(wǎng)站優(yōu)化公司
- 汽車回收管理系統(tǒng)
- 昆明小程序開發(fā)聯(lián)系方式
- 云南網(wǎng)站優(yōu)化公司
- 云南省城鄉(xiāng)建設(shè)廳網(wǎng)站
- 網(wǎng)站沒排名
- 電商網(wǎng)站建設(shè)
- 小程序開發(fā)平臺前十名
- 小程序表單
- 昆明網(wǎng)站設(shè)計(jì)
- 云南網(wǎng)站建設(shè)價(jià)格
- 汽車回收管理
- 模版消息
- 小程序開發(fā)公司