`
寻梦者
  • 浏览: 637609 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android中定制的dialog

 
阅读更多

 

public ShelfSwitchDialog(Context context) {
		super(context,android.R.style.Theme_NoTitleBar);
		setContentView(R.layout.newspaper_switch_dialog);
		this.context = context;
		Window win = getWindow();
		win.getAttributes().gravity = Gravity.TOP;
		win.setBackgroundDrawableResource(R.drawable.newspaper_blank);
		//大小
		win.setLayout(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
	}

    dialog的定制 :

   public class ShelfSwitchDialog extends Dialog implements OnClickListener{

	Context context;
	ImageView yingyong,shudian,baojia;
	int selectIndex;
	String[] choiceItems = new String[]{"图书","报架"};
	
	public ShelfSwitchDialog(Context context,int paddingLeft){
		this(context);
		View v = findViewById(R.id.dialog_root_layout);
		v.setPadding(paddingLeft-50,50,v.getPaddingRight(),v.getPaddingBottom());
		yingyong = (ImageView)findViewById(R.id.yingyong);
		yingyong.setOnClickListener(this);
		shudian = (ImageView)findViewById(R.id.shudian);
		shudian.setOnClickListener(this);
		baojia = (ImageView)findViewById(R.id.baojia);
		baojia.setOnClickListener(this);
	}
	
	public ShelfSwitchDialog(Context context) {
		super(context,android.R.style.Theme_NoTitleBar);
		setContentView(R.layout.newspaper_switch_dialog);
		this.context = context;
		Window win = getWindow();
		win.getAttributes().gravity = Gravity.TOP;
		win.setBackgroundDrawableResource(R.drawable.newspaper_blank);
		//大小
		win.setLayout(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
	}
	public AlertDialog create(){
		if(context==null){return null;}
		final boolean instOfStore = context instanceof ShelfActivity||context instanceof BooksListActivity;
		final boolean instOfShelf = context instanceof NewspaperShelf;
		final Intent shelfIntent = new Intent(context,NewspaperShelf.class);
		final Intent storeIntent = new Intent(context,ShelfActivity.class);
		AlertDialog.Builder builder = new AlertDialog.Builder(context);
		AlertDialog dialog =  builder
        .setIcon(R.drawable.newspaper_ic_switch)
        .setTitle("切换到:")
        .setSingleChoiceItems(choiceItems, 0, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
            	selectIndex =  whichButton;
            }
        })
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
        	
            public void onClick(DialogInterface dialog, int whichButton) {
//            	Log.v("","whichButton:"+selectIndex);
            	if(instOfStore){
            		switch(selectIndex){
            		case 0:
            			Toast.makeText(context,"当前已是书店",Toast.LENGTH_SHORT).show();
            			break;
            		case 1:
            			context.startActivity(shelfIntent);
            			break;
            		}
            	}
            	else if(instOfShelf){
            		switch(selectIndex){
            		case 0:
            			((ShelfActivity)context).finish();
            			break;
            		case 1:
            			Toast.makeText(context,"当前已是报架",Toast.LENGTH_SHORT).show();
            			break;
            		}
            	}
            }
        })
        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
            	
            }
        })
       .create();
		dialog.getWindow().getAttributes().gravity = Gravity.TOP;
		dialog.getWindow().setLayout(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
		return dialog;
	}

	@Override
	public void onClick(View v) {
		final boolean instOfShelf = context instanceof ShelfActivity;
		final boolean instOfNewspaperShelf = context instanceof NewspaperShelf;
		final boolean instOfStoreActivity = context instanceof StoreActivity;
		final boolean instOfBooksListActivity = context instanceof BooksListActivity;
		final Intent newspaperShelfIntent = new Intent(context,NewspaperShelf.class);
		final Intent shelfIntent = new Intent(context,ShelfActivity.class);
		switch(v.getId()){
		case R.id.yingyong:
			Intent intent = new Intent("cn.chutong.ereader.finishactivity");
			dismiss();
			context.sendBroadcast(intent);
			break;
		case R.id.shudian:
			if(instOfNewspaperShelf){
				((NewspaperShelf)context).finish();
				dismiss();
			}
			else if(instOfShelf||instOfBooksListActivity){
				Toast.makeText(context,"当前已是书店",Toast.LENGTH_SHORT).show();
				dismiss();
			}
			else if(instOfStoreActivity){
				dismiss();
				((StoreActivity)context).finish();
				context.startActivity(shelfIntent);
			}
			break;
		case R.id.baojia:
			if(instOfNewspaperShelf){
				Toast.makeText(context,"当前已是报架",Toast.LENGTH_SHORT).show();
				dismiss();
			}
			else if(instOfShelf||instOfBooksListActivity){
				context.startActivity(newspaperShelfIntent);
				dismiss();
			}
			else if(instOfStoreActivity){
				context.startActivity(newspaperShelfIntent);
				dismiss();
				((StoreActivity)context).finish();
			}
			break;
		
		}
	}
}
 

   效果图:

 

 


 

 

第二种情况:

 

addCustomDlg = new Dialog(this, R.style.dialog);
addCustomDlg.setContentView(R.layout.add);
addCustomDlg.show();
confirmBtn = (Button) addCustomDlg.findViewById(R.id.confirmBtn);
edit = (EditText) addCustomDlg.findViewById(R.id.txt);
edit.setText("");
btn_back = (ImageButton) addCustomDlg.findViewById(R.id.btn_back);
btn_back.setOnClickListener(this);
confirmBtn.setOnClickListener(this);

   直接从dialog中获取控件,并绑定事件

  效果:


  • 大小: 20.3 KB
  • 大小: 18.9 KB
分享到:
评论

相关推荐

    Android Dialog全屏显示、动画显示

    在Android开发中,自定义Dialog是一种常见的用户交互方式,它能提供更为丰富的界面和功能,以满足特定场景下的需求。...在实际开发中,还可以根据需求进一步定制Dialog的功能和样式,比如添加底部操作栏、顶部标题等。

    Android自定义loading Dialog

    在Android开发中,自定义组件是一项常见的需求,特别是在创建用户界面时,为了提供更好的用户体验,开发者经常需要定制一些特殊的对话框(Dialog)。本教程将详细讲解如何实现一个自定义的加载对话框(Loading ...

    android自定义圆角dialog

    总结来说,“android自定义圆角dialog”是一个专注于Android Dialog样式定制的实践案例,主要涉及自定义Dialog类的创建、布局设计以及圆角效果的实现。通过研究此项目,开发者能够了解到如何根据实际需求打造更加...

    Android中dialog常用样式

    在Android应用开发中,Dialog是一种重要的用户交互组件,它用于显示临时信息或向用户征求简短的确认或选择。在日常开发中,我们经常会遇到各种类型的对话框需求,如警告、确认、信息提示等。本资源集合了Android中...

    自定义右上角带叉号Dialog Android 自定义layout Dialog

    在Android开发中,创建自定义对话框(Dialog)是一种常见的需求,这允许开发者根据应用的UI风格和功能需求定制对话框的布局和交互方式。本文将深入探讨如何创建一个自定义右上角带有关闭叉号的Dialog,并实现点击...

    安卓Dialog对话框相关-androiddialog总结Dialog整理.rar

    在Android开发中,Dialog对话框是一种非常常见的组件,它用于在主界面之上显示临时的通知或交互信息,而不中断用户对应用程序的主要操作。本资源“安卓Dialog对话框相关-androiddialog总结Dialog整理.rar”提供了...

    Android中自定义Dialog

    在Dialog中添加交互元素,如按钮,可以使用`Button`视图,并设置其点击监听器。例如,我们可以创建一个`OnClickListener`来处理按钮的点击事件,执行相应的逻辑。对于复杂的交互,可能还需要使用`EditText`或其他...

    Android自定义Dialog 界面比较好看

    4. 考虑到界面的美感,可以使用Android的Material Design库,或者自定义主题和样式来进一步定制Dialog的外观。这可能涉及到修改Dialog的主题属性,例如背景颜色、边框、字体等。 5. 对于更复杂的交互,例如动画效果...

    Android自定义dialogDemo

    - 不要在Dialog中执行耗时的操作,以免阻塞主线程。 - 对于重要的对话,考虑使用`AlertDialog`而不是普通的`Dialog`,因为`AlertDialog`提供了更好的默认样式和行为。 综上所述,`Android自定义dialogDemo`涵盖了...

    Android对话框(Dialog)实例

    在Android应用开发中,对话框(Dialog)是一种重要的交互...在`DialogDemo`中,我们展示了如何创建一个带有标题、内容和两个按钮的自定义对话框,这只是一个基础示例,实际应用中,可以根据项目需求进行扩展和定制。

    android自定义dialog嵌套listview

    在Android开发中,自定义Dialog是一种常见的需求,它允许开发者创建具有特定布局和功能的对话框,以提供更丰富的用户体验。本篇文章将深入探讨如何在Android中实现一个自定义Dialog并嵌套ListView,同时实现点击事件...

    Android Dialog设置透明背景以及位置

    在Android开发中,Dialog是一种常见的用户交互组件,用于在主线程中显示临时信息或进行简单的操作选择。在设计用户界面时,有时我们可能希望Dialog具有透明背景或者可以自定义其显示位置,以达到更佳的视觉效果。本...

    Android自定义显示内容的Dialog

    在Android开发中,有时我们可能需要...Dialog提供了基本的对话框功能,而PopupWindow提供了更大的定制空间和灵活性。结合`PopAnim`中的动画效果,我们可以创造出既美观又实用的自定义对话框,提升应用程序的用户体验。

    Android(Dialog).zip_android_android Dialog

    在Android开发中,Dialog是一个非常重要的组件,它用于在用户界面中显示临时的、轻量级的窗口...在实际开发中,根据项目需求选择合适的Dialog类型,并利用Builder模式进行个性化定制,是每个Android开发者必备的技能。

    Pro Android学习:Dialog小例子

    在Android开发中,Dialog是一种非常重要的UI组件,它用于向用户显示临时信息或者与用户进行交互。本示例“Pro Android学习:Dialog小例子”旨在深入解析如何在Android应用程序中创建和使用Dialogs,以及与Fragment...

    Android中Dialog从底部划入

    在Android开发中,Dialog是一种非常重要的UI组件,用于在用户界面中显示临时信息或与用户进行交互。"Android中Dialog从底部划入"这个话题主要关注如何实现一个自定义的Dialog,使其从屏幕底部动画滑出,提升用户体验...

    android dialog嵌套ListView

    在Android开发中,有时我们需要创建一个对话框(Dialog)来展示一些信息或者提供用户交互,例如选择、设置等。在这种情况下,如果对话框中的内容需要包含列表数据,我们就会使用到`Dialog`嵌套`ListView`的技术。这...

    Android 通过自定义Dialog来理解接口回调callback

    在Android开发中,自定义Dialog是一种常见的用户交互方式,它能提供更为丰富的界面展示和定制化功能。本文将深入探讨如何通过自定义Dialog来理解接口回调(callback)机制,这在进行Android应用开发时是非常重要的一...

    安卓Android源码——安卓Android实现Windows风格的Dialog.rar

    在Android SDK中,Dialog是一个继承自`android.app.Dialog`的类,它是用来显示一个浮现在当前Activity之上的小窗口,通常用于展示临时信息或获取用户输入。创建Dialog的基本步骤包括: 1. **创建Dialog实例**:通过...

    Android dialog显示位置

    在Android开发中,Dialog是一种非常常见的用户界面组件,它用于向用户展示临时信息或进行简单的交互操作。对话框通常会浮现在应用主界面之上,但它的显示位置可以根据开发者的需求进行定制。本文将深入探讨如何在...

Global site tag (gtag.js) - Google Analytics