Android(安卓)AlertDialog.Builder进入和退出动画效果设置
16lz
2021-12-04
Android中,最常的对话框估计就是AlertDialog.Builder了,下面学习一下怎么给它加一些特殊动画效果。
/** * 弹出退出对话框 */private void showExitDialog() {AlertDialog.Builder builder = new Builder(MainActivity.this);builder.setTitle("退出");builder.setMessage("确定要退出吗?");builder.setNegativeButton("取消", null);builder.setNeutralButton("支持", null);builder.setPositiveButton("退出", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 停止服务stopService(new Intent(MainActivity.this, MainService.class));// 结束当前窗体MainActivity.this.finish();}});<strong><span style="color:#ff0000;">AlertDialog dialog = builder.create();</span></strong>dialog.show();Window window = dialog.getWindow();window.setWindowAnimations(R.style.<strong><span style="color:#33cc00;">dialog_anim</span></strong>);}
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {showExitDialog();}return true;}
当用户在按下手机上的返回键是,就会弹出该对话框。该对话框会根据自己所设计的方法弹出来,我设置的是进入时从下往上显示在屏幕中,退出时从屏幕中向下退出。
来看看style文件中的配置:
<style name="dialog_anim" parent="@android:style/Animation"> <item name="android:windowEnterAnimation">@anim/dialog_appear</item> <item name="android:windowExitAnimation">@anim/dialog_disappear</item> </style>
其中,anim文件夹下有dialog_appear和dialog_disappear两个资源文件
res/anim/dialog_appear.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="500" android:fromYDelta="100.0%p" /> <alpha android:duration="500" android:fromAlpha="0.5" android:interpolator="@android:anim/accelerate_interpolator" android:toAlpha="1.0" /></set>
res/anim/dialog_disappear.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="500" android:toYDelta="100.0%p" /> <alpha android:duration="500" android:fromAlpha="0.5" android:interpolator="@android:anim/accelerate_interpolator" android:toAlpha="1.0" /></set>
如此,在点击返回按键时,即可看到一个对话框从下往上的显示在屏幕上了
另外,给AlertDialog设置View,当用户点击view中的按键时,同时结束该对话框。
/** * 显示搜索对话框 */private void showDialogBySearch() {<span style="color:#ff0000;">final AlertDialog dialog = new AlertDialog.Builder(this).create();dialog.show();</span>Window window = dialog.getWindow();window.setWindowAnimations(R.style.dialog_anim);window.setContentView(<span style="BACKGROUND-COLOR: #33ff33">R.layout.search_dialog</span>);final RadioGroup rg = (RadioGroup) <span style="BACKGROUND-COLOR: #99ff99">window.</span>findViewById(R.id.radioGroup1);final EditText et_word = (EditText) window.findViewById(R.id.et_word);Button btn_search = (Button) window.findViewById(R.id.btn_search);btn_search.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {search(rg, et_word);<span style="color:#ff0000;">dialog.dismiss();</span>}public void search(final RadioGroup rg, final EditText et_word) {List<Poem> list = null;String word = et_word.getText().toString().trim();int rbId = rg.getCheckedRadioButtonId();switch (rbId) {case R.id.radio0: // 标题list = poemDAO.getGeneral("title", word);break;case R.id.radio1: // 诗歌list = poemDAO.getGeneral("content", word);break;case R.id.radio2: // 注解list = poemDAO.getGeneral("desc", word);break;}MyAdapter adapter = new MyAdapter(MainActivity.this, list);lv_catelog.setAdapter(adapter);}});}
res/layout/search_dialog.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:background="#fff" android:orientation="vertical" > <RadioGroup android:id="@id/radioGroup1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="12.0dip" android:gravity="center" android:orientation="horizontal" > <RadioButton android:id="@id/radio0" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:checked="true" android:text="@string/str20149" /> <RadioButton android:id="@id/radio1" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:text="@string/str20150" /> <RadioButton android:id="@id/radio2" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:text="@string/str20151" /> </RadioGroup> <EditText android:id="@id/et_word" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="12.0dip" android:ems="10" android:hint="请输入查询关键字" android:singleLine="true" > <requestFocus /> </EditText> <Button android:id="@id/btn_search" android:layout_width="140.0dip" android:layout_height="wrap_content" android:layout_marginBottom="12.0dip" android:text="@string/str20152" /></LinearLayout>
当点击自定义View内面的查询按钮后,对话框就会退出页面了。。。。。。
更多相关文章
- Android(安卓)Studio常用对话框
- android中常用的弹出提示框
- Android如何保持屏幕常亮
- Android触屏测试实例代码
- android保持屏幕常亮
- Android如何保持屏幕常亮
- Android对话框
- android 双击屏幕触发事件,放大图片,不用接入借口api,不用OnGestur
- 推荐Android两种屏幕适配方案