zoukankan      html  css  js  c++  java
  • [转]Android_气泡效果

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

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

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

    [java] view plaincopy
     
    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.      
    9.     <TextView android:id="@+id/bubble_text"   
    10.        android:layout_width="wrap_content"   
    11.        android:layout_height="wrap_content"  
    12.        android:textSize="18dp"  
    13.        android:textColor="#000" />  
    14.          
    15.     <!-- 我知道了 -->  
    16.     <TextView android:id="@+id/bubble_btn"  
    17.        android:gravity="right"  
    18.        android:layout_width="wrap_content"  
    19.        android:layout_height="wrap_content"  
    20.        android:layout_below="@id/bubble_text"  
    21.        android:textSize="20dp"  
    22.        android:textColorHighlight="#2151E0"  
    23.        android:text=""  
    24.        android:textColor="#1A75B9" />  
    25.          
    26. </RelativeLayout>  
    27.   
    28. 这是实现功能的全部代码:  
    29. public class TestBubbleActivity extends Activity {  
    30.   
    31.     /** 全局屏幕的高和宽 */  
    32.     private static int SCREEN_WIDTH = 0 ;  
    33.     private static int SCREEN_HEIGHT = 0;  
    34.       
    35.     /**气泡显示的详细内容*/  
    36.     private TextView tvBubContent = null;  
    37.     /**显示 我知道了 的提示*/  
    38.     private TextView tvKnow = null;  
    39.       
    40.     /**气泡view 里面包含2个TextView*/  
    41.     private View bubbleView = null;  
    42.       
    43.     /**气泡dialog*/  
    44.     private Dialog bubbleAlert = null;  
    45.       
    46.     public void onCreate(Bundle savedInstanceState) {  
    47.         super.onCreate(savedInstanceState);  
    48.         setContentView(R.layout.main);  
    49.           
    50.         getDimension();  
    51.           
    52.         bubbleView = getLayoutInflater().inflate(R.layout.overlay_pop, null);  
    53.           
    54.         tvKnow = (TextView)bubbleView.findViewById(R.id.bubble_btn);  
    55.         tvKnow.setText(Html.fromHtml("<u>"+"我知道了"+"</u>"));  
    56.           
    57.         tvBubContent = (TextView)bubbleView.findViewById(R.id.bubble_text);  
    58.         tvBubContent.setText("上次程序异常退出,正在传输历史数据...");  
    59.           
    60.         tvKnow.setOnClickListener(new View.OnClickListener(){  
    61.             @Override  
    62.             public void onClick(View v) {  
    63.                 bubbleAlert.cancel();  
    64.             }  
    65.               
    66.         });  
    67.   
    68.         int tmpWidth = SCREEN_WIDTH/5*3;  
    69.         int tmpHeight =SCREEN_HEIGHT/8;  
    70.           
    71.         //设置TextView宽度  
    72.         tvKnow.setMinWidth(tmpWidth);  
    73.         tvBubContent.setMaxWidth(tmpWidth);  
    74.           
    75.         //以指定的样式初始化dialog  
    76.         bubbleAlert = new Dialog(this,R.style.bubble_dialog);  
    77.         Window win = bubbleAlert.getWindow();//获取所在window  
    78.         LayoutParams params = win.getAttributes();//获取LayoutParams  
    79.         params.x = -(SCREEN_WIDTH/8);//设置x坐标  
    80.         params.y = -tmpHeight;//设置y坐标  
    81.         params.width = tmpWidth;  
    82.           
    83.         win.setAttributes(params);//设置生效  
    84.   
    85.         bubbleAlert.setCancelable(false);  
    86.         bubbleAlert.setContentView(bubbleView);  
    87.         bubbleAlert.show();  
    88.     }  
    89.       
    90.     /** 
    91.      * 获取屏幕尺寸 
    92.      */  
    93.     private void getDimension(){  
    94.         /** 获取屏幕的宽和高 */  
    95.         DisplayMetrics dm = new DisplayMetrics();  
    96.         getWindowManager().getDefaultDisplay().getMetrics(dm);  
    97.   
    98.         SCREEN_WIDTH = dm.widthPixels;  
    99.         SCREEN_HEIGHT = dm.heightPixels;  
    100.     }  
    101.       
    102. }  
  • 相关阅读:
    02.两数相加
    1480. 一维数组的动态和
    01. 两数之和
    67.二进制求和
    文献阅读(QoS-Aware Web Service Recommendation by Collaborative Filtering)
    服务计算---课程总结报告
    125. 验证回文串
    Docker 常用命令
    Docker 安装
    RESTful
  • 原文地址:https://www.cnblogs.com/qianyukun/p/4877182.html
Copyright © 2011-2022 走看看