首先看看效果
实现该效果,我们想要的是
1. 布局自定义,修改简单
2.代码简单,容易控制,学习成本低
OK,以上2个条件都满足。
来看如何实现。首先这种操作是用了动画效果,动画文件需要2个,第一个显示,第二个隐藏。全部放在res/anim 目录下
首先看进入代码
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromYDelta="-100%" android:fillAfter="true" android:toYDelta="0%" /> </set>
注意我写的是对应的方框的底部来说的,注意是0% 而不是100% 这里面也是因为布局的时候,要弹出,显示的UI是 0%的状态。
来看缩回的代码
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="300" android:fromYDelta="0%" android:fillAfter="true" android:toYDelta="-100%" /> </set>
OK,你如果真的明白以上我表达的意思,那接下来的代码不看也罢,就是简单的View.setAnimation() 而已了
全部贴出来吧
首先布局文件,注意一定把该布局设置为 android:visiability="gone" 这样用户不会点击到
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- 弹出/缩回的布局 --> <RelativeLayout android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="200dip" android:background="#00ff00" android:layout_below="@+id/top" android:visibility="gone" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:src="@drawable/a"/> </RelativeLayout> <!-- title --> <RelativeLayout android:id="@+id/top" android:layout_width="fill_parent" android:layout_height="100dip" android:background="#000000"> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="下垃菜单"/> </RelativeLayout>
/** * * 仿网易下拉菜单 * * @author Lq */ public class PullAndUpMenuActivity extends Activity{ private Button mBtn; private RelativeLayout mLayout; private boolean isShow =false; private Animation animEnter = null; private Animation animExit = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu); mBtn = (Button) findViewById(R.id.btn); mBtn.setOnClickListener(onMenuClickListener); mLayout = (RelativeLayout) findViewById(R.id.layout); animEnter = AnimationUtils.loadAnimation(this, R.anim.vertical_enter); animExit = AnimationUtils.loadAnimation(this, R.anim.vertical_exit); } OnClickListener onMenuClickListener = new OnClickListener() { @Override public void onClick(View v) { if(!isShow){ performAnimateOn(); }else{ performAnimateOff(); } } }; private void performAnimateOn() { mLayout.setAnimation(animEnter); animEnter.start(); mLayout.setVisibility(View.VISIBLE); isShow = true; } private void performAnimateOff() { mLayout.setAnimation(animExit); animExit.start(); mLayout.setVisibility(View.GONE); isShow = false; } }
接下来说说UC的吧,来看看图。
好了,如果你看懂了,那么你就会了。