最近在看以前在eoe上收藏的一些源代码,准备将这些代码加上一些自己的注释,然后贴出来,方便自己日后查阅,和刚入门的人来学习。

今天先看一个气泡窗口,先看一下效果图和目录结构,然后再上代码

通过第一幅图,我们可以看到一个气泡窗口,这个窗口的结构是里面有2个TextView和1个气泡的背景,这个2个TextView放在了overlay_pop.xml文件中,气泡窗口是这个layout的背景,overlay_pop.xml的代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:background="@drawable/pub_pop_bg4"
  4. android:paddingLeft="10dp"
  5. android:paddingRight="10dp"
  6. android:layout_width="wrap_content"
  7. android:layout_height="wrap_content" >
  8. <TextView android:id="@+id/bubble_text"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:textSize="18dp"
  12. android:textColor="#000" />
  13. <!-- 我知道了 -->
  14. <TextView android:id="@+id/bubble_btn"
  15. android:gravity="right"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content"
  18. android:layout_below="@id/bubble_text"
  19. android:textSize="20dp"
  20. android:textColorHighlight="#2151E0"
  21. android:text=""
  22. android:textColor="#1A75B9" />
  23. </RelativeLayout>
  24. 这是实现功能的全部代码:
  25. public class TestBubbleActivity extends Activity {
  26. /** 全局屏幕的高和宽 */
  27. private static int SCREEN_WIDTH = 0 ;
  28. private static int SCREEN_HEIGHT = 0;
  29. /**气泡显示的详细内容*/
  30. private TextView tvBubContent = null;
  31. /**显示 我知道了 的提示*/
  32. private TextView tvKnow = null;
  33. /**气泡view 里面包含2个TextView*/
  34. private View bubbleView = null;
  35. /**气泡dialog*/
  36. private Dialog bubbleAlert = null;
  37. public void onCreate(Bundle savedInstanceState) {
  38. super.onCreate(savedInstanceState);
  39. setContentView(R.layout.main);
  40. getDimension();
  41. bubbleView = getLayoutInflater().inflate(R.layout.overlay_pop, null);
  42. tvKnow = (TextView)bubbleView.findViewById(R.id.bubble_btn);
  43. tvKnow.setText(Html.fromHtml("<u>"+"我知道了"+"</u>"));
  44. tvBubContent = (TextView)bubbleView.findViewById(R.id.bubble_text);
  45. tvBubContent.setText("上次程序异常退出,正在传输历史数据...");
  46. tvKnow.setOnClickListener(new View.OnClickListener(){
  47. @Override
  48. public void onClick(View v) {
  49. bubbleAlert.cancel();
  50. }
  51. });
  52. int tmpWidth = SCREEN_WIDTH/5*3;
  53. int tmpHeight =SCREEN_HEIGHT/8;
  54. //设置TextView宽度
  55. tvKnow.setMinWidth(tmpWidth);
  56. tvBubContent.setMaxWidth(tmpWidth);
  57. //以指定的样式初始化dialog
  58. bubbleAlert = new Dialog(this,R.style.bubble_dialog);
  59. Window win = bubbleAlert.getWindow();//获取所在window
  60. LayoutParams params = win.getAttributes();//获取LayoutParams
  61. params.x = -(SCREEN_WIDTH/8);//设置x坐标
  62. params.y = -tmpHeight;//设置y坐标
  63. params.width = tmpWidth;
  64. win.setAttributes(params);//设置生效
  65. bubbleAlert.setCancelable(false);
  66. bubbleAlert.setContentView(bubbleView);
  67. bubbleAlert.show();
  68. }
  69. /**
  70. * 获取屏幕尺寸
  71. */
  72. private void getDimension(){
  73. /** 获取屏幕的宽和高 */
  74. DisplayMetrics dm = new DisplayMetrics();
  75. getWindowManager().getDefaultDisplay().getMetrics(dm);
  76. SCREEN_WIDTH = dm.widthPixels;
  77. SCREEN_HEIGHT = dm.heightPixels;
  78. }
  79. }

