记自定义弹框dialog

来源:互联网 发布:西安app软件开发公司 编辑:程序博客网 时间:2024/06/06 00:32

效果图如下:



中间提示框弹出来的样式就是自定义的

接下来是代码部分


//提示弹出框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,这就全部完成了

原创粉丝点击