http://blog.csdn.net/jj120522/article/details/7764183

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

              

点击title前                                                    点击title后

实现方式:

首先我们要自定义一个dialog

代码如下:

  1. /***
  2. * 自定义dialog
  3. *
  4. * @author jia
  5. *
  6. */
  7. public class MyDialog extends Dialog {
  8. private Window window = null;
  9. /***
  10. *
  11. * @param context
  12. * @param layoutResID
  13. *            配置文件
  14. * @param x
  15. *            显示的x坐标
  16. * @param y
  17. *            显示的y坐标
  18. * @param title
  19. *            集合
  20. */
  21. public MyDialog(final Context context, int layoutResID, int x, int y,
  22. final String[] title) {
  23. super(context, R.style.Transparent);
  24. window = this.getWindow();
  25. window.requestFeature(Window.FEATURE_NO_TITLE);
  26. setContentView(layoutResID);
  27. int width = this.getWindow().getWindowManager().getDefaultDisplay()
  28. .getWidth();
  29. windowDeploy(width / 2, 300, x, y);
  30. show();
  31. }
  32. /***
  33. * 设置窗口显示
  34. *
  35. * @param x
  36. * @param y
  37. * @param dialog_x
  38. * @param dialog_y
  39. */
  40. public void windowDeploy(int dialog_width, int dialog_height, int dialog_x,
  41. int dialog_y) {
  42. window.setBackgroundDrawableResource(android.R.color.transparent); // 设置对话框背景为透明
  43. WindowManager.LayoutParams wl = window.getAttributes();
  44. wl.width = dialog_width;
  45. wl.height = dialog_height;
  46. // wl.alpha = 0.8f;
  47. wl.gravity = Gravity.LEFT | Gravity.TOP; // 不设置的话默认是居中
  48. wl.x = dialog_x - dialog_width / 2; // 要显示的位置x坐标
  49. wl.y = dialog_y;
  50. window.setAttributes(wl);
  51. window.setWindowAnimations(R.style.dialogWindowAnim); // 设置窗口弹出动画
  52. setCanceledOnTouchOutside(true);
  53. }
  54. }

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

代码片段:

  1. textView.setOnClickListener(new OnClickListener() {
  2. @Override
  3. public void onClick(View v) {
  4. int x_begin = textView.getLeft();
  5. int x_end = textView.getRight();
  6. int y_begin = textView.getTop();
  7. int y_end = textView.getBottom();// 这个是要显示位置的纵坐标
  8. // 获取最中间的x坐标
  9. int x = (x_begin + x_end) / 2;// 这个值也就是屏幕最中间的值,也可以下面这样
  10. // int x=getWindowManager().getDefaultDisplay().getWidth()/2;
  11. // int[] location = new int[2];
  12. // textView.getLocationInWindow(location); // 获取在当前窗口内的绝对坐标
  13. // textView.getLocationOnScreen(location);// 获取在整个屏幕内的绝对坐标
  14. myDialog = new MyDialog(DialogDemoActivity.this,
  15. R.layout.dialog, x, y_end, title);
  16. View view = LayoutInflater.from(DialogDemoActivity.this)
  17. .inflate(R.layout.dialog, null);
  18. listView = (ListView) myDialog.getWindow().findViewById(
  19. R.id.lv_dialog);
  20. listView.setAdapter(new ArrayAdapter<String>(
  21. DialogDemoActivity.this, R.layout.text, R.id.tv_text,
  22. title));
  23. listView.setOnItemClickListener(new OnItemClickListener() {
  24. @Override
  25. public void onItemClick(AdapterView<?> arg0, View arg1,
  26. int arg2, long arg3) {
  27. textView.setText(title[arg2]);
  28. myDialog.cancel();
  29. myDialog = null;
  30. }
  31. });
  32. }
  33. });

实现效果如下:

           

点击前                                                点击后                                             选择                                                   选择后

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

源码下载

