popupwindow 动画效果

最好的学习 android 某一个 widget 的方法 就是 自己找代码 不管懂不懂,敲出来 ,然后在机子上 看到 效果 ,最后 去理解 每行代码的意思。

上述话是个人观点。哈哈

 

经常 见 这样的情况吧:点击退出,然后屏幕中央出现一个弹出框 ,你是否退出?  确定     取消,

我想实现这样的效果,点击确定后  ,从屏幕的两侧飞出确定 和取消按钮 一直 落在屏幕中央 渐渐出现的 board (不知怎么称呼他,就叫 board 吧)上。话说的有点乱,但就是这么个意思。

点击 确定按钮后  ,两个按钮飞走,board 消失 。

说一下 :我这里涉及到的知识有 popupwindow 的使用(包括创建 ,设置样式 等),animation 等

 

两个按钮属于 一个 布局文件 pop.xml,待会popupwindow 用的布局文件就是它

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	    android:layout_width="200dip"
	    android:layout_height="100dip"
	    android:orientation="horizontal" 
	    android:background="@android:color/white"
	    android:layout_centerInParent="true"
	    android:id="@+id/linearLayout_container"
	    android:gravity="center"
        >
	    <Button
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="yes" 
	        android:id="@+id/button_yes"
	        />
	    <Button
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:text="no" 
	        android:id="@+id/button_no"
	        />
</LinearLayout>

 

下面是popupwindow 的产生:

	LayoutInflater mLayoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
    	View menuView = (View)mLayoutInflater.inflate(R.layout.pop, null, true);//弹出窗口包含的视图
    	b = (Button) menuView.findViewById(R.id.button_yes);
    	c = (Button) menuView.findViewById(R.id.button_no);
    	l = (LinearLayout) menuView.findViewById(R.id.linearLayout_container);
         p = new PopupWindow(menuView, 300,200, true);//创建弹出窗口,指定大小   
         popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.btn_style_alert_dialog_background));//设置弹出窗口的背景
    	p.setAnimationStyle(R.style.mypopwindow_anim_style);//设置窗口显示的动画效果
    	p.showAtLocation(findViewById(R.id.root), Gravity.CENTER, 0, 0);//设置窗口显示的位置
    	handler.sendEmptyMessage(100);
    	p.update();


其中 p.setAnimationStyle(R.style.mypopwindow_anim_style);//设置窗口显示的动画效果

style 文件 如下

 <style name="mypopwindow_anim_style">
  <item name="android:windowEnterAnimation">@anim/popshow_anim</item>        <!-- 指定显示的动画xml  -->
   <item name="android:windowExitAnimation">@anim/pophidden_anim</item>       <!-- 指定消失的动画xml  -->
<item name="android:windowBackground">@color/vifrification</item><!--背景透明-->

 </style>

上面的动画效果布局文件就不说了吧,很简单

 

handler.sendEmptyMessage(100); 是显示 两个按钮的动画效果,如下代码:

b.setAnimation(AnimationUtil.getLeftInAnimation(getApplicationContext()));
c.setAnimation(AnimationUtil.getRightInAnimation(getApplicationContext()));

得到 Animation 的代码就不贴了,很简单的。网上一搜一坨一坨的。

 

好,到这里 ,popupwindow 和其中的两个按钮 动画就搞定了,下面来说 让他们 消失掉的动画。在 按钮的点击事件里

				@Override
				public void onClick(View v) {
					// TODO Auto-generated method stub
					Toast.makeText(getApplicationContext(), "click", Toast.LENGTH_LONG).show();
					Animation a = AnimationUtil.getLeftOutAnimation(getApplicationContext());
					b.setAnimation(a);
					a.setAnimationListener(new Animation.AnimationListener() {
						
						@Override
						public void onAnimationStart(Animation animation) {
							// TODO Auto-generated method stub
						}
						
						@Override
						public void onAnimationRepeat(Animation animation) {
							// TODO Auto-generated method stub
							
						}
						
						@Override
						public void onAnimationEnd(Animation animation) {
							// TODO Auto-generated method stub
							p.dismiss();
						}
					});
					c.setAnimation(AnimationUtil.getRightOutAnimation(getApplicationContext()));
				}

这里说一下,当 dismiss的时候调用 popupwindow 的退出动画,而当 dismiss ,两个按钮的动画效果就没了 ,到这里 我需要实现的效果就完全好了,有需要深挖掘的童鞋可以继续看看,有时间了,我在搞搞。


 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值