在Android中使用PopupWindow并不复杂,先看效果图,我们要点击按钮后让PopupWindow弹出来,PopupWindow中是一个ListView,效果图如下:


下面是代码:

package com.example.testpopupwindow;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.graphics.drawable.PaintDrawable;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.PopupWindow;public class MainActivity extends Activity {private PopupWindow popWin;private List<String> strs = new ArrayList<String>();    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                //为ListView添加数据        for(int i =0; i < 10; i++){        strs.add("item " + i);        }                popWin = new PopupWindow(this);        //获取popWin要显示的布局View contentView = LayoutInflater.from(this).inflate(R.layout.pop_win_layout, null);ListView listView = (ListView) contentView.findViewById(R.id.pop_win_listview);listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strs));//为popWin设置布局popWin.setContentView(contentView);//不指定popWin的大小就无法显示popWinpopWin.setWidth(300);popWin.setHeight(500);//加上下面三句就可以在popWin外点击让popWin消失,同时popWin内也可以获取焦点popWin.setFocusable(true);popWin.setOutsideTouchable(true);popWin.setBackgroundDrawable(new PaintDrawable());//指定popWin显示和消失的动画popWin.setAnimationStyle(R.style.PopWinAnimation);    }        //点击按钮显示PopupWindow    public void btnOnClick(View view){    //显示popWin,在按钮的正下方    popWin.showAtLocation(view, Gravity.CENTER, 0, 10);    }}
在上面的代码中,onCreate方法里创建了PopupWindow,并指定了它的布局和大小,最后还为PopupWindow指定了显示和消失的动画,这里使用的是平移动画,要使用动画,我们先要在res/anim文件夹(没有的话新建一个文件夹)下创建动画的xml文件,下面是PopupWindow的动画文件:

这是pop_show.xml :

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:fromXDelta="500"        android:toXDelta="0"        android:fromYDelta="0"        android:toYDelta="0"        android:duration="500"        />    </set>
这个是pop_hide.xml :

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:fromXDelta="0"        android:toXDelta="500"        android:fromYDelta="0"        android:toYDelta="0"        android:duration="500"        /></set>
定义好动画文件之后,我们还需要在res/values/styles.xml文件中添加一个style,代码如下:

<resources xmlns:android="http://schemas.android.com/apk/res/android">    <style name="AppTheme" parent="android:Theme.Light" />    <style name="PopWinAnimation">        <item name="android:windowEnterAnimation">@anim/pop_show</item>        <item name="android:windowExitAnimation">@anim/pop_hide</item>    </style></resources>
其中的PopWinAnimation就是我们指定的窗口进入和退出的动画,然后在Java代码中,为PopupWindow添加动画效果的代码就是:

popWin.setAnimationStyle(R.style.PopWinAnimation);
源码下载点击这里






更多相关文章

  1. [RK3399] [Android(安卓)9.0] 调试2560x1440分辨率EDP显示屏,和碰
  2. 【Android开发小记--6】动画--属性动画以及Fragment切换动画(3D)
  3. android adb常用命令整理
  4. Android全屏显示 无标题栏、全屏、设置为横屏
  5. [Android]设置Activity为全屏显示的两种方法
  6. Android(安卓)Activity界面切换添加动画特效
  7. Android常用动画alpha和rotate同时使用
  8. Android(java)学习笔记129:Tab标签的使用
  9. Android游戏开发学习(1)--android设置全屏和横屏

随机推荐

  1. 最新百度地图android sdk自定义覆盖物
  2. 解决Android报错Dex file with version 3
  3. Android 代码实现按钮 按下弹起事件
  4. android studio 导入volley
  5. Android中获得当前日期时间
  6. 按键,触摸屏流程分析
  7. Android利用soap WSDL与Webservice通信
  8. android 获取状态栏高度
  9. 在Android中调用图片、视频、音频、录音
  10. Android Retrofit2.0 上传单张图片和多张