android动画 底部弹窗 效果
16lz
2021-01-25
先上效果:
两个动画文件:
footer_appear.xml
<setxmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:interpolator="@android:anim/decelerate_interpolator"android:fromYDelta="+12%p"android:toYDelta="0"android:duration="300"/></set>
footer_disappear.xml
<setxmlns:android="http://schemas.android.com/apk/res/android"><translateandroid: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
<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><Buttonandroid:id="@+id/click"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="点击"/><LinearLayoutandroid: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"><Buttonandroid:id="@+id/selection_delete"android:layout_width="0dp"android:layout_height="fill_parent"android:layout_weight="1"android:text="删除"/><Buttonandroid: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移植,算是转帖吧。
更多相关文章
- Android(安卓)使用setContentView来实现Acitivity的跳转
- 知识点整理(三)易错记录
- 高德地图-地图中心固定Marker,Marker跳跃、掉落、生长动画
- android布局页面中引入另一个布局页面
- Android(安卓)NotePad的简单实现
- PianoView-添加一行代码使用[最美应用]的酷炫控件!
- android所有需要的Demo地址
- 学习Android闹钟源代码(三)-AlarmClock类分析(part2)
- Android(安卓)动画AlphaAnimation类方法