效果圖如下:
中間提示框彈出來的樣式就是自定義的
接下來是代碼部分
//提示彈出框 private void showDialog() { new MyDialog(MessageNotificationActivity.this, R.style.MyDialog, View.inflate(context,R.layout.view_dialog_minemessage), "", "確定", new MyDialog.DialogClickListener() { @Override public void onRightBtnClick(Dialog dialog) { dialog.dismiss(); } @Override public void onLeftBtnClick(Dialog dialog) { dialog.dismiss(); } }).show(); }
接下來就是style樣式
<style name="MyDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@drawable/round_rect_translucent_black_shape</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> </style>
style中包含round_rect_translucent_black_shape
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="10dp" /> <solid android:color="#fff" /> <size android:height="5dp" android:width="5dp" /> </shape>
接下來就是MyDialog了:
public class MyDialog extends Dialog implements View.OnClickListener { private DialogClickListener listener; Context context; private TextView dialog_textViewID; private TextView dialog_textViewID1; private TextView tvLine; private String leftBtnText; private String rightBtnText; private FrameLayout fl_dialog; private View view; public MyDialog(Context context) { super(context); // TODO Auto-generated constructor stub this.context = context; } public MyDialog(Context context, int theme, View view, String leftBtnText, String rightBtnText, DialogClickListener listener) { super(context, theme); this.context = context; this.view = view; this.leftBtnText = leftBtnText; this.rightBtnText = rightBtnText; this.listener = listener; } public void setTextSize(int size) { dialog_textViewID.setTextSize(size); dialog_textViewID1.setTextSize(size); } ; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.setContentView(R.layout.dialog); dialog_textViewID1 = (TextView) findViewById(R.id.dialog_textViewID1); dialog_textViewID = (TextView) findViewById(R.id.dialog_textViewID); tvLine = (TextView) findViewById(R.id.tv_line); fl_dialog = (FrameLayout) findViewById(R.id.fl_dialog); dialog_textViewID.setOnClickListener(this); dialog_textViewID1.setOnClickListener(this); initView(); initDialog(context); } /** * 設置dialog的寬爲屏幕的3分之1 * * @param context */ private void initDialog(Context context) { setCanceledOnTouchOutside(false); setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { return true; } else { return false; } } }); WindowManager windowManager = this.getWindow().getWindowManager(); Display display = windowManager.getDefaultDisplay(); WindowManager.LayoutParams lp = this.getWindow().getAttributes(); //lp.width = (int) (display.getWidth() / 6 * 5); //// 設置寬度 lp.width = (int) (display.getWidth() / 6 * 4.5); //// 設置寬度 Window window = this.getWindow(); window.setWindowAnimations(R.style.MydialogWindowAnim); window.setAttributes(lp); } private void initView() { fl_dialog.addView(view); if (leftBtnText.equals("")) { tvLine.setVisibility(View.GONE); dialog_textViewID.setVisibility(View.GONE); } else { tvLine.setVisibility(View.VISIBLE); dialog_textViewID.setText(leftBtnText); } if (rightBtnText.equals("")) { // tvLine.setVisibility(View.GONE); dialog_textViewID1.setVisibility(View.GONE); } else { // tvLine.setVisibility(View.VISIBLE); dialog_textViewID1.setText(rightBtnText); } } public interface DialogClickListener { void onLeftBtnClick(Dialog dialog); void onRightBtnClick(Dialog dialog); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.dialog_textViewID: listener.onLeftBtnClick(this); break; case R.id.dialog_textViewID1: listener.onRightBtnClick(this); break; default: break; } } }
dialog佈局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/round_rect_translucent_black_shape" android:orientation="vertical"> <TextView android:id="@+id/tv_restinfo_pop_tel_content" android:layout_width="match_parent" android:layout_height="80dp" android:gravity="center" android:padding="10dp" android:text="您確定要刪除麼?" android:textColor="@color/text_gray" android:textSize="18dp" android:visibility="gone" /> <FrameLayout android:id="@+id/fl_dialog" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center"></FrameLayout> <TextView android:layout_width="match_parent" android:layout_height="1dp" android:background="#f0f0f0" /> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal"> <TextView android:id="@+id/dialog_textViewID" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:padding="10dp" android:text="確認" android:textColor="@color/text_gray" android:textSize="20sp" /> <TextView android:id="@+id/tv_line" android:layout_width="1dp" android:layout_height="match_parent" android:background="#f0f0f0" /> <TextView android:id="@+id/dialog_textViewID1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:padding="10dp" android:text="取消" android:textColor="@color/text_blue" android:textSize="20sp" /> </LinearLayout> </LinearLayout>
MyDialog中還包括了一個style樣式:MydialogWindowAnim
<style name="MydialogWindowAnim" mce_bogus="1" parent="android:Animation"> <item name="android:windowEnterAnimation">@anim/dialog_enter_anim</item> <item name="android:windowExitAnimation">@anim/dialog_exit_anim</item> </style>
MydialogWindowAnim中包括了兩個動畫效果:
1,dialog_enter_anim:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="200" android:fromYDelta="100%p" /> </set>
2,dialog_exit_anim:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:toYDelta="100%p" android:duration="200" /> </set>
ok,這就全部完成了