Android中PopupWindow的简单操作和动画的操作
2016-08-10 23:53
351 查看
这里在ListView的条目中弹出popupWindow
跟着步骤一个一个来
这是在点击事件中处理的操作
另一个方法
mPW = new PopupWindow(parent , x, y);
xy可以设置为需要插入View的宽高
mPw.setFocusable(true);意思是设置可以获取焦点
mPW.setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));//设置背景色透明
mPW.setOutsideTouchable(true);//点击外部区域,自动隐藏
mPw.showAsDropDown(view , x ,y )
意思是在第一个参数及控件的下面显示,x y 表示偏移量
这里是在滑动事件中处理的操作
最后一步一定要注意
需要在活动销毁的时候也需要隐藏气泡,虽然不崩溃,但是log会显示错误,也是需要隐藏操作的
跟着步骤一个一个来
private PopupWindow mPw; private ListView mListView;
这是在点击事件中处理的操作
//这里是在ListView的点击事件中弹出气泡 `listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { //第二个参数view是单个条目的view,后面会使用到! @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) //第五步,在显示气泡前先判断一下旧的气泡是否存在,存在了就隐藏 if (mPw != null){ mPw.dismiss(); } //=null 为了显示下一次新的气泡做准备 mPw = null; //第一步,创建一个需要传入的布局,就是弹出popup的View View popupView = View.inflate(getApplicationContext(), R.layout.popup_window, null); //第二步,new 出有3个构造函数的对象,参数1:传入的布局 //参数23:布局显示的宽高 mPw = new PopupWindow(popupView , LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); //第六步!!!很重要!!! //因为popupwindow是没有背景的,所以这里需要设置一个背景,这里设置成透明颜色 mPw.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); //第三步,获取mListView中单个条目在屏幕显示的位置, //里面参数需要传入一个int[2]的数组,分别代表XY的坐标,即条目左上角的坐标 int[] location = new int[2]; view.getLocationInWindow(location); //得到坐标 int x = location[0]; int y = location[1]; //第四步,显示气泡 //参数1:需要挂载在哪一个控件上,parent = mListView //参数2:位置布局 参数34:代表 !!屏幕!! 的X轴和Y轴距离 mPw.showAtLocation(parent , Gravity.LEFT | Gravity.TOP , x+50 , y); //第五步显示气泡有动画效果,这里使用属性动画 //渐变,从半透明变成不透明 ObjectAnimator animator1 = ObjectAnimator.ofFloat(popupView, "alpha" , 0.4f, 1.0f ); //缩放,自身的中心 从小变大 ObjectAnimator animator2 = ObjectAnimator.ofFloat(popupView, "scaleX" , 0.1f, 1.0f ); ObjectAnimator animator3 = ObjectAnimator.ofFloat(popupView, "scaleY" , 0.1f, 1.0f ); //属性动画,使用AnimatorSet来执行 AnimatorSet set = new AnimatorSet(); //设置动画一起执行, 还是顺序执行 还是有选择的执行,这里选择一起执行 set.playTogether(animator1 , animator2,animator3); //设置动画执行时间和 开始动画的操作 set.setDuration(500).start(); //第六步很重要!!!在上面初始化popupwindow的时候需要设置!!
另一个方法
mPW = new PopupWindow(parent , x, y);
xy可以设置为需要插入View的宽高
mPw.setFocusable(true);意思是设置可以获取焦点
mPW.setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));//设置背景色透明
mPW.setOutsideTouchable(true);//点击外部区域,自动隐藏
mPw.showAsDropDown(view , x ,y )
意思是在第一个参数及控件的下面显示,x y 表示偏移量
这里是在滑动事件中处理的操作
mListView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } //滑动的时候调用 @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //滑动的时候也需要消失气泡 if (mPw != null){ mPw.dismiss(); } //=null 为了显示下一次新的气泡做准备 mPw = null; } }); }
最后一步一定要注意
需要在活动销毁的时候也需要隐藏气泡,虽然不崩溃,但是log会显示错误,也是需要隐藏操作的
@Override protected void onDestroy() { super.onDestroy(); //如果activitydestroy的时候也需要消失气泡 if (mPw != null){ mPw.dismiss(); } //=null 为了显示下一次新的气泡做准备 mPw = null; } }
相关文章推荐
- Android-自定义popupwindow详解(包含动画简单讲解)
- Android 属性动画实现一个简单的PopupWindow
- Android安卓用Dialog对话框简单并且完美实现popupWindow底部弹出效果,有动画效果
- 实现Android简单动画旋转案例
- 操作超简单的Android手机刷机工具
- android按钮的操作例子,简单大家看明白_基础篇
- [Android][UI]模拟器启动界面动画效果的简单实现
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 【android】动画效果研究(PopupWindow)【4】
- android popupwindow 动画 特效 案例
- android 动画简单介绍
- Android成长之路-实现简单动画
- 简单制作Android开机动画
- Android动画效果Animation之Tween实现简单动画
- 【android】动画效果研究(View/PopupWindow)【2】
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 【Android2D游戏开发十六】(上文之触摸屏手势)详解Android Gesture 手势操作!利用手势实现一个简单切换图片的功能!
- 简单制作Android开机动画
- 关于 android Tween动画 和 frame动画的简单学习