Android Dialog和AlertDialog的一些常用的例子

来源:互联网 发布:python字符串连接数字 编辑:程序博客网 时间:2024/04/28 14:00

做项目的过程中经常会用到对话框提示,整理了一下把暂时用到的先总结下,以后会持续更新。

1、打电话


/** * 拨打电话提示框 * @param context  * @param title    标题 * @param phoneNum 电话号码/手机号 */public static void showDialogCall(final Context context,String title,final String phoneNum) {AlertDialog.Builder builder = new AlertDialog.Builder(context);if(null!=title){ //如果不想要标题,可以传null过来builder.setTitle(title);}builder.setMessage("是否拨打 "+phoneNum);builder.setPositiveButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {} } );builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 使用系统的电话拨号服务,必须在AndroidManifest.xml中声明权限 //<uses-permission android:name="android.permission.CALL_PHONE" />                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"                          + phoneNum));  //ACTION_DIAL是跳转到拨号界面,ACTION_CALL是直接拨号                context.startActivity(intent); } } );builder.create().show();}
2、单项选择


/** * 单项选择对话框 * @param context * @param title 对话框标题 * @param items 选项内容(String数组) * @param tv_item 显示当前选择内容的View(暂时用到TextView) */public void showChooseDialog(Context context,String title, final String[] items,final TextView tv_item) {int selectedNum = -1, i = 0;while (i < items.length) { // 初始化选中项if (items[i].equals(tv_item.getText().toString())) {selectedNum = i;break;}i++;}AlertDialog.Builder builder = new AlertDialog.Builder(context);builder.setTitle(title);builder.setSingleChoiceItems(items, selectedNum,new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {tv_item.setText(items[which]);dialog.dismiss();}});builder.create().show();}



/**       * 单项选择对话框       * @param context       * @param title 对话框标题       * @param items 选项内容(String数组)       * @param tv_item 显示当前选择内容的View(暂时用到TextView)       */      public void showChooseDialog(Context context,String title, ListAdapter adapter) {          AlertDialog.Builder builder = new AlertDialog.Builder(context);          builder.setTitle(title);          builder.setSingleChoiceItems(adapter, -1,                  new DialogInterface.OnClickListener() {                      @Override                      public void onClick(DialogInterface dialog,                              int which) {                      selectPosition = which;                    ScheduleIconInfo info = mInfos.get(selectPosition);                        mSelectedIcon.setVisibility(View.VISIBLE);                        mSelectedIcon.setImageResource(info.getImageId());                        onTitleChange(mTitleEditText.getText().toString().trim());                                            dialog.dismiss();                    }                  });          builder.create().show();              }  

3、loadingDialog

         源码

   自定义loadingDialog,网上资源很多,看了几篇博客,做了个自己喜欢的效果,直接粘主要代码。

    (1)res / layout / dialog_loading.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/dialog_loading_view"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center"    android:orientation="vertical" >    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/loading_bg"        android:gravity="center"        android:orientation="vertical"        android:paddingBottom="10dp"        android:paddingLeft="21dp"        android:paddingRight="21dp"        android:paddingTop="10dp" >        <ProgressBar            android:id="@+id/progressBar1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_horizontal"            android:indeterminateBehavior="repeat"            android:indeterminateDrawable="@drawable/dialog_loading"            android:indeterminateOnly="true" />        <TextView            android:id="@+id/tipTextView"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginTop="4dp"            android:text="加载中..."            android:textColor="#f0f0f0"            android:textSize="14sp" />    </LinearLayout></LinearLayout>
    (2)res / drawable / dialog_loading.xml

<?xml version="1.0" encoding="utf-8"?><animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:drawable="@drawable/dialog_loading_img"    android:pivotX="50%"    android:pivotY="50%" /><!-- 下面是转圈的 <?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android"    android:drawable="@drawable/dialog_loading_img2"    android:fromDegrees="0"    android:pivotX="50%"    android:pivotY="50%"    android:toDegrees="360" />-->
(3)DialogUtil.java

/** * 得到自定义的progressDialog * @param context * @param msg 文字提示 * @return */public static Dialog createLoadingDialog(Context context, String msg) {LayoutInflater inflater = LayoutInflater.from(context);View v = inflater.inflate(R.layout.dialog_loading, null);// 得到加载viewLinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_loading_view);// 加载布局TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 提示文字tipTextView.setText(msg);// 设置加载信息Dialog loadingDialog = new Dialog(context, R.style.MyDialogStyle);// 创建自定义样式dialogloadingDialog.setCancelable(true); // 是否可以按“返回键”消失loadingDialog.setCanceledOnTouchOutside(true); //点击加载框以外的区域loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));// 设置布局loadingDialog.show();return loadingDialog;}
(4)styles.xml

<!-- my loading dialog -->    <style name="MyDialogStyle">        <item name="android:windowBackground">@android:color/transparent</item>        <item name="android:windowFrame">@null</item>        <item name="android:windowNoTitle">true</item>        <item name="android:windowIsFloating">true</item>        <item name="android:windowIsTranslucent">true</item>        <item name="android:windowContentOverlay">@null</item>        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>        <item name="android:backgroundDimEnabled">true</item>    </style>
(5)MainActivity.java

public class MainActivity extends Activity {private Button btn_loading = null; private Dialog dlg_loading = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initUI();initListeners();}private void initUI() {btn_loading = (Button) findViewById(R.id.main_btn_show_loading_dialog);}private void initListeners() {btn_loading.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {dlg_loading = DialogUtil.createLoadingDialog(MainActivity.this, "加载中...");}});}}

0 0
原创粉丝点击