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

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

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

              

点击title前                                                    点击title后

实现方式:

首先我们要自定义一个dialog

代码如下:

[java] view plaincopy

  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中调用即可:

代码片段:

[java] view plaincopy

  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图片,这个图片会自动根据需要伸展,(重要的是不失真,这点很棒吧,详细介绍请点击连接).

源码下载

时间: 2024-10-05 06:53:46

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

Java 模拟新浪登录 2016

想学习一下网络爬虫.涉及到模拟登录,查阅了一番资料以后发现大部分都有点过时了,就使用前辈们给的经验,Firefox抓包调试,採用httpclient模拟了一下新浪登录. 不正确之处多多包括.须要的能够用浏览器调试看看还有哪些须要改动的,改改就能够了. 新浪登录认证流程: 1.预登陆获取pubkey/nonce/rsak等用于加密用户信息(get). 返回json 2.login.php?client=ssologin对用户账号进行加密username採用base64加密,password採用rs

新浪短链接/腾讯短链接的API接口分享(含调用代码)

最新好多朋友需要使用腾讯/新浪的官方短连接api接口,但是自己无法获取,或者说现有的API接口不支持现在的高频率调用,今天我就分享几个新浪/腾讯短域名的API接口给大家使用! 短链接他的目的就是将冗长的链接,缩短为一个简短的链接. 废话不多说现在就把我这边整理的今一些常用的短链接api接口供大家使用. 腾讯短网址API接口(Url.cn): http://www.sinadwz.cn/url/dwz.php?url_long=http://www.sinadwz.cn 新浪短网址API接口(T.

灭蚊灯广告能不能在新浪新闻平台上做广告推广呢

新浪扶翼广告,作为新浪门户网推出的一款效果化营销推广平台.通过新浪网,深度垂直的大数据用户访问行为,进行精准化的投放筛选以及丰富创意的广告素材投放. 新浪扶翼广告同时具有双屏信息流展示广告.PC端巨型横幅.左右侧原生态页面广告展示.移动端新浪门户网新闻信息流展示.真正跨屏.跨终端. 新浪扶翼广告怎样做到效果化展示投放: 基于新浪平台用户的深度访问行为,进行统计分析,从年龄,性别,地域,关键字,兴趣爱好,门户频道,投放时间等细分筛选.对投放的受众用户进行预判.通过上海火速(新浪代理服务商)的策划客

用Selenium抓取新浪天气

(1)用Selenium抓取新浪天气 系统环境: 操作系统:macOS 10.13.6 python :2.7.10 用虚拟环境实现 一.创建虚拟环境: mkvirtualenv --python=/usr/bin/python python_2 二.激活虚拟环境: workon python_2 三.安装Selenium pip install Selenium 四.安装firefox的Selenium补丁文件: brew install geckodriver 五.在~/.bash_prof

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

做了个Android项目,需要接入新浪微博,实现时也顺带着研究了下腾讯微博和人人网的Android客户端接入,本文就跟大家分享下三者的Android客户端接入方法. 一.实例概述 说白了,接入微博就是让你的应用程序可以调用新浪微博,腾讯微博和人人网的api,实现微博发送,分享给好友等等的功能啦.当然也可以实现让你的客户端使用微博账号进行登录.我们这篇文章要讲的就是访问这些社交平台提供的api的时候比较关键的一步,获取调用api接口的token,token可以理解为我们的客户端程序与社交平台api

大公司都有哪些开源项目~~~阿里,百度,腾讯,360,新浪,网易,小米等

红色字体是现阶段比较火的 ---------------------------------------------------------------------------------------------------------------- 奇虎360 https://github.com/Qihoo360 1.MySQL中间层 Atlas Atlas是由 Qihoo 360,  Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQ

阿里,百度,腾讯,360,新浪,网易,小米等开源项目

奇虎360 https://github.com/Qihoo360 1.MySQL中间层 Atlas Atlas是由 Qihoo 360,  Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性.目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条. 主要功能:* 读写分离* 从库负载均衡* IP过滤*

爬虫实例(三):模拟登陆新浪

1.在模拟登陆的过程中第一步需要得到登陆前信息,用户名和密码通过js预先加密,所以必须要先将js预先加密的servertime和nonce和pubkey得到,下面json模块和re得到预先加密的信息 1 #---coding:utf-8--- 2 import urllib2 3 import re 4 import json 5 def get_servertime(): 6 url="http://login.sina.com.cn/sso/prelogin.php?entry=weibo&

腾讯、网易、新浪新闻网站爬虫编写记录及评论格式分析

0 前言 先说说看这篇博客你能知道什么:1 腾讯.网易.新浪不同新闻的地址格式以及评论内容的地址格式(返回数据为json的异步接口):2 一些比较通用的设计方法,对软件设计的菜鸟可能有帮助: 之前也说了要写这边博客,现在终于写出来了.我的毕业设计的指导老师说毕设论文的字数不够--所以我决定把这些本不应该出现在论文中的实现细节凑到论文中.至于下面说到的东西要解决什么问题,各位可以先看看这个网站(我毕设的初步结果,目前还在优化中,包括代码结构还有UI设计):http://reetseenews.du