当前位置:首页 > > 充电吧
[导读]大家好,我们这一节讲的是Android PopupWindow的使用! 在我理解其实PopupWindow其实类似于一个不能动的Widget(仅从显示效果来说!)它是浮在别的窗口之上的.下面我将给大家

大家好,我们这一节讲的是Android PopupWindow的使用! 在我理解其实PopupWindow其实类似于一个不能动的Widget(仅从显示效果来说!)

它是浮在别的窗口之上的.

下面我将给大家做一个简单的Demo,类似于音乐播放器的Widget的效果,点击Button的时候出来PopupWindow,首先我们看一下效果图:


下面是核心代码:


[java] view plaincopy package com.android.tutor;   import android.app.Activity;   import android.content.Context;   import android.os.Bundle;   import android.view.Gravity;   import android.view.LayoutInflater;   import android.view.View;   import android.view.View.OnClickListener;   import android.view.ViewGroup.LayoutParams;   import android.widget.Button;   import android.widget.PopupWindow;   public class PopupWindowDemo extends Activity  implements OnClickListener{       private Button btn;              public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.main);                      btn = (Button)findViewById(R.id.btn);           btn.setOnClickListener(this);       }       @Override      public void onClick(View v) {           Context mContext = PopupWindowDemo.this;           if (v.getId() == R.id.btn) {               LayoutInflater mLayoutInflater = (LayoutInflater) mContext                       .getSystemService(LAYOUT_INFLATER_SERVICE);               View music_popunwindwow = mLayoutInflater.inflate(                       R.layout.music_popwindow, null);               PopupWindow mPopupWindow = new PopupWindow(music_popunwindwow, LayoutParams.FILL_PARENT,                       LayoutParams.WRAP_CONTENT);                              mPopupWindow.showAtLocation(findViewById(R.id.main), Gravity.RIGHT|Gravity.BOTTOM, 0, 0);           }       }   }      


需要强调的是这里PopupWindow必须有某个事件触发才会显示出来,不然总会抱错,不信大家可以试试!

随着这个问题的出现,就会同学问了,那么我想初始化让PopupWindow显示出来,那怎么办了,不去寄托于其他点击事件,

在这里我用了定时器Timer来实现这样的效果,当然这里就要用到Handler了,如果大家不理解的可以返回


[c-sharp] view plaincopy Android 高手进阶教程(九)之----Android Handler的使用!! 看一看,加深了解:    


下面是核心代码:


[java] view plaincopy package com.android.tutor;   import java.util.Timer;   import java.util.TimerTask;   import android.app.Activity;   import android.content.Context;   import android.os.Bundle;   import android.os.Handler;   import android.os.Message;   import android.view.Gravity;   import android.view.LayoutInflater;   import android.view.View;   import android.view.ViewGroup.LayoutParams;   import android.widget.PopupWindow;   public class PopupWindowDemo extends Activity{       private Handler mHandler = new Handler(){                      public void handleMessage(Message msg) {               switch (msg.what) {               case 1:                   showPopupWindow();                   break;               }           };       };              public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.main);                      //create the timer            Timer timer = new Timer();           timer.schedule(new initPopupWindow(), 100);       }              private class initPopupWindow extends TimerTask{           @Override          public void run() {                              Message message = new Message();               message.what = 1;               mHandler.sendMessage(message);                          }              }                     public void showPopupWindow() {           Context mContext = PopupWindowDemo.this;           LayoutInflater mLayoutInflater = (LayoutInflater) mContext                   .getSystemService(LAYOUT_INFLATER_SERVICE);           View music_popunwindwow = mLayoutInflater.inflate(                   R.layout.music_popwindow, null);           PopupWindow mPopupWindow = new PopupWindow(music_popunwindwow,                   LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);           mPopupWindow.showAtLocation(findViewById(R.id.main), Gravity.CENTER, 0, 0);       }   }      


效果如下图: 


这样就可以初始化PopupWindow了,呵呵,这一节的布局文件有点多,如果大家想要源码的话,留下你们的Email,我会尽快发送给大家的,今天就到这里,大家有什么不明白的欢迎留言!!!谢谢~

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

由于开关电源的开关特性,容易使得开关电源产生极大的电磁兼容方面的干扰,作为一个电源工程师、电磁兼容工程师,或则一个 PCB layout 工程师必须了解电磁兼容问题的原因已经解决措施,特别是 layout 工程师,需要了...

关键字: PCB layout 电磁兼容

PCB( Printed Circuit Board),中文名称为印制电路板,又称印刷线路板,是重要的电子部件,是电子元器件的支撑体,是电子元器件电气连接的载体。由于它是采用电子印刷术制作的,故被称为“印刷”电路板。

关键字: PCB layout

这里主要介绍PCB设计layout时应该注意的12种事项。

关键字: layout PCB pcb设计

你真滴PCB电路板设计常用软件有哪些吗?说到电路板设计,不仅要掌握设计技巧还要懂得利用合适的软件能简化工作量,本文我们一起深入了解下那些PCB设计软件。PCB layout是印刷电路板。印刷电路板同时也叫印制电路板,是一...

关键字: layout PCB 电路板

你知道PCB layout时需要注意的那些事儿吗?PCB工程师的岗位上有许多技术上的事情,比如设计PCB板子、以及板子是用那种类型的,还有各种器件的筛选等等细节的环节,本文就关于PCB layout过程中需要考虑的细节进...

关键字: EDA layout PCB

什么是ESD?它有什么注意事项?ESD,字面意思就是静电释放。简单解释的说法,静电是一种自然现象,通常通过接触、摩擦、电器间感应等方式产生,其特点是长时间积聚、高电压(可以产生几千伏甚至上万伏的静电)、低电量、小电流和作...

关键字: esd layout PCB 防范

在Android里要实现树形菜单,都是用ExpandableList(也有高手自己继承ListView或者LinearLayout来做),但是ExpandableList一般只能实现2级树形菜单...

关键字: Android layout 树形菜单

印制电路板的制作所有开关电源设计的非常重要的一步就是印制电路板(PCB)的线路设计。如果这部分设计不当,PCB也会使电源工作不稳定,发射出过量的电磁干扰(EMI)。设计者的作用就是在理解电路工作过程的

关键字: layout 开关电源

第一步:新建项目咳咳,这个就不多说了,我这里用的是API级别是google APIs:14第二部:视图层开发我们这里直接修改main.xml文件,里面主要放上一个GridView控件。其中androi

关键字: Android gridview layout

在普通印制的布线中由于信号是低速信号,所以在3W原则的基本布线规则下按照信号的流向将其连接起来,一般都不会出现问题。但是如果信号是100M以上的速度时,布线就很有讲究了。由于最近布过速度高达300M的DDR信号,所

关键字: ddr layout PCB 规则
关闭