最近做项目,在项目中经常需要用到dialog提示用户一些操作,为尊重移动互联网资源共享精神,故整理一下自定义dialog类,方便自己方面他人。
一.先看效果:
二.再上代码:
1.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_view"
android:layout_width="300dip"
android:layout_height="200dip"
android:background="@drawable/content_bg" >
<RelativeLayout
android:id="@+id/title_rlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="5dip">
<TextView
android:id="@+id/title_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_centerVertical="true"
android:text="标题"
android:textColor="@color/black"
android:textSize="18sp" />
<ImageButton
android:id="@+id/title_finish_btn"
android:layout_width="40dip"
android:layout_height="30dip"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="10dip"
android:background="@null"
android:src="@drawable/dialog_close"/>
</RelativeLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="2dip"
android:layout_below="@id/title_rlayout"
android:src="@drawable/update_line" />
<TextView
android:id="@+id/content_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/title_rlayout"
android:padding="15dip"
android:text="@string/limit_content"
android:textColor="@color/black"
android:textSize="20sp" />
<Button
android:id="@+id/open_vvm_btn"
android:layout_width="150dip"
android:layout_height="35dip"
android:layout_below="@id/content_text"
android:layout_marginTop="15dip"
android:layout_centerHorizontal="true"
android:background="@drawable/bg_open_vvm"
android:text="立即开通"
android:textSize="18sp"
/>
</RelativeLayout>
2.java代码:
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
/**
* 开通vvm窗口
*
* @author wfli
*
*/
public class CustomDialog extends Dialog implements android.view.View.OnClickListener{
private final String TAG = "CustomDialogActivity";
private TextView mTitleText;
private TextView mContentText;
private ImageButton mFinishDialog;
private Button mOpenVVM;
CustomDialogListener cdListener;
private Context mContext;
private String mTitle,mContent;
public interface CustomDialogListener {
public void OnClick(View view);
}
public CustomDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
mContext = context;
}
public CustomDialog(Context context, int theme){
super(context, theme);
mContext = context;
}
public CustomDialog(Context context, int theme,String title,String content,CustomDialogListener customDialogListener){
super(context, theme);
this.cdListener = customDialogListener;
mTitle = title;
mContent = content;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_dialog);
initView();
Logs.d(TAG, "onCreate");
}
private void initView() {
mFinishDialog = (ImageButton) findViewById(R.id.title_finish_btn);
mFinishDialog.setOnClickListener(this);
mOpenVVM = (Button) findViewById(R.id.open_vvm_btn);
mOpenVVM.setOnClickListener(this);
mTitleText = (TextView) findViewById(R.id.title_text);
mTitleText.setText(mTitle);
mContentText = (TextView) findViewById(R.id.content_text);
mContentText.setText(mContent);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.title_finish_btn:
dismiss();
break;
case R.id.open_vvm_btn:
cdListener.OnClick(v);
dismiss();
break;
default:
break;
}
}
@Override
public void dismiss() {
// TODO Auto-generated method stub
super.dismiss();
}
}
3.调用代码:
CustomDialog dialog = new CustomDialog(mContext, 0, "提示", "业务暂未开通",
new com.iflytek.settings.CustomDialog.CustomDialogListener() {
@Override
public void OnClick(View view) {
// TODO Auto-generated method stub
switch (view.getId()) {
case R.id.open_vvm_btn:
startActivity(new Intent(mContext, AppLoginActivity.class));
break;
}
}
});
dialog.show();
三.总结:
一般简单的dialog我们可以直接使用系统提供的dialog类就能满足基本的需求了,如果需要比较复杂的dialog才会去使用自定义的dialog。