android动画 底部弹窗 效果

先上效果:

164233_XfoZ_147993.png

两个动画文件:

footer_appear.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:interpolator="@android:anim/decelerate_interpolator"
        android:fromYDelta="+12%p"
        android:toYDelta="0"
        android:duration="300" />
</set>

footer_disappear.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:interpolator="@android:anim/decelerate_interpolator"
        android:fromYDelta="0"
        android:toYDelta="+12%p"
        android:duration="300" />
</set>

其中translate表示移动动画;android:fromYDelta表示Y轴从哪里开始,android:toYDelta表示Y轴从哪里结束,这里可以使用百分比,也可以使用数值;duration表示动画从哪里到哪里的持续时间


布局文件activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  >
    <Button 
        android:id="@+id/click"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="点击"
        />
    <LinearLayout
        android:layout_width="fill_parent"
  		android:layout_height="wrap_content"
  		android:visibility="gone"
  		android:orientation="horizontal"
  		android:paddingTop="5dp"
  		android:paddingLeft="4dp"
  		android:paddingRight="1dp"
  		android:background="@android:drawable/bottom_bar"
  		android:layout_alignParentBottom="true"
  		android:id="@+id/selection_menu"
        >
		<Button 
		    android:id="@+id/selection_delete"
		    android:layout_width="0dp"
		    android:layout_height="fill_parent"
		    android:layout_weight="1"
		    android:text="删除"
		    />
		<Button 
		    android:id="@+id/deselect_all"
		    android:layout_width="0dp"
		    android:layout_height="fill_parent"
		    android:layout_weight="1"
		    android:text="撤销"
		    />
	</LinearLayout>
</RelativeLayout>

为了演示方便,text文字就直接写在布局文件中了。


主文件中最重要的一段

if(View.GONE == mSelectionMenuView.getVisibility()){
				
				mSelectionMenuView.setVisibility(View.VISIBLE);
				
				mSelectionMenuView.startAnimation(
						AnimationUtils.loadAnimation(this, R.anim.footer_appear));
			} else {
				
				mSelectionMenuView.setVisibility(View.GONE);
				
				mSelectionMenuView.startAnimation(
						AnimationUtils.loadAnimation(this, R.anim.footer_disappear));
			}

其他就是初始化之类的,这一段放在onClick方法中,判断一下如果button id是上面那一个点击按钮,就执行。


X方向上的移动

出现:

android:fromXDelta="-100%p"
android:toXDelta="0"

消失:

android:fromXDelta="0"
android:toXDelta="+100%p"

部分原理可以参考:http://www.oschina.net/question/97118_34343


也可以试试Y方向上的

出现:

android:fromYDelta="-100%p"
android:toYDelta="0"

消失:

android:fromYDelta="0"
android:toYDelta="+100%p"

很有意思。


动画非常重要的一点就是:它只是实现既定布局的效果。比如说移动效果,只是看起来从某一个地方移动到另外一个地方

其实在代码中只是现实和隐藏组件,加了点动画。


功能从断点下载开源项目com.mozillaonline.downloadprovider移植,算是转帖吧。




转载于:https://my.oschina.net/zjchase/blog/220731

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值