做项目的过程中经常会用到对话框提示,整理了一下把暂时用到的先总结下,以后会持续更新。
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() { @Override public void onClick(DialogInterface dialog, int which) { } } ); builder.setNegativeButton("确定", new DialogInterface.OnClickListener() { @Override public 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() { @Override public 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);// 得到加载view LinearLayout 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);// 创建自定义样式dialog loadingDialog.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; @Override protected 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() { @Override public void onClick(View arg0) { dlg_loading = DialogUtil.createLoadingDialog(MainActivity.this, "加载中..."); } }); } }