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

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

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

                            

                         点击title前                                                    点击title后

 实现方式:

     首先我们要自定义一个dialog

    代码如下:

    

[java] view
plain
copy

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

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

 代码片段:

 

[java] view
plain
copy

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

实现效果如下:

       
    

           点击前                                                点击后                                             选择                                                   选择后

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

 源码下载

时间: 2024-09-09 21:07:02

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

Java模拟新浪和腾讯自动登录并发送微博_java

Java模拟新浪和腾讯自动登录并发送微博功能分享给大家,供大家参考,具体内容如下 1.准备工作只是登录无需申请新浪和腾迅的开发者账号,如果需要发送微博功能,需要申请一个新浪和腾迅的开发者账号,并添加一个测试应用.  过程请参考官方帮助文档,申请地址:新浪:http://open.weibo.com    腾迅:http://dev.t.qq.com/  我们需要的是App Key和App Secre及redirect_URI,源代码中已经包含了我申请的测试key,但由于限制直接用我的key你们的

门户网站-新浪 腾讯 架构师往这看,请教个问题。

问题描述 新浪 腾讯 架构师往这看,请教个问题. 小弟现在要做个公司的门户网站,但是考虑的层面和纬度有点少,也不够深. 所以想问和大神交流下,不知道有没有机会. 我目前只能提出这几个问题,希望各位补充问题.同时补充问题的答案. 1.有没有什么 简洁大方的 欧美 主流模板 2.搜索引擎优化 3.内容可配置 4.什么架构 5.什么语言 解决方案 像你这种完全一窍不通而且也不打算去学的,不妨找个现成的cms系统.任何基本的 cms 都有你说的这些功能. 解决方案二: 最简单的方式,找个开源的改一改 门

WordPress给用户增加新浪腾讯微博等联系字段

WordPress给用户增加新浪腾讯微博等联系字段,下面代码是新增新浪微博,腾讯微博,iMessage 三种联系方式,你也可以修改或者增加你自己需要的字段.把下面的代码贴到当前主题的 functions.php 文件,保存之后就可以在后台 > 用户 > 我的个人资料中的联系信息中见到效果.  代码如下 复制代码 add_filter('user_contactmethods','my_user_contactmethods'); function my_user_contactmethods(

新浪腾讯终极对决的关键在哪?

所有的产品都要回归一个本源,存在的价值!很多产品会改变时代,比如微博.比如LBS服务,其影响正在或者将要渗透文化.教育.商业等各个方面,另一些产品可能不合法,甚至建立在损伤一部分人利益的基础上,但他本身有价值,比如文库,广受争议,而另一些产品没有存在的必要,比如嘀咕微领地之流,当然,还有此刻的微信. 一.微信错在哪里? Kik此前一度火热,引来名流大家一片喧嚣,直到微信华丽出场,所有的声音很快沉寂,那些声音之所以沉寂了,不是因为腾讯出手没其他人戏分了,而是腾讯出手之后被发现,原来,压根就没有市场

心疼网(新浪腾讯网易)横空出世 死磕着搜狐

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 几天就知道,新浪腾讯网易要联合对抗搜狐,刚才脱裤帅哥TOPKU发来gtalk,定名:心疼网,很有才.搜狐也被逼的,原本周四的访谈,周三就搞了.心疼网发布会完了后,搜狐把记者们又拉过去访.俺没去.哈哈 今天发布此消息后,论坛已经炸开了,鼎盛时期半屏这玩意的主题,后来合并成这个帖子.里面的讨论,还是比较有才的. 几个言论: 张朝阳昨天鄙视了这个联

用jquery中插件dialog实现弹框效果实例代码_jquery

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

Wordpress中将选中内容分享到新浪腾讯微博

1.引入jQuery,相信大多数WordPress博客都已经引入了jQuery,那就可以直接进行第二步了. 2.在页面底部,或者更确切的说,在引入jQuery库的后面加上这样一段JS,你就可以看到和本站一样的效果了. 选中即分享的功能看上去比较高级,其实实现是相当简单的.其中的会让人头大,一般人也不感兴趣的原理这里就直接跳过.这个js文字选中后分享到新浪微博的功能我简单的封装了下,方法名是:$sinaMiniBlogShare  代码如下 复制代码 var miniBlogShare = fun

ICANN公布新顶级域申请名单 新浪腾讯逐鹿.weibo

中介交易 SEO诊断 淘宝客 云主机 技术大厅 经过将近5个月的开放申请,互联网名称与数字地址分配机构(ICANN)于6月13日正式公布新顶级域申请名单.据统计,ICANN共收到1930份申请,其中美国884份,来自北美的申请为911个,欧洲为675个,亚太地区为303个,拉丁美洲和加勒比地区为24个,非洲为17个.详情请查看ICANN官网. 欧美是此次新顶级域名申请最多的区域,大量品牌企业和组织纷纷申请相关新顶级域名.作为互联网迅速崛起的中国,共申请域名85个,其中包括万网申请.xin,新华网

“宁夏共青团”官博正式上线新浪腾讯,利用新媒体开展青年工作

中广网银川3月2日消息(记者郑颖)"@宁夏共青团"官方微博昨天在新浪和腾讯正式上线,宁夏回族自治区团委利用新媒体开展青年工作. 针对微博对青少年影响日益广泛和深刻的新情况,微博也成为共青团联系服务和引导青少年的新途径新载体.适应这一新挑战,宁夏回族自治区团委首先开通"@宁夏共青团"和机关全体职工干部微博,全部进行认证. "@宁夏共青团"除了及时发布区内团务信息,还利用微博新媒体快速便捷多元聚集青年等特点,灵活有效开展工作.目前,已利用微博与宁夏电