最简单的退出程序时候的dialog对话框
一 项目中遇到的,title和message都没法设置,只能addview来设置message的信息了。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
AlertDialog dialog; TextView textView = new TextView(this); textView.setText("退出?"); textView.setTextSize(getResources().getDimension(R.dimen.five)); textView.setTextColor(getResources().getColor(R.color.dark_green)); textView.setPadding(50,90,0,0); builder.setView(textView); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { closeTimer(); finish();
//使dialog消失 // if (dialog != null) // { // dialog.dismiss(); // }
} }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); dialog = builder.show();
常规的应该是
builder.setTitle("title"); builder.setMessage("message");
改变alterdialog默认背景
Style里面设置
<!--alertdialog背景设置--> <style name="AlertDialog" parent="@android:style/Theme.Holo.Light.Dialog"> <!-- 这里设置背景为透明,为了隐藏边框 --> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowNoTitle">true</item> <!-- 这里是修改顶部标题背景颜色,具体颜色自己定,可以是图片 --> <!--<item name="android:topDark">@color/white</item>--> <!-- 这里是修改内容区域背景颜色 --> <item name="android:centerDark">#ffffff</item> <item name="android:windowIsTranslucent">true</item> <!--<item name="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>--> </style>
代码中设置:
AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.AlertDialog);
Alterdialog点击空白处不消失的方法
dialog.setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失
二.从底部跳出dialog选择
1.设置dialog跳出动画
Actionsheet_dialog_in.xml
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="200" android:fromYDelta="100%" android:toYDelta="0" />
2.设置dialog淡出动画
Actionsheet_dialog.out.xml
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="200" android:fromYDelta="0" android:toYDelta="100%" />
3.style的样式设置
<style name="ActionSheetDialogStyle" parent="@android:style/Theme.Dialog"> <!--背景透明--> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <!--浮于activity之上--> <item name="android:windowIsFloating">true</item> <!--边框--> <item name="android:windowFrame">@null</item> <!--Dialog以外的区域模糊效果--> <item name="android:backgroundDimEnabled">true</item> <!--无标题--> <item name="android:windowNoTitle">true</item> <!--半透明--> <item name="android:windowIsTranslucent">true</item> <!--Dialog进入及退出动画--> <item name="android:windowAnimationStyle">@style/ActionSheetDialogAnimation</item> </style> <!-- ActionSheet进出动画 --> <style name="ActionSheetDialogAnimation" parent="@android:style/Animation.Dialog"> <item name="android:windowEnterAnimation">@anim/actionsheet_dialog_in</item> <item name="android:windowExitAnimation">@anim/actionsheet_dialog_out</item> </style>
4.页面xml文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/lly_backgroud"> <TextView android:id="@+id/album" android:layout_width="300dp" android:layout_height="45dp" android:gravity="center" android:background="#EEEEE0" android:layout_margin="2dp" android:text="从相册选择" android:textColor="#4A4A4A"/> <TextView android:id="@+id/camera" android:layout_width="match_parent" android:layout_height="45dp" android:gravity="center" android:background="#EEEEE0" android:layout_margin="2dp" android:text="照相" android:textColor="#4A4A4A"/> <TextView android:id="@+id/cancel" android:layout_width="match_parent" android:layout_height="45dp" android:gravity="center" android:background="#EEEEE0" android:layout_margin="2dp" android:text="取消" android:textColor="#4A4A4A"/> </LinearLayout>
5.activity里面的调用
package cn.com.cybertech.notefunctiondemo; import android.app.Dialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_picture,btn_voice,btn_video; public Dialog dialog; private View inflate; private TextView dialog_album,dialog_camera,dialog_cancel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } void init() { btn_picture = (Button) findViewById(R.id.picture); btn_voice = (Button) findViewById(R.id.voice); btn_video = (Button) findViewById(R.id.video); btn_picture.setOnClickListener(this); btn_voice.setOnClickListener(this); btn_video.setOnClickListener(this); } void showSelectPictureDialog() { dialog = new Dialog(this,R.style.ActionSheetDialogStyle); //填充对话框的布局 inflate = LayoutInflater.from(this).inflate(R.layout.dialog_select_picture,null); //初始化控件 dialog_album = (TextView) inflate.findViewById(R.id.album); dialog_camera = (TextView) inflate.findViewById(R.id.camera); dialog_cancel = (TextView) inflate.findViewById(R.id.cancel); dialog_album.setOnClickListener(this); dialog_camera.setOnClickListener(this); dialog_cancel.setOnClickListener(this); //将布局设置给dialog dialog.setContentView(inflate); //获取当前activity所在窗体 Window dialogWindow = dialog.getWindow(); //设置Dialog从窗体底部弹出 dialogWindow.setGravity(Gravity.BOTTOM); //获取窗体的属性 WindowManager.LayoutParams lp = dialogWindow.getAttributes(); lp.y = 20;//设置Dialog距离底部的距离 //将属性设置给窗体 dialogWindow.setAttributes(lp); dialog.show();//显示对话框 } @Override public void onClick(View v) { switch (v.getId()) { case R.id.picture: showSelectPictureDialog(); break; case R.id.voice: break; case R.id.video: break; case R.id.album: Toast.makeText(this,"点击了相册选项",Toast.LENGTH_SHORT).show(); break; case R.id.camera: Toast.makeText(this,"点击了照相机选项",Toast.LENGTH_SHORT).show(); break; case R.id.cancel: dialog.dismiss(); break; default: break; } } }
最简单原始效果的dialog(挺好看的)
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:background="#ffffff"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/dialog_camera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rly_click_bg">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="13dp"
android:paddingLeft="25dp"
android:paddingTop="13dp"
android:text="拍照"
android:textColor="#000000"
android:textSize="15sp" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="#d3d3d3" />
<RelativeLayout
android:id="@+id/dialog_album"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rly_click_bg">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="13dp"
android:paddingLeft="25dp"
android:paddingTop="13dp"
android:text="从相册选择"
android:textColor="#000000"
android:textSize="15sp" />
</RelativeLayout>
</LinearLayout>
/**
* 跳出弹窗,是拍照还是相册
*/
private RelativeLayout tvCamera, tvAlbum;
private Dialog dialog;
private View inflate;
private void showDialog() {
dialog = new Dialog(BlogActivity.this);
inflate = LayoutInflater.from(this).inflate(R.layout.dialog_bolg, null);
tvCamera = inflate.findViewById(R.id.dialog_camera);
tvAlbum = inflate.findViewById(R.id.dialog_album);
tvCamera.setOnClickListener(this);
tvAlbum.setOnClickListener(this);
dialog.setContentView(inflate);
dialog.show();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.dialog_camera:
if (dialog!=null)
{
dialog.dismiss();
}
break;
case R.id.dialog_album:
if (dialog!=null)
{
dialog.dismiss();
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, 0x3001);
}
break;
default:
break;
}
}
6.点击空白处不消失的方法
在dialog.show()之前调dialog.setCanceledOnTouchOutside(false);