自定义Dialog几个Popup window.

来源:互联网 发布:mysql入门很简单 pdf 编辑:程序博客网 时间:2024/05/21 09:13

主要理解interface的用法。

xDialog.java  (代码中间有use case:)

package android.posapp.a;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Dialog;import android.content.Context;import android.posapp.R;import android.posapp.ui.Data;import android.view.LayoutInflater;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.EditText;import android.widget.ImageButton;import android.widget.ImageView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;public class xDialog {public interface OnClickListener{    public boolean click();}private OnClickListener if_okClick;private OnClickListener if_cancelClick;public void show_message_info(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK) { show_message( context,title,message,new_xDialog_OnClickListener_OK,R.drawable.dialog_icon_info);}public void show_message_warrning(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK) { show_message( context,title,message,new_xDialog_OnClickListener_OK,R.drawable.dialog_icon_warning);}public void show_message_error(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK) { show_message( context,title,message,new_xDialog_OnClickListener_OK,R.drawable.dialog_icon_error);}public void show_message_ok(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK) { show_message( context,title,message,new_xDialog_OnClickListener_OK,R.drawable.dialog_icon_ok);}/* use case : * new xDialog().show_message_error(this, "错误", "设置失败!",null); * */private Dialog show_message(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK,int icon_id) {if_okClick=new_xDialog_OnClickListener_OK;final Dialog dialog = new Dialog(context, R.style.NoTitleDialog);int layoutId=R.layout.layout_dialog_msg;View layout = LayoutInflater.from(context).inflate(layoutId, null);//LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);Data.log2d("[show_message]");ImageView imageView1 = (ImageView) layout.findViewById(R.id.imageView1);imageView1.setImageDrawable(context.getResources().getDrawable(icon_id));TextView textviewTitle = (TextView) layout.findViewById(R.id.textviewTitle);textviewTitle.setText(title);//(this.getResources().getText(R.string.strSelectType));final TextView textviewContent = (TextView) layout.findViewById(R.id.textviewContent);textviewContent.setText(message);//(this.getResources().getText(R.string.strSelectType));Button buttonOK = (Button) layout.findViewById(R.id.buttonOK);buttonOK.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {Data.log2d("[show_message] OK onClick  1");if (if_okClick==null){dialog.dismiss();}else if (if_okClick.click()){Data.log2d("[show_message] OK onClick  2");dialog.dismiss();}}});Button buttonCancel = (Button) layout.findViewById(R.id.buttonCancel);buttonCancel.setVisibility(View.GONE);dialog.setContentView(layout);dialog.show();return dialog;/*new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.NoTitleDialog)).setTitle("错误").setMessage("请输入公司名称(至少4个字符)!").setPositiveButton("确认", null).show();*/}/*------------------------------------------------------------*/public Dialog show_question(final Context context,String title,String message,OnClickListener new_xDialog_OnClickListener_OK,OnClickListener new_xDialog_OnClickListener_Cancel) {if_okClick=new_xDialog_OnClickListener_OK;if_cancelClick=new_xDialog_OnClickListener_Cancel;final Dialog dialog = new Dialog(context, R.style.NoTitleDialog);int layoutId=R.layout.layout_dialog_msg;View layout = LayoutInflater.from(context).inflate(layoutId, null);//LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);Data.log2d("[show_question]");ImageView imageView1 = (ImageView) layout.findViewById(R.id.imageView1);imageView1.setImageDrawable(context.getResources().getDrawable(R.drawable.dialog_icon_question));TextView textviewTitle = (TextView) layout.findViewById(R.id.textviewTitle);textviewTitle.setText(title);//(this.getResources().getText(R.string.strSelectType));final TextView textviewContent = (TextView) layout.findViewById(R.id.textviewContent);textviewContent.setText(message);//(this.getResources().getText(R.string.strSelectType));Button buttonOK = (Button) layout.findViewById(R.id.buttonOK);buttonOK.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {Data.log2d("[show_question] OK onClick  1");if (if_okClick==null){dialog.dismiss();}else if (if_okClick.click()){Data.log2d("[show_question] OK onClick  2");dialog.dismiss();}}});Button buttonCancel = (Button) layout.findViewById(R.id.buttonCancel);buttonCancel.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {Data.log2d("[dialog_msg_Ok_show] OK onClick  1");if (if_cancelClick==null){dialog.dismiss();}else if (if_cancelClick.click()){Data.log2d("[dialog_msg_Ok_show] OK onClick  2");dialog.dismiss();}}});dialog.setContentView(layout);dialog.show();return dialog;/*new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.NoTitleDialog)).setTitle("错误").setMessage("请输入公司名称(至少4个字符)!").setPositiveButton("确认", null).show();*/}/*------------------------------------------------------------*/public interface OnEditOkClick{    public boolean click(EditText v);}private OnEditOkClick if_edit_okClick;public Dialog show_edit(final Context context,String title,String message,OnEditOkClick cb) {if_edit_okClick=cb;final Dialog dialog = new Dialog(context, R.style.NoTitleDialog);int layoutId=R.layout.layout_dialog_edittext;View layout = LayoutInflater.from(context).inflate(layoutId, null);//LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);TextView textviewTitle = (TextView) layout.findViewById(R.id.textviewTitle);textviewTitle.setText(title);final EditText content = (EditText) layout.findViewById(R.id.edittextContent);content.setText(message);content.setMaxEms(20);Button buttonOK = (Button) layout.findViewById(R.id.buttonOK);buttonOK.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {if (if_edit_okClick.click(content)){dialog.dismiss();}}});Button cancelbutton = (Button) layout.findViewById(R.id.buttonCancel);cancelbutton.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {dialog.dismiss();}});dialog.setContentView(layout);dialog.show();return dialog;}/* use case:new xDialog().show_edit(this, "please input one name",button_cname.getText().toString(), new xDialog.OnEditOkClick() {@Overridepublic boolean click(EditText v) {return dialog_editor_cname_check(v.getText().toString().trim());}});*//*------------------------------------------------------------*/public interface OnListItemClick{    public boolean click(ListView v,int position);}private OnListItemClick if_list_onItemClick;public Dialog show_list(final Context context,String title,List<Map<String, Object>> listData, String listKeyString,OnListItemClick ic) {//assert( ic ==null);if_list_onItemClick=ic;int layoutId=R.layout.layout_dialog_list;int layoutSubId=R.layout.layout_dialog_list_item;final Dialog dialog = new Dialog(context, R.style.NoTitleDialog);View layout = LayoutInflater.from(context).inflate(layoutId, null);TextView textviewTitle = (TextView) layout.findViewById(R.id.textviewTitle);textviewTitle.setText(title);final ListView listView1=(ListView) layout.findViewById(R.id.listView1);SimpleAdapter adapter = new SimpleAdapter(context, listData,layoutSubId, new String[] {listKeyString},            new int[] { R.id.textView1 }); listView1.setCacheColorHint(0);listView1.setFadingEdgeLength(0);listView1.setDividerHeight(0);listView1.setAdapter(adapter);listView1.setOnItemClickListener(new ListView.OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0, View v, int position,long item_line_id) {if (if_list_onItemClick.click(listView1,position)){dialog.dismiss();}}});Button cancelbutton = (Button) layout.findViewById(R.id.buttonCancel);cancelbutton.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {dialog.dismiss();}});dialog.setContentView(layout);dialog.show();return dialog;}public Dialog show_list(final Context context,String title,String [] listString,OnListItemClick ic) {//assert( ic ==null);List<Map<String, Object>> listData = new ArrayList<Map<String, Object>>();String key = "a" + "f" + "e" + "i";if (listString.length == 0) {} else {for (int i = 0; i < listString.length; i++) {Map<String, Object> map = null;map = new HashMap<String, Object>();map.put(key, listString[i].toString());listData.add(map);}}return show_list(context, title, listData, key,ic);}/* use case: *  String[] s = new String[] { "item1", "item1", "item1",  };new xDialog().show_list(this, "select...", s, new xDialog.OnListItemClick() {@Overridepublic boolean click(ListView v, int position) {// TODO Auto-generated method stubif (position == 0) {n(Data.G_SALE_OUT_BACK);} else if (position == 1) {n(Data.G_SALE_IN);} else if (position == 2) {export_select();}return true;}});*//* use case: * new xDialog().show_list(this, "select date", mListDate, "day_date1",new xDialog.OnListItemClick() {@Overridepublic boolean click(ListView v, int position) {// TODO Auto-generated method stubdialog_select(position);return true;}});*/public Dialog show_list_ex(final Context context,String title,List<Map<String, Object>> listData, String listKeyString,OnListItemClick ic) {//assert( ic ==null);if_list_onItemClick=ic;int layoutId=R.layout.layout_dialog_list_ex;int layoutSubId=R.layout.layout_dialog_list_item;final Dialog dialog = new Dialog(context, R.style.NoTitleDialog);View layout = LayoutInflater.from(context).inflate(layoutId, null);TextView textviewTitle = (TextView) layout.findViewById(R.id.textviewTitle);textviewTitle.setText(title);ImageButton buttonCancel = (ImageButton) layout.findViewById(R.id.buttonCancel);buttonCancel.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {dialog.dismiss();}});final ListView listView1=(ListView) layout.findViewById(R.id.listView1);SimpleAdapter adapter = new SimpleAdapter(context, listData,layoutSubId, new String[] {listKeyString},            new int[] { R.id.textView1 }); listView1.setCacheColorHint(0);listView1.setFadingEdgeLength(0);listView1.setDividerHeight(0);listView1.setAdapter(adapter);listView1.setOnItemClickListener(new ListView.OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> arg0, View v, int position,long item_line_id) {if (if_list_onItemClick.click(listView1,position)){dialog.dismiss();}}});dialog.setContentView(layout);dialog.show();return dialog;}public Dialog show_list_ex(final Context context,String title,String [] listString,OnListItemClick ic) {List<Map<String, Object>> listData = new ArrayList<Map<String, Object>>();String key = "a" + "f" + "e" + "i";if (listString.length == 0) {} else {for (int i = 0; i < listString.length; i++) {Map<String, Object> map = null;map = new HashMap<String, Object>();map.put(key, listString[i].toString());listData.add(map);}}return show_list_ex(context, title, listData, key,ic);}}


layout_dialog_edittext.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/scrollView1"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/dialog_bg" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical" >        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:background="@drawable/title_bg"            android:orientation="vertical" >            <RelativeLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="10dp"                android:layout_marginRight="10dp"                android:layout_marginTop="10dp" >                <ImageView                    android:id="@+id/imageView1"                    android:layout_width="40dp"                    android:layout_height="40dp"                    android:layout_alignParentLeft="true"                    android:layout_alignParentTop="true"                    android:src="@drawable/dialog_icon_info" />                <TextView                    android:id="@+id/textviewTitle"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_centerVertical="true"                    android:layout_marginLeft="10dp"                    android:layout_toRightOf="@+id/imageView1"                    android:text="title"                    android:textAppearance="?android:attr/textAppearanceMedium" />            </RelativeLayout>        </LinearLayout>        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginBottom="10dp"            android:layout_marginLeft="10dp"            android:layout_marginRight="10dp"            android:layout_marginTop="5dp"            android:orientation="vertical" >            <LinearLayout                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="10dp"                android:layout_marginRight="10dp"                android:orientation="vertical" >                <EditText                    android:id="@+id/edittextContent"                    android:layout_width="match_parent"                    android:layout_height="wrap_content"                    android:ems="10" >                    <requestFocus />                </EditText>            </LinearLayout>            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="10dp"                android:layout_marginRight="10dp"                android:gravity="center"                android:orientation="horizontal" >                <Button                    android:id="@+id/buttonOK"                    android:layout_width="91dp"                    android:layout_height="wrap_content"                    android:background="@drawable/green_btn1_bg"                    android:text="@string/strConfirm"                    android:textColor="@color/btn_text_color" >                </Button>                <Button                    android:id="@+id/buttonCancel"                    android:layout_width="91dp"                    android:layout_height="wrap_content"                    android:layout_marginLeft="40dp"                    android:background="@drawable/green_btn1_bg"                    android:text="@string/strCancel"                    android:textColor="@color/btn_text_color" >                </Button>            </LinearLayout>        </LinearLayout>    </LinearLayout></ScrollView>

layout_dialog_msg.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/scrollView1"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/dialog_bg" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical" >        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:background="@drawable/title_bg"            android:orientation="vertical" >            <RelativeLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="10dp"                android:layout_marginRight="10dp"                android:layout_marginTop="10dp" >                <ImageView                    android:id="@+id/imageView1"                    android:layout_width="40dp"                    android:layout_height="40dp"                    android:layout_alignParentLeft="true"                    android:layout_alignParentTop="true"                    android:src="@drawable/dialog_icon_info" />                <TextView                    android:id="@+id/textviewTitle"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_centerVertical="true"                    android:layout_marginLeft="10dp"                    android:layout_toRightOf="@+id/imageView1"                    android:text="title"                    android:textAppearance="?android:attr/textAppearanceMedium" />            </RelativeLayout>        </LinearLayout>        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginBottom="10dp"            android:layout_marginLeft="10dp"            android:layout_marginRight="10dp"            android:layout_marginTop="5dp"            android:orientation="vertical" >            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="10dp"                android:layout_marginRight="10dp"                android:orientation="vertical" >                <TextView                    android:id="@+id/textviewContent"                    android:layout_width="match_parent"                    android:layout_height="wrap_content"                    android:text="Message"                    android:textAppearance="?android:attr/textAppearanceMedium" />            </LinearLayout>            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="10dp"                android:layout_marginRight="10dp"                android:layout_marginTop="5dp"                android:gravity="center"                android:orientation="horizontal" >                <Button                    android:id="@+id/buttonOK"                    android:layout_width="91dp"                    android:layout_height="wrap_content"                    android:background="@drawable/green_btn1_bg"                    android:text="@string/strConfirm"                    android:textColor="@color/btn_text_color" >                </Button>                <Button                    android:id="@+id/buttonCancel"                    android:layout_width="91dp"                    android:layout_height="wrap_content"                    android:layout_marginLeft="40dp"                    android:background="@drawable/green_btn1_bg"                    android:text="@string/strCancel"                    android:textColor="@color/btn_text_color" >                </Button>            </LinearLayout>        </LinearLayout>    </LinearLayout></ScrollView>

layout_dialog_list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/scrollView1"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/dialog_bg"    android:orientation="vertical" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="@drawable/title_bg"        android:orientation="vertical" >        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginTop="10dp"            android:layout_marginLeft="10dp"            android:layout_marginRight="10dp" >                            <ImageView                    android:id="@+id/imageView1"                    android:layout_width="40dp"                    android:layout_height="40dp"                    android:layout_alignParentLeft="true"                    android:layout_alignParentTop="true"                    android:src="@drawable/dialog_icon_question" />                <TextView                    android:id="@+id/textviewTitle"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_centerVertical="true"                    android:layout_marginLeft="10dp"                    android:layout_toRightOf="@+id/imageView1"                    android:text="title"                    android:textAppearance="?android:attr/textAppearanceMedium" />        </RelativeLayout>    </LinearLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginBottom="10dp"        android:layout_marginLeft="10dp"        android:layout_marginRight="10dp"        android:layout_marginTop="5dp"        android:orientation="vertical" >        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="vertical" >            <ListView                android:id="@+id/listView1"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="10dp"                android:layout_marginRight="10dp" >            </ListView>        </LinearLayout>        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"             android:layout_marginLeft="10dp"            android:layout_marginRight="10dp"            android:gravity="center"            android:orientation="horizontal" >            <Button                android:id="@+id/buttonCancel"                android:layout_width="91dp"                android:layout_height="wrap_content"                android:background="@drawable/green_btn1_bg"                android:text="@string/strCancel"                android:textColor="@color/btn_text_color" >            </Button>        </LinearLayout>    </LinearLayout></LinearLayout>

layout_dialog_list_ex.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/scrollView1"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/dialog_bg"    android:orientation="vertical" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:background="@drawable/title_bg"        android:orientation="vertical" >        <RelativeLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginTop="10dp"            android:layout_marginLeft="10dp"            android:layout_marginRight="10dp" >                <ImageView                    android:id="@+id/imageView1"                    android:layout_width="40dp"                    android:layout_height="40dp"                    android:layout_alignParentLeft="true"                    android:layout_alignParentTop="true"                    android:src="@drawable/dialog_icon_question" />                <TextView                    android:id="@+id/textviewTitle"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_centerVertical="true"                    android:layout_marginLeft="10dp"                    android:layout_toRightOf="@+id/imageView1"                    android:text="title"                    android:textAppearance="?android:attr/textAppearanceMedium" />            <ImageButton                android:id="@+id/buttonCancel"                android:layout_width="50dp"                android:layout_height="40dp"                android:layout_alignParentRight="true"                android:background="@drawable/green_btn1_bg"                android:src="@android:drawable/ic_delete" />        </RelativeLayout>    </LinearLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginBottom="10dp"        android:layout_marginLeft="10dp"        android:layout_marginRight="10dp"        android:layout_marginTop="5dp"        android:orientation="vertical" >        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="vertical" >            <ListView                android:id="@+id/listView1"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginLeft="10dp"                android:layout_marginRight="10dp" >            </ListView>        </LinearLayout>        <!--             <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginBottom="10dp"            android:layout_marginLeft="10dp"            android:layout_marginRight="10dp"            android:layout_marginTop="10dp"            android:gravity="center"            android:orientation="horizontal" >            <Button                android:id="@+id/buttonCancel"                android:layout_width="91dp"                android:layout_height="wrap_content"                android:background="@drawable/bg_btn"                android:text="@string/strCancel"                android:textColor="@color/btn_text_color" >            </Button>        </LinearLayout>        -->    </LinearLayout></LinearLayout>

layout_dialog_list_item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:background="@drawable/dialog_list_item"    android:orientation="vertical" >    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginLeft="10dp"        android:layout_marginRight="10dp"    android:layout_marginTop="4dp"    android:layout_marginBottom="4dp"                android:text="TextView" /></LinearLayout>

---

use case:

private void case1() {String[] s = new String[] { "AAAAA", "FFF", "789",  };new xDialog().show_list(this, "select.....", s, new xDialog.OnListItemClick() {@Overridepublic boolean click(ListView v, int position) {// TODO Auto-generated method stubif (position == 0) {n(Data.G_SALE_OUT_BACK);} else if (position == 1) {n(Data.G_SALE_IN);} else if (position == 2) {export_select();}return true;}});}
private void case2() {  new xDialog().show_message_ok(this,"succed.","hello",null); }

private void case3(){
new xDialog().show_edit(this, "input ...","xxx", new xDialog.OnEditOkClick() {@Overridepublic boolean click(EditText v) {return check_string_is_ok(v.getText().toString().trim());}});}
}




0 0