`
yunlonglove
  • 浏览: 241489 次
社区版块
存档分类
最新评论

android dialog 模拟新浪、腾讯title弹框效果

 
阅读更多

首先我们看一下新浪微博的效果(其它就是一个dialog):

点击title前 点击title后

实现方式:

首先我们要自定义一个dialog

代码如下:

/***
 * 自定义dialog
 * 
 * @author jia
 * 
 */
public class MyDialog extends Dialog {
	private Window window = null;

	/***
	 * 
	 * @param context
	 * @param layoutResID
	 *            配置文件
	 * @param x
	 *            显示的x坐标
	 * @param y
	 *            显示的y坐标
	 * @param title
	 *            集合
	 */
	public MyDialog(final Context context, int layoutResID, int x, int y,
			final String[] title) {
		super(context, R.style.Transparent);

		window = this.getWindow();
		window.requestFeature(Window.FEATURE_NO_TITLE);
		setContentView(layoutResID);
		int width = this.getWindow().getWindowManager().getDefaultDisplay()
				.getWidth();
		windowDeploy(width / 2, 300, x, y);
		show();

	}

	/***
	 * 设置窗口显示
	 * 
	 * @param x
	 * @param y
	 * @param dialog_x
	 * @param dialog_y
	 */
	public void windowDeploy(int dialog_width, int dialog_height, int dialog_x,
			int dialog_y) {

		window.setBackgroundDrawableResource(android.R.color.transparent); // 设置对话框背景为透明
		WindowManager.LayoutParams wl = window.getAttributes();
		wl.width = dialog_width;
		wl.height = dialog_height;
		// wl.alpha = 0.8f;
		wl.gravity = Gravity.LEFT | Gravity.TOP; // 不设置的话默认是居中
		wl.x = dialog_x - dialog_width / 2; // 要显示的位置x坐标
		wl.y = dialog_y;
		window.setAttributes(wl);
		window.setWindowAnimations(R.style.dialogWindowAnim); // 设置窗口弹出动画
		setCanceledOnTouchOutside(true);
	}

}

我们只需要在activity中调用即可:

代码片段:

textView.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {

				int x_begin = textView.getLeft();
				int x_end = textView.getRight();
				int y_begin = textView.getTop();
				int y_end = textView.getBottom();// 这个是要显示位置的纵坐标
				// 获取最中间的x坐标
				int x = (x_begin + x_end) / 2;// 这个值也就是屏幕最中间的值,也可以下面这样
				// int x=getWindowManager().getDefaultDisplay().getWidth()/2;

				// int[] location = new int[2];
				// textView.getLocationInWindow(location); // 获取在当前窗口内的绝对坐标
				// textView.getLocationOnScreen(location);// 获取在整个屏幕内的绝对坐标

				myDialog = new MyDialog(DialogDemoActivity.this,
						R.layout.dialog, x, y_end, title);

				View view = LayoutInflater.from(DialogDemoActivity.this)
						.inflate(R.layout.dialog, null);
				listView = (ListView) myDialog.getWindow().findViewById(
						R.id.lv_dialog);
				listView.setAdapter(new ArrayAdapter<String>(
						DialogDemoActivity.this, R.layout.text, R.id.tv_text,
						title));

				listView.setOnItemClickListener(new OnItemClickListener() {

					@Override
					public void onItemClick(AdapterView<?> arg0, View arg1,
							int arg2, long arg3) {
						textView.setText(title[arg2]);
						myDialog.cancel();
						myDialog = null;
					}

				});
			}
		});
实现效果如下:

点击前 点击后 选择 选择后


实现起来也不难,有点要说明一下,这里我们用到了.9.png图片,这个图片会自动根据需要伸展,(重要的是不失真,这点很棒吧,详细介绍请点击连接).

源码下载



分享到:
评论

相关推荐

    模拟新浪腾讯title选项卡

    在IT行业中,尤其是在Android或者Web开发领域,模拟新浪腾讯title选项卡是一项常见的需求,它能够为用户提供更加便捷和直观的交互体验。在这个场景下,"Dialog"被灵活地运用,来模仿微博应用中的选项卡功能。Dialog...

    Android Dialog全屏显示、动画显示

    在Android开发中,自定义Dialog是一种常见的用户交互方式,它能提供更为丰富的界面和功能,以满足特定场景下的需求。本教程将详细讲解如何创建一个全屏显示且带有动画效果的自定义Dialog,并结合相机和图片选择的...

    Android Dialog中加载GIF

    在Android开发中,有时我们需要在Dialog中展示动态内容,如GIF动图,来提供更丰富的用户交互体验。本文将详细讲解如何在Android Dialog中利用Glide库加载并播放GIF。 首先,Glide是一个非常流行的Android图片加载库...

    android使用MaterialDialog和AlertDialog弹框Timer倒计时的用法

    在Android开发中,创建用户交互界面时,有时我们需要向用户展示一些临时信息或者获取用户的确认,这时弹框(Dialog)就显得尤为重要。本教程将详细讲解如何在Android应用中使用`MaterialDialog`和`AlertDialog`实现...

    各种android弹出dialog效果以及各种dialog样式

    各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果...

    android dialog向上弹效果

    "android dialog向上弹效果"指的是在展示Dialog时,通过动画使其从屏幕下方向上弹出,给用户带来更生动、自然的视觉体验。实现这种效果主要涉及Android的动画系统和自定义Dialog。 首先,Android的动画系统提供了...

    自定义Android Dialog EditText 密码输入框

    在Android开发中,自定义Dialog是一项常见的需求,它允许开发者根据应用的UI风格和功能需求进行个性化设计。本文将深入探讨如何自定义一个Android Dialog,特别是实现一个类似于支付密码输入框的功能,其中EditText...

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

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

    Android 生成最简单的dialog弹框.rar

    Android 生成最简单的dialog弹框,为Button设置OnClickListener监听器,然后调用onCreateDialog函数,声明一个Dialog对象,在这个函数中设置对话框的标题、图标、和提示内容以及为按钮添加监听器,生成生成Dialog...

    Android Dialog更改样式及显示位置

    在Android开发中,Dialog是一种常见的用户交互界面,用于在主线程中显示临时信息或进行简单的用户操作。默认情况下,Dialog会出现在屏幕中央,但开发者可以根据需求自定义其样式和显示位置。本文将深入探讨如何在...

    Android dialog显示位置

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

    自定义dialog弹出框

    在Android开发中,自定义Dialog是一种常见的需求,它允许开发者根据应用的设计风格和功能需求创建具有独特外观和交互效果的对话框。本教程将深入探讨如何实现自定义Dialog,包括利用Shape和Selector来定制样式,以及...

    带三角的dialog弹出框

    在Android开发中,创建自定义对话框(Dialog)是一种常见的需求,可以提供用户与应用交互的特殊界面。本文将详细探讨如何实现一个带有三角形指示箭头的对话框,即"带三角的dialog弹出框",并分享相关代码实现。 ...

    dialog自制简单拖拽弹框

    本话题主要探讨的是如何使用JavaScript库jQuery(jq)实现一个自定义的拖拽功能对话框(dialog),并支持全屏和局部弹框模式,以及模态与非模态的切换。 首先,"dialog"在Web开发中通常指的是一个可定制的窗口,它...

    Android Dialog与软键盘的正确打开方式

    在Android开发中,Dialog是一种常见的用户交互界面,用于显示临时信息或者进行简单的用户操作。而软键盘的管理和显示则是移动应用用户体验的关键因素之一。本文将深入探讨如何在Android中正确处理Dialog与软键盘的...

    android自定义Dialog弹框和背景阴影显示效果

    Android 自定义 Dialog 弹框和背景阴影显示效果 Android 自定义 Dialog 弹框和背景阴影显示效果是 Android 开发中非常重要的一部分。 Dialog 弹框可以用来提示用户一些重要的信息或让用户选择某些选项,而背景阴影...

    android Dialog效果集合【全】

    在这个“android Dialog效果集合【全】”中,我们很可能会找到各种定制化`Dialog`的示例和实现方法。 `FlycoDialog_Master-master`这个压缩包可能包含了由Flyco开发的一系列`Dialog`效果的源码库。开发者通常会创建...

    android 磨砂透明效果的dialog

    在Android开发中,实现磨砂透明效果的Dialog是一种常见的需求,它可以为用户界面增添美观且交互性强的元素。本文将详细讲解如何通过自定义Dialog来实现这种效果,并且确保当用户点击Dialog之外的区域时,Dialog能够...

    Android dialog的显示位置、弹出效果、返回键控制、外部点击事件控制功能点集合

    本篇文章将详细探讨如何实现Android Dialog的显示位置控制、弹出效果定制、返回键处理以及外部点击事件的管理。 首先,让我们关注Dialog的显示位置。在Android中,Dialog通常会居中显示,但有时我们可能需要自定义...

    [demo]仿IOS底部弹框效果及Android各类对话框和弹框效果

    此【demo】项目专注于模仿iOS系统的底部弹框效果,并结合了Android平台上的各种对话框和弹框实现,为开发者提供了一种跨平台的UI设计参考。 1. **iOS 弹框效果的实现** iOS 底部弹框通常被称为Action Sheet,它以...

Global site tag (gtag.js) - Google Analytics