Android(安卓)PopupWindow的使用
16lz
2021-12-04
在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);源码下载点击这里
更多相关文章
- [RK3399] [Android(安卓)9.0] 调试2560x1440分辨率EDP显示屏,和碰
- 【Android开发小记--6】动画--属性动画以及Fragment切换动画(3D)
- android adb常用命令整理
- Android全屏显示 无标题栏、全屏、设置为横屏
- [Android]设置Activity为全屏显示的两种方法
- Android(安卓)Activity界面切换添加动画特效
- Android常用动画alpha和rotate同时使用
- Android(java)学习笔记129:Tab标签的使用
- Android游戏开发学习(1)--android设置全屏和横屏