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内面的查询按钮后,对话框就会退出页面了。。。。。。


更多相关文章

  1. Android(安卓)Studio常用对话框
  2. android中常用的弹出提示框
  3. Android如何保持屏幕常亮
  4. Android触屏测试实例代码
  5. android保持屏幕常亮
  6. Android如何保持屏幕常亮
  7. Android对话框
  8. android 双击屏幕触发事件,放大图片,不用接入借口api,不用OnGestur
  9. 推荐Android两种屏幕适配方案

随机推荐

  1. Android TextView 跑马灯效果
  2. android eclipse 配置问题
  3. android ellipsize 属性详解
  4. android:installLocation简析
  5. 个人仿制android QQ、android大作业
  6. Android开发:android studio启动后,报错:Cou
  7. Android获取设备ID、型号及其它信息
  8. 从android游戏框架看其生命周期!
  9. Android 可显示左上右下Drawable的TextVi
  10. android字体小结