[转]Android_气泡效果的更多相关文章

  1. 不用图片,纯Css3实现超酷的类似iphone的玻璃气泡效果

    最近在一个私活做手机项目时候,需要实现一个类似ios 6中短信那样的气泡效果. 这里分享下实现心得,希望能给大家一点启发. 首先分析下iphone的气泡效果有一下特点 1. 四面圆角 2. 界面上向下 ...

  2. HTML5实现微信聊天气泡效果

    最近做一个HybridApp,前端有一个群聊的功能,于是就想模仿微信的聊天界面,先看效果图: HTML代码: <!DOCTYPE html> <html lang="en& ...

  3. canvas实现酷炫气泡效果

    canvas实现动画主要是靠设置定时器(setinterval())和定时清除画布里的元素实现,canvas动画上手很简单,今天可以自己动手来实现一个酷炫气泡效果. 气泡炸裂效果(类似水面波纹) 代码 ...

  4. Android超简单气泡效果

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680最近有用到水下气泡上升效果,因此在网上查了一下资料,结果还真找到了 ...

  5. Android实现三角形气泡效果方式汇总

    在开发过程中,我们可能会经常遇到这样的需求样式: 这张图是截取京东消息通知的弹出框,我们可以看到右上方有个三角形的气泡效果,这只是其中一种,三角形的方向还可以是上.下.左.右. 通过截图可以发现,气泡 ...

  6. CSS3实现气泡效果

    首先定义一个 <p class="speech"></p> 先给外层的容器添加样式: p.speech { position: relative; widt ...

  7. CSS3效果:实现气泡效果

    首先定义一个 <p class="speech"></p> 先给外层的容器添加样式: p.speech { position: relative; widt ...

  8. css3实现气泡效果的聊天框

    因为CSS3尚未形成标准,所以现行的浏览器对于css3支持不太一致,某些特性需要加上浏览器前缀 css属性的浏览器前缀 前缀 渲染引擎 使用该引擎的浏览器 -khtml- KHTML Konquero ...

  9. css实现聊天气泡效果

      --------------------------------------- css功能强大,能实现很多炫 酷的效果,今天给大家分享 用css3绘制聊天气泡的方法: -------------- ...

随机推荐

  1. fzu 2171 防守阵地 II

    Problem 2171 防守阵地 II Accept: 31    Submit: 112Time Limit: 3000 mSec    Memory Limit : 32768 KB  Prob ...

  2. jquery easyui 弹出消息框

    <html> <head> <!-- 导入easyui插件的js和css样式; --> <link rel="stylesheet" ty ...

  3. 土豪聪要请客(stol)

    土豪聪要请客(stol) 众所周知,聪哥(ndsf)是个土豪,不过你们不知道的是他的MZ和他的RMB一样滴多…… 某天土豪聪又赚了10^10000e的RMB,他比较开心,于是准备请客.他在自己在XX星 ...

  4. JLINK使用教程详解,以及与JTAG区别

    对于一个新手来说,一切都不容易. 而从头学起也是一件非常美好的事. 观看     调试ARM,要遵循ARM的调试接口协议,JTAG就是其中的一种.当仿真时,IAR.KEIL.ADS等都有一个公共的调试 ...

  5. POJ 3320 Jessica's Reading Problem 尺取法

    Description Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The fina ...

  6. 用户名 不在 sudoers文件中,此事将被报告。(转)

    话说昨天新建了一个帐号linc,今天在执行sudo时回显一个很吓人的信息: [sudo] password for linc: linc 不在 sudoers 文件中.此事将被报告. 这是要去哪儿报告 ...

  7. SqlSever基础 datepart函数 返回这一秒已经过去了多少毫秒

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  8. (1)若当前字符不是大于0的数字字符,则复制该字符于新字符串中; (2)若当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中; (3)若当前字符是一个大于0的数字字符,并且还有后继字符,设该数字字符的面值为n,将它的后继字符重复复制n+1次到新字符串中; (4)以上述一次变换为一组,在不同组之间另插入一个"_"用于分割(5))若字符串中包含有下划线'_',则变换为 \UL

    package b; import java.util.Scanner; public class Zifuchuan { public static void main(String[] args) ...

  9. ①创建项目testpackage ②在pack2.B中添加方法f ③在类A中添加如下三个成员变量:int型的私有变量i float型的变量f double型的公有变量d 在pack1.B的main方法中为对象a的成员变量f和d分别赋值为2和3 在pack2.C的main方法中为对象a的成员变量d赋值为3

    package pack1; public class A { private int i; float f; public double d; public float getF() { retur ...

  10. nslookup基础用法

    简单介绍 简单介绍如下: 实例:查询163.com域名信息 D:>nslookup Default Server: ns-px.online.sh.cn Address: 202.96.209. ...