做项目的过程中经常会用到对话框提示,整理了一下把暂时用到的先总结下,以后会持续更新。
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, "加载中...");
}
});
}
}