QQ5.0出来时就对其中的一个特效十分的好奇,就是一个类似SlidingMenu的可伸缩菜单,于是就上网搜了一下这个效果,果然在github上已经有大神模仿这个效果了,整个开源项目使用起来还是十分简单易掌握的,下面来看一下效果图,这是正常状态下的首页:
这是弹出伸缩菜单的效果:
虽然还不像QQ的那个功能强大,但是已经非常的不错了.下面贴出Demo代码:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import com.special.ResideMenu.ResideMenu;
import com.special.ResideMenu.ResideMenuItem;
public class MyResideMenuActivity extends FragmentActivity implements
OnClickListener {
private ResideMenu resideMenu;
private MyResideMenuActivity mContext;
private ResideMenuItem itemHome;
@Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
setContentView(R.layout.main);
mContext = this;
setUpMenu();
changeFragment(new HomeFragment());
}
private void changeFragment(Fragment fragment) {
// TODO Auto-generated method stub
resideMenu.clearIgnoredViewList();
getSupportFragmentManager().beginTransaction()
.replace(R.id.main_fragment, fragment, "fragment")
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commit();
}
//初始化ResideMenu
private void setUpMenu() {
resideMenu = new ResideMenu(this);
resideMenu.setBackground(R.drawable.menu_background);
// 将 ResideMenu绑定到Activity上去
resideMenu.attachToActivity(this);
//设置缩放比例
resideMenu.setScaleValue(0.6f);
//设置为右侧菜单
resideMenu.setSwipeDirectionDisable(ResideMenu.DIRECTION_RIGHT);
itemHome = new ResideMenuItem(this);
resideMenu.addMenuItem(itemHome, ResideMenu.DIRECTION_LEFT);
itemHome.setOnClickListener(this);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
return resideMenu.dispatchTouchEvent(ev);
}
/**
* item点击事件处理
*/
@Override
public void onClick(View v) {
if (v == itemHome) {
changeFragment(new HomeFragment());
}
resideMenu.closeMenu();
}
// What good method is to access resideMenu锛�
public ResideMenu getResideMenu() {
return resideMenu;
}
}
整个项目的使用是非常简单的,项目源码还是很值得去深入学习的...