自定義一個CustomTopDialog繼承Dialog
public class CustomTopDialog extends Dialog{
@SuppressWarnings("deprecation")
public CustomTopDialog(Activity context) {
super(context,R.style.new_dialog);
setContentView(R.layout.view_top_dialog);
Window dialogWindow = getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
/*
* 將對話框的大小按屏幕大小的百分比設置
*/
WindowManager m = context.getWindowManager();
Display d = m.getDefaultDisplay(); // 獲取屏幕寬、高用
lp.width=d.getWidth();//不懂=_=
dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP);
dialogWindow.setAttributes(lp);
dialogWindow.setWindowAnimations(R.style.dialogWindowAnim);//調用動畫
}
//設置Message文字
public CustomTopDialog setMessage(String msg) {
setTipsetVisibility(View.GONE);
setValue(R.id.msg,msg);
return this;
}
public void show(final int time) {
show();
new AsyncTask<Object, Object, Object>() {
@Override
protected Object doInBackground(Object... params) {
try {
Thread.sleep(time);//不懂這個有什麼用處?
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Object result) {
dismiss();
};
}.execute();
}
//設置Tip是否可見
public void setTipsetVisibility(int visibility) {
findViewById(R.id.tip).setVisibility(visibility);
}
//設置Tip文字
public CustomTopDialog setTip(String tip) {
setTipsetVisibility(View.VISIBLE);
setValue(R.id.tip,tip);
return this;
}
//設置TextView的文字
void setValue(int id,String value){
((TextView)findViewById(id)).setText(value);
}
}
Dialog的xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical"
android:padding="20dp" >
<TextView
android:id="@+id/msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textColor="@color/black"
android:textSize="18sp" />
<TextView
android:id="@+id/tip"
style="@style/activity_main_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:visibility="gone" />
</LinearLayout>
調用到的Style
<resources>
<!-- dialog樣式 -->
</style>
<style name="new_dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<!-- 邊框 -->
<item name="android:windowIsFloating">true</item>
<!-- 是否懸浮在activity上 -->
<item name="android:windowIsTranslucent">false</item>
<!-- 半透明 -->
<item name="android:windowNoTitle">true</item>
<!-- 無標題 -->
<item name="android:windowBackground">@android:color/transparent</item>
<!-- 背景透明 -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 模糊 -->
<item name="android:backgroundDimAmount">0.5</item>
<!-- 灰度 -->
<item name="android:windowContentOverlay">@null</item>
<!-- 對話框是否有遮蓋 -->
<item name="android:colorBackgroundCacheHint">@null</item>
</style>
<!-- dialog動畫 -->
<style name="dialogWindowAnim" parent="@android:style/Animation">
<item name="android:windowEnterAnimation">@anim/dialog_enter_anim</item>
<item name="android:windowExitAnimation">@anim/dialog_exit_anim</item>
</style>
<!-- Tip 樣式 -->
<style name="activity_main_label" parent="android:Widget.TextView">
<item name="android:drawablePadding">5dp</item>
<item name="android:gravity">center_vertical</item>
<item name="android:textColor">#999999</item>
<item name="android:textSize">14sp</item>
</style>
</resources>
Dialog的動畫
dialog_enter_anim.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="-100%"
android:toYDelta="0"
android:duration="200"/>
</set>
dialog_exit_anim.xml
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0"
android:toYDelta="-100%"
android:duration="100"/>
</set>
截圖