手把手教你魯一個屬于自己風格的dialog

最近項目里面有個需求,需要自定義一個dialog。廢話不多說,直接上代碼:

轉(zhuǎn)載注明出處:http://www.lxweimin.com/p/d520312e0fe4

個人github鏈接:?https://github.com/? ? ? ?喜歡的小伙伴可以 start 一下

項目開始之前,請確認已經(jīng)創(chuàng)建了一個完整可以跑的項目工程(如果沒有可以自行度娘哦?。?,完成之后我們的列車就要出發(fā)了。






1. 自定義控件,行業(yè)規(guī)矩繼承一個父類控件?

? public classCustomMessageConfirmDialogextendsDialogimplementsView.OnClickListener{


}


2. 重寫父類構造方法


public CustomMessageConfirmDialog(Context context){

? ? ? ?this(context,R.style.dialog_costum_stytle);

}

public CustomMessageConfirmDialog(Context context,String title,String content){

? ? ? ? ?this(context,R.style.dialog_costum_stytle);

}

public CustomMessageConfirmDialog(Context context,int themeResId){

? ? ? ? super(context,themeResId);

? ? ? ? mContext=context;

? ? ? ? this.title=title;

? ? ? ? this.content=content;

}


3.? 這里我們傳入了一個我們自定義的? style 樣式文件,規(guī)定一下dialog的樣式風格和入場出場動畫(當然網(wǎng)上好多人喜歡用代碼的形式來處理,這里就不深究了,效果是一樣的)?




4. 這里面涉及了兩個dialog的動畫。一個是入場動畫,一個是出場的動畫。


Android原生的dialog動畫樣式。

在參考了Android原生的dialog后,決定對代碼進行如下的修改:


4.1? 我們同樣的在style文件中創(chuàng)建標簽為? DialogAnimation? 的樣式文件,繼承父類? parent="android:Animation"

4.2 在標簽的內(nèi)部定義兩個子標簽,分別是?

需要注意的是這里的? @android:windowEnterAnimation 就是重寫了父類的windowEnterAnimation和windowExitAnimation這兩個屬性


4.3 入場動畫引用? @anim/dialog_in? 需要在? res —> anim? ? 中定義自己的入場動畫? ,文件名為dialog_in.xml ,代碼如下:





4.5? 同樣的出場動畫引用了? @anim/dialog_exit? 需要在? res —> anim? ? 中定義自己的入場動畫? ,文件名為dialog_exit.xml ,代碼如下:






到這里動畫部分就算完成了。

那我們來看一下,


5. dialog的內(nèi)容部分 ? ?

@Override

protected voidonCreate(BundlesavedInstanceState){

? ? ? ? ? ?super.onCreate(savedInstanceState);

? ? ? ? ? ?setContentView(R.layout.dialog_message_confirm_custom);

? ? ? ? ? ?//初始化view的操作

? ? ? ? ? ?initView();



? ? ? ? ? //不能通過window設置去除標題欄和邊框操作,根據(jù)源碼提示需要通過styles.xml設置

? ? ? ? ? ?initListener();

? ? ? ? ? ?initData();

}



6. ?布局文件

?xml version="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/bg_round_white"

android:orientation="vertical">



<TextView

android:id="@+id/title"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:padding="12dp"

android:layout_marginTop="12dp"

android:text="提示"

android:textSize="18sp"

android:textColor="@color/font_common_dialog_title"/>


<TextView

android:id="@+id/content"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center"

android:layout_gravity="center_horizontal"

android:lineSpacingExtra="3dp"

android:layout_marginLeft="40dp"

android:layout_marginTop="20dp"

android:layout_marginRight="40dp"

android:layout_marginBottom="30dp"

android:text="簽到成功,獲得200積分"

android:textSize="14sp"

android:textColor="@color/font_common_dialog_context"/>


<TextView

android:layout_width="match_parent"

android:layout_height="1dp"

android:background="@color/commom_background"/>

android:layout_width="match_parent"

android:layout_height="50dp"

android:orientation="horizontal">


<TextView

android:id="@+id/cancel"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/bg_dialog_left_white"

android:layout_weight="1.0"

android:gravity="center"

android:text="取消"

android:textSize="14sp"

android:textColor="@color/font_color_cancal"/>


<TextView

android:layout_width="1dp"

android:layout_height="match_parent"

android:background="@color/commom_background"/>

android:id="@+id/submit"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/bg_dialog_right_white"

android:gravity="center"

android:layout_weight="1.0"

android:text="確定"

android:textSize="14sp"

android:textColor="@color/font_color_confirm"/>

</LinearLayout>

</LinearLayout>



7. shrpe文件? 繪制邊框圓角? (在 drawable中創(chuàng)建? bg_dialog_left_white.xml的文件

<shapexmlns:android="http://schemas.android.com/apk/res/android"

android:shape="rectangle">

<solidandroid:color="@color/white"/>

<cornersandroid:bottomLeftRadius="8dp"/>

</shape>

8.? 在textView中引用? android:background="@drawable/bg_dialog_left_white"


色彩值在 values -> colors.xml文件中定義 ?




到這里完成了








最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內(nèi)容

  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,495評論 0 17
  • 本人初學Android,最近做了一個實現(xiàn)安卓簡單音樂播放功能的播放器,收獲不少,于是便記錄下來自己的思路與知識總結...
    落日柳風閱讀 19,200評論 2 41
  • 一、Welcome延時跳轉(zhuǎn)界面(1s跳轉(zhuǎn)) 二、登陸界面(調(diào)用數(shù)據(jù)庫) 輸入用戶名、密碼,點擊注冊,出現(xiàn)Toast...
    Android課程筆記閱讀 1,920評論 0 5
  • 今晚流氓兔推薦的歌曲是《白晝之夜》,純音樂。聽著好舒緩的一首輕音樂,整個人都會放松好多。 突然想問一句:你過得幸福...
    佐恬閱讀 248評論 0 0
  • 技術只是工具 金錢也一樣, 也只是一種工具 太過重視或太過忽視工具,都是不好的,從哲理上講,凡事都有一個度,把握好...
    kamfon閱讀 139評論 0 0