android dialog 模拟新浪、腾讯title弹框效果的更多相关文章

  1. popupwindow 模拟新浪、腾讯title弹框效果

    .jpg外部引用 原始文档 MainActivity.java外部引用 原始文档 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

  2. 整合 新浪 腾讯 人人 qq空间 分享地址

    function snsShare(snsId, title, content, image, url) { var snsUrl; // 新浪 腾讯 要申请appkey switch (snsId) ...

  3. android WebView将新浪天气为我所用 ------>仅供娱乐

    新浪天气提供了一个网页     http://w.sina.com 浏览器访问: 这效果还可以了哦,直接用webview加载出来,效果也可以了哦,不过,这不是我要的.我不希望在我写的应用里到处铺满si ...

  4. Java 模拟新浪登录 2016

    想学习一下网络爬虫.涉及到模拟登录,查阅了一番资料以后发现大部分都有点过时了,就使用前辈们给的经验,Firefox抓包调试,採用httpclient模拟了一下新浪登录. 不正确之处多多包括.须要的能够 ...

  5. jquery实现隐藏显示层动画效果、仿新浪字符动态输入、tab效果

    已经有两年多没登陆csdn账号了,中间做了些旁的事,可是现在却还是回归程序,但改做前端了,虽然很多东西都已忘得差不多了,但还是应该摆正心态,慢慢来,在前端漫游,做一只快乐双鱼. 路是一步一步走出来的, ...

  6. 【多端应用开发系列1.1.1 —— Android:使用新浪API V2】服务器Json数据处理——Json数据概述

    [前白] 一些基础的东西本系列中就不再详述了,争取尽量写些必不可少的技术要点. 由于本系列把Web Service 构建放到了第二部分,Android项目就采用新浪微博API v2作为服务器端. [原 ...

  7. 类似新浪 腾讯微博字数统计 控制js(区分中英文 符号)

    <script> ; function Q(s) { return document.getElementById(s); } function checkWord(c) { len = ...

  8. HBuilder webApp开发(七)微信/QQ/新浪/腾讯微博分享

    链接 https://blog.csdn.net/zhuming3834/article/details/51706256

  9. 接入新浪、腾讯微博和人人网的Android客户端实例 接入新浪、腾讯微博和人人网的Android客户端实例

    做了个Android项目,需要接入新浪微博,实现时也顺带着研究了下腾讯微博和人人网的Android客户端接入,本文就跟大家分享下三者的Android客户端接入方法. 一.实例概述 说白了,接入微博就是 ...

随机推荐

  1. AngularJS开发指南1:AngularJS简介

    什么是 AngularJS? AngularJS 是一个为动态WEB应用设计的结构框架.它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚.简洁地构建你的应用组件.它的创新点在于, ...

  2. Ubuntu下vim的配置

    由于刚开始学习Linux,对佷多操作还不熟悉,遇到了一些困难,在这里记录一下. 1  安装vim.俺我现在的理解,vim有控制台版本和GUI版本.控制台版本貌似是Ubuntu自带的,可以在终端输入 v ...

  3. WampServer集成环境安装与配置

    实习到了第三个礼拜了,原来我们小组是以开发php为主的,我们项目的服务器也是用php做的,因此我觉得很有必要学一下php的相关知识,首先当然是搭建环境了,写篇博客分享下经验. 目录: 一.软件下载 二 ...

  4. C语言中memset(void *s, char ch,unsigned n)用的用法

    将指针s所指的内存空间中前n为重置为字符c 程序例: #include <string.h> #include <stdio.h> #include <memory.h& ...

  5. nginx 日志怎么实现显示真实客户端IP

    这篇文章页不错: http://www.tuicool.com/articles/E32mYf 假如说我们现在的架构是,nginx做反向代理,apache做web服务器.那么我们怎么让我的web服务器 ...

  6. MVC学习Day02之校验

    MVC校验有两种方法: 方法一:自己动手写js---------略 方法二: l在View的页面中,首先指定页面强类型@model 类型 l使用Html.***For(model=>model. ...

  7. Http状态码集合

    忘了之前在哪里收集的了,先表示感谢. 状态码 含义 100 客户端应当继续发送请求.这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝.客户端应当继续发送请求的剩余部分,或者如果请 ...

  8. 【CodeForces 312B】BUPT 2015 newbie practice #3A Archer

    题 SmallR is an archer. SmallR is taking a match of archer with Zanoes. They try to shoot in the targ ...

  9. 内部类访问局部变量的时候,为什么变量必须加上final修饰

    这里的局部变量就是在类方法中的变量,能访问方法中变量的类当然也是局部内部类了.我们都知道,局部变量在所处的函数执行完之后就释放了,但是内部类对象如果还有引用指向的话它是还存在的.例如下面的代码: cl ...

  10. DEDECMS全版本gotopage变量XSS ROOTKIT 0DAY

    影响版本: DEDECMS全版本 漏洞描叙: DEDECMS后台登陆模板中的gotopage变量未效验传入数据,导致XSS漏洞. \dede\templets\login.htm 65行左右 < ...