I created a Compound view that has several buttons and that animates like Drawer. I created an xml file and inflated it in a class. the difference between your and my code is bloating.
here is my code for this.
public class ViewDashboard extends LinearLayout { private Button openCloseButton; private Button mBtnViewMyLoction, mBtnViewPhotos, mBtnViewFreeStuff, mBtnViewHotspot, mBtnViewMyTeams, mBtnViewLeaderboard, mBtnViewLiveAction, mBtnViewHome, mBtnViewAppStats; private Context mContext; private boolean isVisible = false; private RelativeLayout relLayTwo; private int h; public ViewDashboard(Context context , AttributeSet attr) { super(context , attr); mContext = context; DisplayMetrics metric = new DisplayMetrics(); ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(metric); h = metric.heightPixels; View.inflate(context, R.layout.dashboard_drawer, this); relLayTwo = (RelativeLayout) findViewById(R.id.relLayTwo); openCloseButton = (Button) findViewById(R.id.btnDashboard); mBtnViewPhotos = (Button) findViewById(R.id.btnDrawerPhotos); mBtnViewFreeStuff = (Button) findViewById(R.id.btnDrawerFreeStuff); mBtnViewLeaderboard = (Button) findViewById(R.id.btnDrawerLeaderboard); mBtnViewLiveAction = (Button) findViewById(R.id.btnDrawerLiveAction); mBtnViewHome = (Button) findViewById(R.id.btnDrawerHome); mBtnViewAppStats = (Button) findViewById(R.id.btnDrawerAppStats); mBtnViewHotspot = (Button) findViewById(R.id.btnDrawerHotspot); mBtnViewMyTeams = (Button) findViewById(R.id.btnDrawerMyTeams); View line = findViewById(R.id.line); RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) relLayTwo.getLayoutParams(); Log.d("test", "height "+params.height); params.height = h*40/100; relLayTwo.setLayoutParams(params); relLayTwo.setVisibility(View.GONE); RelativeLayout.LayoutParams paramsLine = (RelativeLayout.LayoutParams) line.getLayoutParams(); paramsLine.height = h*80/100; openCloseButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub LogMsg.d("USerID "+new UserID(mContext).getUserID()); if ( new UserID(mContext).getUserID().equals("")){ ToastMsg.showToast(mContext, "Please Login First"); }else{ toggle(); } } }); /* mBtnViewMyLoction.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub toggle(); mContext.startActivity(new Intent(mContext, ActivityMyLocation.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP).setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)); } });*/ mBtnViewHotspot.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub toggle(); //mContext.startActivity(new Intent(mContext, ActivityHotspots.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP).setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)); mContext.startActivity(new Intent(mContext, ActivityHotspots.class)); } }); mBtnViewMyTeams.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub toggle(); //mContext.startActivity(new Intent(mContext, ActivityMyTeams.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP).setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)); mContext.startActivity(new Intent(mContext, ActivityMyTeams.class)); } }); mBtnViewFreeStuff.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub toggle(); //ToastMsg.showToast(mContext, "Not Available"); //mContext.startActivity(new Intent(mContext, ActivityFreeStuff.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP).setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)); mContext.startActivity(new Intent(mContext, ActivityFreeStuff.class)); } }); mBtnViewAppStats.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub toggle(); //mContext.startActivity(new Intent(mContext, ActivityAppStats.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP).setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)); mContext.startActivity(new Intent(mContext, ActivityAppStats.class)); } }); mBtnViewPhotos.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub toggle(); //mContext.startActivity(new Intent(mContext, ActivityPhotos.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP).setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)); mContext.startActivity(new Intent(mContext, ActivityPhotos.class)); } }); mBtnViewHome.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub toggle(); mContext.startActivity(new Intent(mContext, ActivityHome.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); } }); mBtnViewLeaderboard.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub toggle(); //mContext.startActivity(new Intent(mContext, ActivityLeaderborad.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP).setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)); mContext.startActivity(new Intent(mContext, ActivityLeaderborad.class)); } }); mBtnViewLiveAction.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub toggle(); //mContext.startActivity(new Intent(mContext, ActivityLiveAction.class).setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP).setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)); mContext.startActivity(new Intent(mContext, ActivityLiveAction.class)); } }); } public void toggle() { TranslateAnimation anim = null; isVisible = !isVisible; if (isVisible) { relLayTwo.setVisibility(View.VISIBLE); anim = new TranslateAnimation(0.0f, 0.0f, h*40/100, 0.0f); LogMsg.d(" rel Height "+relLayTwo.getHeight()); } else { anim = new TranslateAnimation(0.0f, 0.0f, 0.0f, relLayTwo.getHeight()); anim.setAnimationListener(collapseListener); } anim.setDuration(300); anim.setInterpolator(new AccelerateInterpolator(1.0f)); startAnimation(anim); } Animation.AnimationListener collapseListener = new Animation.AnimationListener() { public void onAnimationEnd(Animation animation) { relLayTwo.setVisibility(View.GONE); } public void onAnimationRepeat(Animation animation) { // not needed } public void onAnimationStart(Animation animation) { // not needed } }; }
source share