Android自定义dialog 自下往上弹出的实例代码
时间:2020-10-14 10:05:23|栏目:Android代码|点击: 次
具体代码如下所示:
package com.example.idmin.myapplication.wiget; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import android.widget.TextView; import com.example.idmin.myapplication.R; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class BottomDialog extends Dialog { @BindView(R.id.chang) TextView chang; @BindView(R.id.exite) TextView exite; @BindView(R.id.cancel) TextView cancel; private BottomDialogAlertListener listener; private Object param; private String text1; private String text2; private String cansleText; public BottomDialog(Context context, BottomDialogAlertListener listener, Object param, String text1, String text2, String cansleText) { super(context, R.style.dialog1); this.listener = listener; this.param = param; this.text1 = text1; this.text2 = text2; this.cansleText = cansleText; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_bottom); ButterKnife.bind(this); setCancelable(false); setCanceledOnTouchOutside(false); if (listener != null) { listener.onDialogCreate(this, param); } setView(); } private void setView() { chang.setText(text1); exite.setText(text2); cancel.setText(cansleText); } @OnClick({R.id.chang, R.id.exite, R.id.cancel}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.chang: if (listener != null) { listener.chenge(this,param); } break; case R.id.exite: if (listener != null) { listener.excite(this,param); } break; case R.id.cancel: if (listener != null) { listener.cancel(this,param); } break; } } @Override public void show() { super.show(); /** * 设置宽度全屏,要设置在show的后面 */ WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); layoutParams.gravity = Gravity.BOTTOM; layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; getWindow().getDecorView().setPadding(0, 0, 0, 0); getWindow().setAttributes(layoutParams); } } <!-- 自定义dialog样式 --> <style name="dialog1" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">false</item> <item name="android:windowNoTitle">true</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:layout_width">match_parent</item> <!-- 进入和退出的动画 --> <item name="android:windowAnimationStyle">@style/BottomDialogAnimation</item> </style> <!-- 进入和退出的动画 --> <style name="BottomDialogAnimation"> <!--进入 --> <item name="android:windowEnterAnimation">@anim/dialog_enter_from_bottom</item> <!--退出--> <item name="android:windowExitAnimation">@anim/dialog_exit_to_bottom</item> </style> <!--dialog_enter_from_bottom --> <?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" android:toYDelta="0"></translate> </set> <!--dialog_exit_to_bottom --> <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="200" android:fromYDelta="0" android:toYDelta="100%p"></translate> </set>
总结