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

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

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


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

    <?xml version="1.0" encoding="UTF-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    	android:background="@drawable/pub_pop_bg4" 
    	android:paddingLeft="10dp"
    	android:paddingRight="10dp"
    	android:layout_width="wrap_content" 
    	android:layout_height="wrap_content" >
       
        <TextView android:id="@+id/bubble_text" 
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content"
           android:textSize="18dp"
           android:textColor="#000" />
           
        <!-- 我知道了 -->
        <TextView android:id="@+id/bubble_btn"
    	   android:gravity="right"
    	   android:layout_width="wrap_content"
    	   android:layout_height="wrap_content"
    	   android:layout_below="@id/bubble_text"
    	   android:textSize="20dp"
    	   android:textColorHighlight="#2151E0"
    	   android:text=""
    	   android:textColor="#1A75B9" />
           
    </RelativeLayout>
    
    这是实现功能的全部代码:
    public class TestBubbleActivity extends Activity {
    
    	/** 全局屏幕的高和宽 */
    	private static int SCREEN_WIDTH = 0 ;
    	private static int SCREEN_HEIGHT = 0;
    	
    	/**气泡显示的详细内容*/
    	private TextView tvBubContent = null;
        /**显示 我知道了 的提示*/
    	private TextView tvKnow = null;
    	
    	/**气泡view 里面包含2个TextView*/
        private View bubbleView = null;
        
        /**气泡dialog*/
        private Dialog bubbleAlert = null;
        
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            getDimension();
            
            bubbleView = getLayoutInflater().inflate(R.layout.overlay_pop, null);
            
    		tvKnow = (TextView)bubbleView.findViewById(R.id.bubble_btn);
    		tvKnow.setText(Html.fromHtml("<u>"+"我知道了"+"</u>"));
    		
    		tvBubContent = (TextView)bubbleView.findViewById(R.id.bubble_text);
    		tvBubContent.setText("上次程序异常退出,正在传输历史数据...");
    		
    		tvKnow.setOnClickListener(new View.OnClickListener(){
    			@Override
    			public void onClick(View v) {
    				bubbleAlert.cancel();
    			}
    			
    		});
    
    		int tmpWidth = SCREEN_WIDTH/5*3;
    		int tmpHeight =SCREEN_HEIGHT/8;
    		
    		//设置TextView宽度
    		tvKnow.setMinWidth(tmpWidth);
    		tvBubContent.setMaxWidth(tmpWidth);
    		
    		//以指定的样式初始化dialog
    		bubbleAlert = new Dialog(this,R.style.bubble_dialog);
            Window win = bubbleAlert.getWindow();//获取所在window
    		LayoutParams params = win.getAttributes();//获取LayoutParams
    		params.x = -(SCREEN_WIDTH/8);//设置x坐标
    		params.y = -tmpHeight;//设置y坐标
    		params.width = tmpWidth;
    		
    		win.setAttributes(params);//设置生效
    
    		bubbleAlert.setCancelable(false);
    		bubbleAlert.setContentView(bubbleView);
    		bubbleAlert.show();
        }
        
    	/**
    	 * 获取屏幕尺寸
    	 */
    	private void getDimension(){
    		/** 获取屏幕的宽和高 */
    		DisplayMetrics dm = new DisplayMetrics();
    		getWindowManager().getDefaultDisplay().getMetrics(dm);
    
    		SCREEN_WIDTH = dm.widthPixels;
    		SCREEN_HEIGHT = dm.heightPixels;
    	}
        
    }


  • 相关阅读:
    silverlight与CSLA的快速应用01序
    oracle常用的时间格式转换
    实现打印从数字1到5,非常规方法
    Java学习笔记之数据结构中的树
    Java探究心得之三元运算符
    Java学习心得之各种小算法
    深入Java核心 Java内存分配原理(转)
    java中继承与初始化顺序
    jsp 获取表单传过来的参数值含有中文字符
    转:父类私有变量是否被子类继承详细解说(答案:内存中存在,但sun公司定义为不继承)
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300613.html
Copyright © 2011-2022 走看看